; LLVM IR from achilles288/robot-monitor-graphics :: src/base/object3d_obj.ll (ZN3rmg8Object3D7loadOBJEPKcb)

; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl" }
%"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl" = type { %"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl_data" }
%"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl" }
%"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl" = type { %"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl_data" }
%"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.rmg::Vec3" = type { %union.anon }
%union.anon = type { %struct.anon }
%struct.anon = type { float, float, float }
%"struct.rmg::Vec2" = type { %union.anon.5 }
%union.anon.5 = type { %struct.anon.6 }
%struct.anon.6 = type { float, float }
%"class.rmg::Mesh" = type <{ ptr, ptr, ptr, ptr, i32, [4 x i8], ptr, i32, [4 x i8] }>

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3rmg8Object3D7loadOBJEPKcb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef %1, i1 noundef zeroext %2) #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector.0", align 8
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca %"class.std::vector.0", align 8
  %15 = alloca i8, align 1
  %16 = alloca [128 x i8], align 16
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %"struct.rmg::Vec3", align 4
  %21 = alloca i32, align 4
  %22 = alloca %"struct.rmg::Vec3", align 4
  %23 = alloca %"struct.rmg::Vec2", align 4
  %24 = alloca [3 x i32], align 4
  %25 = alloca [3 x i32], align 4
  %26 = alloca [3 x i32], align 4
  %27 = alloca i32, align 4
  %28 = alloca [3 x i32], align 4
  %29 = alloca [3 x i32], align 4
  %30 = alloca i32, align 4
  %31 = alloca [3 x i32], align 4
  %32 = alloca [3 x i32], align 4
  %33 = alloca i32, align 4
  %34 = alloca [3 x i32], align 4
  %35 = alloca i32, align 4
  %36 = alloca %"class.rmg::Mesh", align 8
  %37 = alloca %"class.rmg::Mesh", align 8
  %38 = alloca %"class.rmg::Mesh", align 8
  %39 = alloca %"class.rmg::Mesh", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %40 = zext i1 %2 to i8
  store i8 %40, ptr %6, align 1, !tbaa !9
  %41 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = call noalias ptr @fopen(ptr noundef %42, ptr noundef @.str)
  store ptr %43, ptr %7, align 8, !tbaa !5
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = icmp eq ptr %44, null
  br i1 %45, label %46, label %49

46:                                               ; preds = %3
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %47)
  store i32 1, ptr %8, align 4
  br label %665

49:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  store i8 0, ptr %15, align 1, !tbaa !9
  br label %50

50:                                               ; preds = %566, %49
  br label %51

51:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 128, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %54 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %52, ptr noundef @.str.2, ptr noundef %53)
          to label %55 unwind label %59

55:                                               ; preds = %51
  store i32 %54, ptr %17, align 4, !tbaa !11
  %56 = load i32, ptr %17, align 4, !tbaa !11
  %57 = icmp eq i32 %56, -1
  br i1 %57, label %58, label %63

58:                                               ; preds = %55
  store i32 3, ptr %8, align 4
  br label %564

59:                                               ; preds = %556, %141, %139, %137, %51
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %18, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %19, align 4
  br label %567

63:                                               ; preds = %55
  %64 = load i8, ptr %15, align 1, !tbaa !9, !range !13, !noundef !14
  %65 = trunc i8 %64 to i1
  br i1 %65, label %148, label %66

66:                                               ; preds = %63
  %67 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %68 = call i32 @strcmp(ptr noundef %67, ptr noundef @.str.3) #9
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %70, label %95

70:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #8
  invoke void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %20)
          to label %71 unwind label %84

71:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %20, i8 noundef zeroext 0)
          to label %74 unwind label %88

74:                                               ; preds = %71
  %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %20, i8 noundef zeroext 1)
          to label %76 unwind label %88

76:                                               ; preds = %74
  %77 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %20, i8 noundef zeroext 2)
          to label %78 unwind label %88

78:                                               ; preds = %76
  %79 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %72, ptr noundef @.str.4, ptr noundef %73, ptr noundef %75, ptr noundef %77)
          to label %80 unwind label %88

80:                                               ; preds = %78
  store i32 %79, ptr %21, align 4, !tbaa !11
  %81 = load i32, ptr %21, align 4, !tbaa !11
  %82 = icmp ne i32 %81, 3
  br i1 %82, label %83, label %92

83:                                               ; preds = %80
  br label %92

84:                                               ; preds = %70
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %18, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %19, align 4
  br label %94

88:                                               ; preds = %92, %78, %76, %74, %71
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %18, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %94

92:                                               ; preds = %83, %80
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 4 dereferenceable(12) %20)
          to label %93 unwind label %88

93:                                               ; preds = %92
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #8
  br label %147

94:                                               ; preds = %88, %84
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #8
  br label %567

95:                                               ; preds = %66
  %96 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %97 = call i32 @strcmp(ptr noundef %96, ptr noundef @.str.5) #9
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %115

99:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 12, ptr %22) #8
  invoke void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %22)
          to label %100 unwind label %111

100:                                              ; preds = %99
  %101 = load ptr, ptr %7, align 8, !tbaa !5
  %102 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %22, i8 noundef zeroext 0)
          to label %103 unwind label %111

103:                                              ; preds = %100
  %104 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %22, i8 noundef zeroext 1)
          to label %105 unwind label %111

105:                                              ; preds = %103
  %106 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %22, i8 noundef zeroext 2)
          to label %107 unwind label %111

107:                                              ; preds = %105
  %108 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %101, ptr noundef @.str.4, ptr noundef %102, ptr noundef %104, ptr noundef %106)
          to label %109 unwind label %111

109:                                              ; preds = %107
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 4 dereferenceable(12) %22)
          to label %110 unwind label %111

110:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #8
  br label %146

111:                                              ; preds = %109, %107, %105, %103, %100, %99
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %18, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #8
  br label %567

115:                                              ; preds = %95
  %116 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %117 = call i32 @strcmp(ptr noundef %116, ptr noundef @.str.6) #9
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %133

119:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  invoke void @_ZN3rmg4Vec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %23)
          to label %120 unwind label %129

120:                                              ; preds = %119
  %121 = load ptr, ptr %7, align 8, !tbaa !5
  %122 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8) %23, i8 noundef zeroext 0)
          to label %123 unwind label %129

123:                                              ; preds = %120
  %124 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8) %23, i8 noundef zeroext 1)
          to label %125 unwind label %129

125:                                              ; preds = %123
  %126 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %121, ptr noundef @.str.7, ptr noundef %122, ptr noundef %124)
          to label %127 unwind label %129

127:                                              ; preds = %125
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(8) %23)
          to label %128 unwind label %129

128:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %145

129:                                              ; preds = %127, %125, %123, %120, %119
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %18, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %567

133:                                              ; preds = %115
  %134 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %135 = call i32 @strcmp(ptr noundef %134, ptr noundef @.str.8) #9
  %136 = icmp eq i32 %135, 0
  br i1 %136, label %137, label %144

137:                                              ; preds = %133
  store i8 1, ptr %15, align 1, !tbaa !9
  %138 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %138)
          to label %139 unwind label %59

139:                                              ; preds = %137
  %140 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %140)
          to label %141 unwind label %59

141:                                              ; preds = %139
  %142 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %142)
          to label %143 unwind label %59

143:                                              ; preds = %141
  br label %144

144:                                              ; preds = %143, %133
  br label %145

145:                                              ; preds = %144, %128
  br label %146

146:                                              ; preds = %145, %110
  br label %147

147:                                              ; preds = %146, %93
  br label %148

148:                                              ; preds = %147, %63
  %149 = getelementptr inbounds [128 x i8], ptr %16, i64 0, i64 0
  %150 = call i32 @strcmp(ptr noundef %149, ptr noundef @.str.8) #9
  %151 = icmp eq i32 %150, 0
  br i1 %151, label %152, label %563

152:                                              ; preds = %148
  %153 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %154 = icmp ugt i64 %153, 0
  br i1 %154, label %155, label %295

155:                                              ; preds = %152
  %156 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %157 = icmp ugt i64 %156, 0
  br i1 %157, label %158, label %295

158:                                              ; preds = %155
  %159 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %160 = icmp ugt i64 %159, 0
  br i1 %160, label %161, label %295

161:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 12, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 0
  %164 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 0
  %165 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 0
  %166 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 1
  %167 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 1
  %168 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 1
  %169 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 2
  %170 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 2
  %171 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 2
  %172 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %162, ptr noundef @.str.9, ptr noundef %163, ptr noundef %164, ptr noundef %165, ptr noundef %166, ptr noundef %167, ptr noundef %168, ptr noundef %169, ptr noundef %170, ptr noundef %171)
          to label %173 unwind label %179

173:                                              ; preds = %161
  store i32 %172, ptr %27, align 4, !tbaa !11
  %174 = load i32, ptr %27, align 4, !tbaa !11
  %175 = icmp ne i32 %174, 9
  br i1 %175, label %176, label %183

176:                                              ; preds = %173
  %177 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %177)
          to label %178 unwind label %179

178:                                              ; preds = %176
  store i32 1, ptr %8, align 4
  br label %292

179:                                              ; preds = %285, %279, %273, %270, %268, %260, %255, %249, %243, %237, %234, %232, %224, %219, %213, %207, %201, %198, %196, %188, %183, %176, %161
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %18, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %24) #8
  br label %567

183:                                              ; preds = %173
  %184 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 0
  %185 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 1
  %186 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 2
  %187 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %185, ptr noundef nonnull align 4 dereferenceable(4) %186)
          to label %188 unwind label %179

188:                                              ; preds = %183
  %189 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %184, ptr noundef nonnull align 4 dereferenceable(4) %187)
          to label %190 unwind label %179

190:                                              ; preds = %188
  %191 = load i32, ptr %189, align 4, !tbaa !11
  %192 = sub i32 %191, 1
  %193 = zext i32 %192 to i64
  %194 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %195 = icmp uge i64 %193, %194
  br i1 %195, label %196, label %201

196:                                              ; preds = %190
  %197 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %198 unwind label %179

198:                                              ; preds = %196
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %199)
          to label %200 unwind label %179

200:                                              ; preds = %198
  store i32 1, ptr %8, align 4
  br label %292

201:                                              ; preds = %190
  %202 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 0
  %203 = load i32, ptr %202, align 4, !tbaa !11
  %204 = sub i32 %203, 1
  %205 = zext i32 %204 to i64
  %206 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %205) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %206)
          to label %207 unwind label %179

207:                                              ; preds = %201
  %208 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 1
  %209 = load i32, ptr %208, align 4, !tbaa !11
  %210 = sub i32 %209, 1
  %211 = zext i32 %210 to i64
  %212 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %211) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %212)
          to label %213 unwind label %179

213:                                              ; preds = %207
  %214 = getelementptr inbounds [3 x i32], ptr %24, i64 0, i64 2
  %215 = load i32, ptr %214, align 4, !tbaa !11
  %216 = sub i32 %215, 1
  %217 = zext i32 %216 to i64
  %218 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %217) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %218)
          to label %219 unwind label %179

219:                                              ; preds = %213
  %220 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 0
  %221 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 1
  %222 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 2
  %223 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %221, ptr noundef nonnull align 4 dereferenceable(4) %222)
          to label %224 unwind label %179

224:                                              ; preds = %219
  %225 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %220, ptr noundef nonnull align 4 dereferenceable(4) %223)
          to label %226 unwind label %179

226:                                              ; preds = %224
  %227 = load i32, ptr %225, align 4, !tbaa !11
  %228 = sub i32 %227, 1
  %229 = zext i32 %228 to i64
  %230 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %231 = icmp uge i64 %229, %230
  br i1 %231, label %232, label %237

232:                                              ; preds = %226
  %233 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %234 unwind label %179

234:                                              ; preds = %232
  %235 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %235)
          to label %236 unwind label %179

236:                                              ; preds = %234
  store i32 1, ptr %8, align 4
  br label %292

237:                                              ; preds = %226
  %238 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 0
  %239 = load i32, ptr %238, align 4, !tbaa !11
  %240 = sub i32 %239, 1
  %241 = zext i32 %240 to i64
  %242 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %241) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %242)
          to label %243 unwind label %179

243:                                              ; preds = %237
  %244 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 1
  %245 = load i32, ptr %244, align 4, !tbaa !11
  %246 = sub i32 %245, 1
  %247 = zext i32 %246 to i64
  %248 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %247) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %248)
          to label %249 unwind label %179

249:                                              ; preds = %243
  %250 = getelementptr inbounds [3 x i32], ptr %26, i64 0, i64 2
  %251 = load i32, ptr %250, align 4, !tbaa !11
  %252 = sub i32 %251, 1
  %253 = zext i32 %252 to i64
  %254 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %253) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %254)
          to label %255 unwind label %179

255:                                              ; preds = %249
  %256 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 0
  %257 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 1
  %258 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 2
  %259 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %257, ptr noundef nonnull align 4 dereferenceable(4) %258)
          to label %260 unwind label %179

260:                                              ; preds = %255
  %261 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %256, ptr noundef nonnull align 4 dereferenceable(4) %259)
          to label %262 unwind label %179

262:                                              ; preds = %260
  %263 = load i32, ptr %261, align 4, !tbaa !11
  %264 = sub i32 %263, 1
  %265 = zext i32 %264 to i64
  %266 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %267 = icmp uge i64 %265, %266
  br i1 %267, label %268, label %273

268:                                              ; preds = %262
  %269 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %270 unwind label %179

270:                                              ; preds = %268
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %271)
          to label %272 unwind label %179

272:                                              ; preds = %270
  store i32 1, ptr %8, align 4
  br label %292

273:                                              ; preds = %262
  %274 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 0
  %275 = load i32, ptr %274, align 4, !tbaa !11
  %276 = sub i32 %275, 1
  %277 = zext i32 %276 to i64
  %278 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %277) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %278)
          to label %279 unwind label %179

279:                                              ; preds = %273
  %280 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 1
  %281 = load i32, ptr %280, align 4, !tbaa !11
  %282 = sub i32 %281, 1
  %283 = zext i32 %282 to i64
  %284 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %283) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %284)
          to label %285 unwind label %179

285:                                              ; preds = %279
  %286 = getelementptr inbounds [3 x i32], ptr %25, i64 0, i64 2
  %287 = load i32, ptr %286, align 4, !tbaa !11
  %288 = sub i32 %287, 1
  %289 = zext i32 %288 to i64
  %290 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %289) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %290)
          to label %291 unwind label %179

291:                                              ; preds = %285
  store i32 0, ptr %8, align 4
  br label %292

292:                                              ; preds = %291, %272, %236, %200, %178
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %24) #8
  %293 = load i32, ptr %8, align 4
  switch i32 %293, label %564 [
    i32 0, label %294
  ]

294:                                              ; preds = %292
  br label %562

295:                                              ; preds = %158, %155, %152
  %296 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %297 = icmp ugt i64 %296, 0
  br i1 %297, label %298, label %396

298:                                              ; preds = %295
  %299 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %300 = icmp ugt i64 %299, 0
  br i1 %300, label %301, label %396

301:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 12, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  %303 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 0
  %304 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 0
  %305 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 1
  %306 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 1
  %307 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 2
  %308 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 2
  %309 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %302, ptr noundef @.str.11, ptr noundef %303, ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef %307, ptr noundef %308)
          to label %310 unwind label %316

310:                                              ; preds = %301
  store i32 %309, ptr %30, align 4, !tbaa !11
  %311 = load i32, ptr %30, align 4, !tbaa !11
  %312 = icmp ne i32 %311, 6
  br i1 %312, label %313, label %320

313:                                              ; preds = %310
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %314)
          to label %315 unwind label %316

315:                                              ; preds = %313
  store i32 1, ptr %8, align 4
  br label %393

316:                                              ; preds = %386, %380, %374, %371, %369, %361, %356, %350, %344, %338, %335, %333, %325, %320, %313, %301
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %18, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #8
  br label %567

320:                                              ; preds = %310
  %321 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 0
  %322 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 1
  %323 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 2
  %324 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %322, ptr noundef nonnull align 4 dereferenceable(4) %323)
          to label %325 unwind label %316

325:                                              ; preds = %320
  %326 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %321, ptr noundef nonnull align 4 dereferenceable(4) %324)
          to label %327 unwind label %316

327:                                              ; preds = %325
  %328 = load i32, ptr %326, align 4, !tbaa !11
  %329 = sub i32 %328, 1
  %330 = zext i32 %329 to i64
  %331 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %332 = icmp uge i64 %330, %331
  br i1 %332, label %333, label %338

333:                                              ; preds = %327
  %334 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %335 unwind label %316

335:                                              ; preds = %333
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %336)
          to label %337 unwind label %316

337:                                              ; preds = %335
  store i32 1, ptr %8, align 4
  br label %393

338:                                              ; preds = %327
  %339 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 0
  %340 = load i32, ptr %339, align 4, !tbaa !11
  %341 = sub i32 %340, 1
  %342 = zext i32 %341 to i64
  %343 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %342) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %343)
          to label %344 unwind label %316

344:                                              ; preds = %338
  %345 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 1
  %346 = load i32, ptr %345, align 4, !tbaa !11
  %347 = sub i32 %346, 1
  %348 = zext i32 %347 to i64
  %349 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %348) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %349)
          to label %350 unwind label %316

350:                                              ; preds = %344
  %351 = getelementptr inbounds [3 x i32], ptr %28, i64 0, i64 2
  %352 = load i32, ptr %351, align 4, !tbaa !11
  %353 = sub i32 %352, 1
  %354 = zext i32 %353 to i64
  %355 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %354) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %355)
          to label %356 unwind label %316

356:                                              ; preds = %350
  %357 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 0
  %358 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 1
  %359 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 2
  %360 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %358, ptr noundef nonnull align 4 dereferenceable(4) %359)
          to label %361 unwind label %316

361:                                              ; preds = %356
  %362 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %357, ptr noundef nonnull align 4 dereferenceable(4) %360)
          to label %363 unwind label %316

363:                                              ; preds = %361
  %364 = load i32, ptr %362, align 4, !tbaa !11
  %365 = sub i32 %364, 1
  %366 = zext i32 %365 to i64
  %367 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  %368 = icmp uge i64 %366, %367
  br i1 %368, label %369, label %374

369:                                              ; preds = %363
  %370 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %371 unwind label %316

371:                                              ; preds = %369
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %372)
          to label %373 unwind label %316

373:                                              ; preds = %371
  store i32 1, ptr %8, align 4
  br label %393

374:                                              ; preds = %363
  %375 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 0
  %376 = load i32, ptr %375, align 4, !tbaa !11
  %377 = sub i32 %376, 1
  %378 = zext i32 %377 to i64
  %379 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %378) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %379)
          to label %380 unwind label %316

380:                                              ; preds = %374
  %381 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 1
  %382 = load i32, ptr %381, align 4, !tbaa !11
  %383 = sub i32 %382, 1
  %384 = zext i32 %383 to i64
  %385 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %384) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %385)
          to label %386 unwind label %316

386:                                              ; preds = %380
  %387 = getelementptr inbounds [3 x i32], ptr %29, i64 0, i64 2
  %388 = load i32, ptr %387, align 4, !tbaa !11
  %389 = sub i32 %388, 1
  %390 = zext i32 %389 to i64
  %391 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %390) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(12) %391)
          to label %392 unwind label %316

392:                                              ; preds = %386
  store i32 0, ptr %8, align 4
  br label %393

393:                                              ; preds = %392, %373, %337, %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #8
  %394 = load i32, ptr %8, align 4
  switch i32 %394, label %564 [
    i32 0, label %395
  ]

395:                                              ; preds = %393
  br label %561

396:                                              ; preds = %298, %295
  %397 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %398 = icmp ugt i64 %397, 0
  br i1 %398, label %399, label %497

399:                                              ; preds = %396
  %400 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %401 = icmp ugt i64 %400, 0
  br i1 %401, label %402, label %497

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %403 = load ptr, ptr %7, align 8, !tbaa !5
  %404 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 0
  %405 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 0
  %406 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 1
  %407 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 1
  %408 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 2
  %409 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 2
  %410 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %403, ptr noundef @.str.12, ptr noundef %404, ptr noundef %405, ptr noundef %406, ptr noundef %407, ptr noundef %408, ptr noundef %409)
          to label %411 unwind label %417

411:                                              ; preds = %402
  store i32 %410, ptr %33, align 4, !tbaa !11
  %412 = load i32, ptr %33, align 4, !tbaa !11
  %413 = icmp ne i32 %412, 6
  br i1 %413, label %414, label %421

414:                                              ; preds = %411
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %415)
          to label %416 unwind label %417

416:                                              ; preds = %414
  store i32 1, ptr %8, align 4
  br label %494

417:                                              ; preds = %487, %481, %475, %472, %470, %462, %457, %451, %445, %439, %436, %434, %426, %421, %414, %402
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %18, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #8
  br label %567

421:                                              ; preds = %411
  %422 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 0
  %423 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 1
  %424 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 2
  %425 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %423, ptr noundef nonnull align 4 dereferenceable(4) %424)
          to label %426 unwind label %417

426:                                              ; preds = %421
  %427 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %422, ptr noundef nonnull align 4 dereferenceable(4) %425)
          to label %428 unwind label %417

428:                                              ; preds = %426
  %429 = load i32, ptr %427, align 4, !tbaa !11
  %430 = sub i32 %429, 1
  %431 = zext i32 %430 to i64
  %432 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %433 = icmp uge i64 %431, %432
  br i1 %433, label %434, label %439

434:                                              ; preds = %428
  %435 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %436 unwind label %417

436:                                              ; preds = %434
  %437 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %437)
          to label %438 unwind label %417

438:                                              ; preds = %436
  store i32 1, ptr %8, align 4
  br label %494

439:                                              ; preds = %428
  %440 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 0
  %441 = load i32, ptr %440, align 4, !tbaa !11
  %442 = sub i32 %441, 1
  %443 = zext i32 %442 to i64
  %444 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %443) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %444)
          to label %445 unwind label %417

445:                                              ; preds = %439
  %446 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 1
  %447 = load i32, ptr %446, align 4, !tbaa !11
  %448 = sub i32 %447, 1
  %449 = zext i32 %448 to i64
  %450 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %449) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %450)
          to label %451 unwind label %417

451:                                              ; preds = %445
  %452 = getelementptr inbounds [3 x i32], ptr %31, i64 0, i64 2
  %453 = load i32, ptr %452, align 4, !tbaa !11
  %454 = sub i32 %453, 1
  %455 = zext i32 %454 to i64
  %456 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %455) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %456)
          to label %457 unwind label %417

457:                                              ; preds = %451
  %458 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 0
  %459 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 1
  %460 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 2
  %461 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %459, ptr noundef nonnull align 4 dereferenceable(4) %460)
          to label %462 unwind label %417

462:                                              ; preds = %457
  %463 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %458, ptr noundef nonnull align 4 dereferenceable(4) %461)
          to label %464 unwind label %417

464:                                              ; preds = %462
  %465 = load i32, ptr %463, align 4, !tbaa !11
  %466 = sub i32 %465, 1
  %467 = zext i32 %466 to i64
  %468 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  %469 = icmp uge i64 %467, %468
  br i1 %469, label %470, label %475

470:                                              ; preds = %464
  %471 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %472 unwind label %417

472:                                              ; preds = %470
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %473)
          to label %474 unwind label %417

474:                                              ; preds = %472
  store i32 1, ptr %8, align 4
  br label %494

475:                                              ; preds = %464
  %476 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 0
  %477 = load i32, ptr %476, align 4, !tbaa !11
  %478 = sub i32 %477, 1
  %479 = zext i32 %478 to i64
  %480 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %479) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %480)
          to label %481 unwind label %417

481:                                              ; preds = %475
  %482 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 1
  %483 = load i32, ptr %482, align 4, !tbaa !11
  %484 = sub i32 %483, 1
  %485 = zext i32 %484 to i64
  %486 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %485) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %486)
          to label %487 unwind label %417

487:                                              ; preds = %481
  %488 = getelementptr inbounds [3 x i32], ptr %32, i64 0, i64 2
  %489 = load i32, ptr %488, align 4, !tbaa !11
  %490 = sub i32 %489, 1
  %491 = zext i32 %490 to i64
  %492 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %491) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(8) %492)
          to label %493 unwind label %417

493:                                              ; preds = %487
  store i32 0, ptr %8, align 4
  br label %494

494:                                              ; preds = %493, %474, %438, %416
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #8
  %495 = load i32, ptr %8, align 4
  switch i32 %495, label %564 [
    i32 0, label %496
  ]

496:                                              ; preds = %494
  br label %560

497:                                              ; preds = %399, %396
  %498 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %499 = icmp ugt i64 %498, 0
  br i1 %499, label %500, label %556

500:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 12, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 0
  %503 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 1
  %504 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 2
  %505 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %501, ptr noundef @.str.13, ptr noundef %502, ptr noundef %503, ptr noundef %504)
          to label %506 unwind label %512

506:                                              ; preds = %500
  store i32 %505, ptr %35, align 4, !tbaa !11
  %507 = load i32, ptr %35, align 4, !tbaa !11
  %508 = icmp ne i32 %507, 3
  br i1 %508, label %509, label %516

509:                                              ; preds = %506
  %510 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %510)
          to label %511 unwind label %512

511:                                              ; preds = %509
  store i32 1, ptr %8, align 4
  br label %553

512:                                              ; preds = %546, %540, %534, %531, %529, %521, %516, %509, %500
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %18, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %34) #8
  br label %567

516:                                              ; preds = %506
  %517 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 0
  %518 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 1
  %519 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 2
  %520 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %518, ptr noundef nonnull align 4 dereferenceable(4) %519)
          to label %521 unwind label %512

521:                                              ; preds = %516
  %522 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %517, ptr noundef nonnull align 4 dereferenceable(4) %520)
          to label %523 unwind label %512

523:                                              ; preds = %521
  %524 = load i32, ptr %522, align 4, !tbaa !11
  %525 = sub i32 %524, 1
  %526 = zext i32 %525 to i64
  %527 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  %528 = icmp uge i64 %526, %527
  br i1 %528, label %529, label %534

529:                                              ; preds = %523
  %530 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.10)
          to label %531 unwind label %512

531:                                              ; preds = %529
  %532 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %532)
          to label %533 unwind label %512

533:                                              ; preds = %531
  store i32 1, ptr %8, align 4
  br label %553

534:                                              ; preds = %523
  %535 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 0
  %536 = load i32, ptr %535, align 4, !tbaa !11
  %537 = sub i32 %536, 1
  %538 = zext i32 %537 to i64
  %539 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %538) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %539)
          to label %540 unwind label %512

540:                                              ; preds = %534
  %541 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 1
  %542 = load i32, ptr %541, align 4, !tbaa !11
  %543 = sub i32 %542, 1
  %544 = zext i32 %543 to i64
  %545 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %544) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %545)
          to label %546 unwind label %512

546:                                              ; preds = %540
  %547 = getelementptr inbounds [3 x i32], ptr %34, i64 0, i64 2
  %548 = load i32, ptr %547, align 4, !tbaa !11
  %549 = sub i32 %548, 1
  %550 = zext i32 %549 to i64
  %551 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %550) #8
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(12) %551)
          to label %552 unwind label %512

552:                                              ; preds = %546
  store i32 0, ptr %8, align 4
  br label %553

553:                                              ; preds = %552, %533, %511
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr %34) #8
  %554 = load i32, ptr %8, align 4
  switch i32 %554, label %564 [
    i32 0, label %555
  ]

555:                                              ; preds = %553
  br label %559

556:                                              ; preds = %497
  %557 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %557)
          to label %558 unwind label %59

558:                                              ; preds = %556
  store i32 1, ptr %8, align 4
  br label %564

559:                                              ; preds = %555
  br label %560

560:                                              ; preds = %559, %496
  br label %561

561:                                              ; preds = %560, %395
  br label %562

562:                                              ; preds = %561, %294
  br label %563

563:                                              ; preds = %562, %148
  store i32 0, ptr %8, align 4
  br label %564

564:                                              ; preds = %563, %558, %553, %494, %393, %292, %58
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %16) #8
  %565 = load i32, ptr %8, align 4
  switch i32 %565, label %664 [
    i32 0, label %566
    i32 3, label %568
  ]

566:                                              ; preds = %564
  br label %50, !llvm.loop !15

567:                                              ; preds = %512, %417, %316, %179, %129, %111, %94, %59
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %16) #8
  br label %668

568:                                              ; preds = %564
  %569 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %570 = icmp ugt i64 %569, 0
  br i1 %570, label %571, label %594

571:                                              ; preds = %568
  %572 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %573 = icmp ugt i64 %572, 0
  br i1 %573, label %574, label %594

574:                                              ; preds = %571
  %575 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  %576 = icmp ugt i64 %575, 0
  br i1 %576, label %577, label %594

577:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 56, ptr %36) #8
  %578 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #8
  %579 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %580 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 0) #8
  %581 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %582 = trunc i64 %581 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3ES3_PKNS_4Vec2Ej(ptr noundef nonnull align 8 dereferenceable(52) %36, ptr noundef %578, ptr noundef %579, ptr noundef %580, i32 noundef %582)
          to label %583 unwind label %585

583:                                              ; preds = %577
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %41, ptr noundef nonnull align 8 dereferenceable(52) %36)
          to label %584 unwind label %589

584:                                              ; preds = %583
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %36) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %36) #8
  br label %663

585:                                              ; preds = %577
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %18, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %19, align 4
  br label %593

589:                                              ; preds = %583
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %18, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %19, align 4
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %36) #8
  br label %593

593:                                              ; preds = %589, %585
  call void @llvm.lifetime.end.p0(i64 56, ptr %36) #8
  br label %668

594:                                              ; preds = %574, %571, %568
  %595 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %596 = icmp ugt i64 %595, 0
  br i1 %596, label %597, label %616

597:                                              ; preds = %594
  %598 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %599 = icmp ugt i64 %598, 0
  br i1 %599, label %600, label %616

600:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 56, ptr %37) #8
  %601 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #8
  %602 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #8
  %603 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %604 = trunc i64 %603 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3ES3_PKNS_4Vec2Ej(ptr noundef nonnull align 8 dereferenceable(52) %37, ptr noundef %601, ptr noundef %602, ptr noundef null, i32 noundef %604)
          to label %605 unwind label %607

605:                                              ; preds = %600
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %41, ptr noundef nonnull align 8 dereferenceable(52) %37)
          to label %606 unwind label %611

606:                                              ; preds = %605
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %37) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %37) #8
  br label %662

607:                                              ; preds = %600
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %18, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %19, align 4
  br label %615

611:                                              ; preds = %605
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %18, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %19, align 4
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %37) #8
  br label %615

615:                                              ; preds = %611, %607
  call void @llvm.lifetime.end.p0(i64 56, ptr %37) #8
  br label %668

616:                                              ; preds = %597, %594
  %617 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %618 = icmp ugt i64 %617, 0
  br i1 %618, label %619, label %640

619:                                              ; preds = %616
  %620 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  %621 = icmp ugt i64 %620, 0
  br i1 %621, label %622, label %640

622:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 56, ptr %38) #8
  %623 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #8
  %624 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 0) #8
  %625 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %626 = trunc i64 %625 to i32
  %627 = load i8, ptr %6, align 1, !tbaa !9, !range !13, !noundef !14
  %628 = trunc i8 %627 to i1
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3EPKNS_4Vec2Ejb(ptr noundef nonnull align 8 dereferenceable(52) %38, ptr noundef %623, ptr noundef %624, i32 noundef %626, i1 noundef zeroext %628)
          to label %629 unwind label %631

629:                                              ; preds = %622
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %41, ptr noundef nonnull align 8 dereferenceable(52) %38)
          to label %630 unwind label %635

630:                                              ; preds = %629
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %38) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #8
  br label %661

631:                                              ; preds = %622
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %18, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %19, align 4
  br label %639

635:                                              ; preds = %629
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %18, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %19, align 4
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %38) #8
  br label %639

639:                                              ; preds = %635, %631
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #8
  br label %668

640:                                              ; preds = %619, %616
  %641 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %642 = icmp ugt i64 %641, 0
  br i1 %642, label %643, label %660

643:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 56, ptr %39) #8
  %644 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #8
  %645 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  %646 = trunc i64 %645 to i32
  %647 = load i8, ptr %6, align 1, !tbaa !9, !range !13, !noundef !14
  %648 = trunc i8 %647 to i1
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3Ejb(ptr noundef nonnull align 8 dereferenceable(52) %39, ptr noundef %644, i32 noundef %646, i1 noundef zeroext %648)
          to label %649 unwind label %651

649:                                              ; preds = %643
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %41, ptr noundef nonnull align 8 dereferenceable(52) %39)
          to label %650 unwind label %655

650:                                              ; preds = %649
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %39) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #8
  br label %660

651:                                              ; preds = %643
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %18, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %19, align 4
  br label %659

655:                                              ; preds = %649
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %18, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %19, align 4
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %39) #8
  br label %659

659:                                              ; preds = %655, %651
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #8
  br label %668

660:                                              ; preds = %650, %640
  br label %661

661:                                              ; preds = %660, %630
  br label %662

662:                                              ; preds = %661, %606
  br label %663

663:                                              ; preds = %662, %584
  store i32 0, ptr %8, align 4
  br label %664

664:                                              ; preds = %663, %564
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  br label %665

665:                                              ; preds = %664, %46
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  %666 = load i32, ptr %8, align 4
  switch i32 %666, label %674 [
    i32 0, label %667
    i32 1, label %667
  ]

667:                                              ; preds = %665, %665
  ret void

668:                                              ; preds = %659, %639, %615, %593, %567
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #8
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #8
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %669

669:                                              ; preds = %668
  %670 = load ptr, ptr %18, align 8
  %671 = load i32, ptr %19, align 4
  %672 = insertvalue { ptr, i32 } poison, ptr %670, 0
  %673 = insertvalue { ptr, i32 } %672, i32 %671, 1
  resume { ptr, i32 } %673

674:                                              ; preds = %665
  unreachable
}

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

declare noalias ptr @fopen(ptr noundef, ptr noundef) #2

declare i32 @printf(ptr noundef, ...) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12), i8 noundef zeroext) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3rmg4Vec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8), i8 noundef zeroext) #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

declare void @_ZN3rmg4MeshC1EPKNS_4Vec3ES3_PKNS_4Vec2Ej(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef, ptr noundef, ptr noundef, i32 noundef) unnamed_addr #2

declare void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef nonnull align 8 dereferenceable(52)) #2

; Function Attrs: nounwind
declare void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52)) unnamed_addr #7

declare void @_ZN3rmg4MeshC1EPKNS_4Vec3EPKNS_4Vec2Ejb(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef, ptr noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2

declare void @_ZN3rmg4MeshC1EPKNS_4Vec3Ejb(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

!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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


; 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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl" }
%"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl" = type { %"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl_data" }
%"struct.std::_Vector_base<rmg::Vec3, std::allocator<rmg::Vec3>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl" }
%"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl" = type { %"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl_data" }
%"struct.std::_Vector_base<rmg::Vec2, std::allocator<rmg::Vec2>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.rmg::Vec3" = type { %union.anon }
%union.anon = type { %struct.anon }
%struct.anon = type { float, float, float }
%"struct.rmg::Vec2" = type { %union.anon.5 }
%union.anon.5 = type { %struct.anon.6 }
%struct.anon.6 = type { float, float }
%"class.rmg::Mesh" = type <{ ptr, ptr, ptr, ptr, i32, [4 x i8], ptr, i32, [4 x i8] }>

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [10 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3rmg8Object3D7loadOBJEPKcb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef %1, i1 noundef zeroext %2) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca %"class.std::vector.0", align 8
  %10 = alloca [128 x i8], align 16
  %11 = alloca %"struct.rmg::Vec3", align 4
  %12 = alloca %"struct.rmg::Vec3", align 4
  %13 = alloca %"struct.rmg::Vec2", align 4
  %14 = alloca [3 x i32], align 4
  %15 = alloca [3 x i32], align 4
  %16 = alloca [3 x i32], align 4
  %17 = alloca [3 x i32], align 4
  %18 = alloca [3 x i32], align 4
  %19 = alloca [3 x i32], align 4
  %20 = alloca [3 x i32], align 4
  %21 = alloca [3 x i32], align 4
  %22 = alloca %"class.rmg::Mesh", align 8
  %23 = alloca %"class.rmg::Mesh", align 8
  %24 = alloca %"class.rmg::Mesh", align 8
  %25 = alloca %"class.rmg::Mesh", align 8
  %26 = tail call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str)
  %27 = icmp eq ptr %26, null
  br i1 %27, label %28, label %30

28:                                               ; preds = %3
  %29 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef %1)
  br label %392

30:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #9
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  %31 = getelementptr inbounds i8, ptr %14, i64 4
  %32 = getelementptr inbounds i8, ptr %15, i64 4
  %33 = getelementptr inbounds i8, ptr %16, i64 4
  %34 = getelementptr inbounds i8, ptr %14, i64 8
  %35 = getelementptr inbounds i8, ptr %15, i64 8
  %36 = getelementptr inbounds i8, ptr %16, i64 8
  %37 = getelementptr inbounds i8, ptr %17, i64 4
  %38 = getelementptr inbounds i8, ptr %18, i64 4
  %39 = getelementptr inbounds i8, ptr %17, i64 8
  %40 = getelementptr inbounds i8, ptr %18, i64 8
  %41 = getelementptr inbounds i8, ptr %19, i64 4
  %42 = getelementptr inbounds i8, ptr %20, i64 4
  %43 = getelementptr inbounds i8, ptr %19, i64 8
  %44 = getelementptr inbounds i8, ptr %20, i64 8
  %45 = getelementptr inbounds i8, ptr %21, i64 4
  %46 = getelementptr inbounds i8, ptr %21, i64 8
  br label %47

47:                                               ; preds = %325, %30
  %.043 = phi i1 [ false, %30 ], [ %.144, %325 ]
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %10) #9
  %48 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.2, ptr noundef nonnull %10)
          to label %49 unwind label %.loopexit

49:                                               ; preds = %47
  %50 = icmp eq i32 %48, -1
  br i1 %50, label %327, label %51

.loopexit:                                        ; preds = %47, %98, %100, %102
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %326

.loopexit.split-lp:                               ; preds = %324
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %326

51:                                               ; preds = %49
  br i1 %.043, label %104, label %52

52:                                               ; preds = %51
  %53 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.3) #10
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %55, label %67

55:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #9
  call void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %11)
  %56 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %11, i8 noundef zeroext 0)
          to label %57 unwind label %64

57:                                               ; preds = %55
  %58 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %11, i8 noundef zeroext 1)
          to label %59 unwind label %64

59:                                               ; preds = %57
  %60 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %11, i8 noundef zeroext 2)
          to label %61 unwind label %64

61:                                               ; preds = %59
  %62 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.4, ptr noundef nonnull %56, ptr noundef nonnull %58, ptr noundef nonnull %60)
          to label %63 unwind label %64

63:                                               ; preds = %61
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(12) %11)
          to label %66 unwind label %64

64:                                               ; preds = %63, %61, %59, %57, %55
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #9
  br label %326

66:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #9
  br label %104

67:                                               ; preds = %52
  %68 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.5) #10
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %70, label %82

70:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #9
  call void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %12)
  %71 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %12, i8 noundef zeroext 0)
          to label %72 unwind label %80

72:                                               ; preds = %70
  %73 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %12, i8 noundef zeroext 1)
          to label %74 unwind label %80

74:                                               ; preds = %72
  %75 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12) %12, i8 noundef zeroext 2)
          to label %76 unwind label %80

76:                                               ; preds = %74
  %77 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.4, ptr noundef nonnull %71, ptr noundef nonnull %73, ptr noundef nonnull %75)
          to label %78 unwind label %80

78:                                               ; preds = %76
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(12) %12)
          to label %79 unwind label %80

79:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #9
  br label %104

80:                                               ; preds = %78, %76, %74, %72, %70
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #9
  br label %326

82:                                               ; preds = %67
  %83 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.6) #10
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %95

85:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  call void @_ZN3rmg4Vec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %13)
  %86 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8) %13, i8 noundef zeroext 0)
          to label %87 unwind label %93

87:                                               ; preds = %85
  %88 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8) %13, i8 noundef zeroext 1)
          to label %89 unwind label %93

89:                                               ; preds = %87
  %90 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.7, ptr noundef nonnull %86, ptr noundef nonnull %88)
          to label %91 unwind label %93

91:                                               ; preds = %89
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %92 unwind label %93

92:                                               ; preds = %91
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %104

93:                                               ; preds = %91, %89, %87, %85
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %326

95:                                               ; preds = %82
  %96 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.8) #10
  %97 = icmp eq i32 %96, 0
  br i1 %97, label %98, label %104

98:                                               ; preds = %95
  %99 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %99)
          to label %100 unwind label %.loopexit

100:                                              ; preds = %98
  %101 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %101)
          to label %102 unwind label %.loopexit

102:                                              ; preds = %100
  %103 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %103)
          to label %104 unwind label %.loopexit

104:                                              ; preds = %66, %92, %102, %95, %79, %51
  %.144 = phi i1 [ true, %51 ], [ false, %66 ], [ false, %79 ], [ false, %92 ], [ true, %102 ], [ false, %95 ]
  %105 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.8) #10
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %325

107:                                              ; preds = %104
  %108 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not = icmp eq i64 %108, 0
  br i1 %.not, label %185, label %109

109:                                              ; preds = %107
  %110 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  %.not58 = icmp eq i64 %110, 0
  br i1 %.not58, label %185, label %111

111:                                              ; preds = %109
  %112 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  %.not59 = icmp eq i64 %112, 0
  br i1 %.not59, label %185, label %113

113:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #9
  %114 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.9, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %36)
          to label %115 unwind label %.loopexit106

115:                                              ; preds = %113
  %.not73 = icmp eq i32 %114, 9
  br i1 %.not73, label %118, label %.invoke

.invoke.sink.split:                               ; preds = %162, %140, %118
  %116 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  br label %.invoke

.invoke:                                          ; preds = %115, %.invoke.sink.split
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %1)
          to label %.critedge unwind label %.loopexit.split-lp107

.loopexit106:                                     ; preds = %113, %125, %130, %135, %147, %152, %157, %169, %174, %179
  %lpad.loopexit108 = landingpad { ptr, i32 }
          cleanup
  br label %117

.loopexit.split-lp107:                            ; preds = %.invoke
  %lpad.loopexit.split-lp109 = landingpad { ptr, i32 }
          cleanup
  br label %117

117:                                              ; preds = %.loopexit.split-lp107, %.loopexit106
  %lpad.phi110 = phi { ptr, i32 } [ %lpad.loopexit108, %.loopexit106 ], [ %lpad.loopexit.split-lp109, %.loopexit.split-lp107 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #9
  br label %326

118:                                              ; preds = %115
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %34)
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %119)
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %122 = add i32 %121, -1
  %123 = zext i32 %122 to i64
  %124 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not74 = icmp ugt i64 %124, %123
  br i1 %.not74, label %125, label %.invoke.sink.split

125:                                              ; preds = %118
  %126 = load i32, ptr %14, align 4, !tbaa !5
  %127 = add i32 %126, -1
  %128 = zext i32 %127 to i64
  %129 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %128) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %129)
          to label %130 unwind label %.loopexit106

130:                                              ; preds = %125
  %131 = load i32, ptr %31, align 4, !tbaa !5
  %132 = add i32 %131, -1
  %133 = zext i32 %132 to i64
  %134 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %133) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %134)
          to label %135 unwind label %.loopexit106

135:                                              ; preds = %130
  %136 = load i32, ptr %34, align 4, !tbaa !5
  %137 = add i32 %136, -1
  %138 = zext i32 %137 to i64
  %139 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %138) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %139)
          to label %140 unwind label %.loopexit106

140:                                              ; preds = %135
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %36)
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %141)
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = add i32 %143, -1
  %145 = zext i32 %144 to i64
  %146 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  %.not75 = icmp ugt i64 %146, %145
  br i1 %.not75, label %147, label %.invoke.sink.split

147:                                              ; preds = %140
  %148 = load i32, ptr %16, align 4, !tbaa !5
  %149 = add i32 %148, -1
  %150 = zext i32 %149 to i64
  %151 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %150) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %151)
          to label %152 unwind label %.loopexit106

152:                                              ; preds = %147
  %153 = load i32, ptr %33, align 4, !tbaa !5
  %154 = add i32 %153, -1
  %155 = zext i32 %154 to i64
  %156 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %155) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %156)
          to label %157 unwind label %.loopexit106

157:                                              ; preds = %152
  %158 = load i32, ptr %36, align 4, !tbaa !5
  %159 = add i32 %158, -1
  %160 = zext i32 %159 to i64
  %161 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %160) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %161)
          to label %162 unwind label %.loopexit106

162:                                              ; preds = %157
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %35)
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %163)
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = add i32 %165, -1
  %167 = zext i32 %166 to i64
  %168 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  %.not76 = icmp ugt i64 %168, %167
  br i1 %.not76, label %169, label %.invoke.sink.split

169:                                              ; preds = %162
  %170 = load i32, ptr %15, align 4, !tbaa !5
  %171 = add i32 %170, -1
  %172 = zext i32 %171 to i64
  %173 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %172) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %173)
          to label %174 unwind label %.loopexit106

174:                                              ; preds = %169
  %175 = load i32, ptr %32, align 4, !tbaa !5
  %176 = add i32 %175, -1
  %177 = zext i32 %176 to i64
  %178 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %177) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %178)
          to label %179 unwind label %.loopexit106

179:                                              ; preds = %174
  %180 = load i32, ptr %35, align 4, !tbaa !5
  %181 = add i32 %180, -1
  %182 = zext i32 %181 to i64
  %183 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %182) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %183)
          to label %184 unwind label %.loopexit106

184:                                              ; preds = %179
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #9
  br label %325

185:                                              ; preds = %111, %109, %107
  %186 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not60 = icmp eq i64 %186, 0
  br i1 %.not60, label %239, label %187

187:                                              ; preds = %185
  %188 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  %.not61 = icmp eq i64 %188, 0
  br i1 %.not61, label %239, label %189

189:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %18) #9
  %190 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.11, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40)
          to label %191 unwind label %.loopexit111

191:                                              ; preds = %189
  %.not70 = icmp eq i32 %190, 6
  br i1 %.not70, label %194, label %.invoke126

.invoke126.sink.split:                            ; preds = %216, %194
  %192 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  br label %.invoke126

.invoke126:                                       ; preds = %191, %.invoke126.sink.split
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %1)
          to label %.critedge96 unwind label %.loopexit.split-lp112

.loopexit111:                                     ; preds = %189, %201, %206, %211, %223, %228, %233
  %lpad.loopexit113 = landingpad { ptr, i32 }
          cleanup
  br label %193

.loopexit.split-lp112:                            ; preds = %.invoke126
  %lpad.loopexit.split-lp114 = landingpad { ptr, i32 }
          cleanup
  br label %193

193:                                              ; preds = %.loopexit.split-lp112, %.loopexit111
  %lpad.phi115 = phi { ptr, i32 } [ %lpad.loopexit113, %.loopexit111 ], [ %lpad.loopexit.split-lp114, %.loopexit.split-lp112 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %17) #9
  br label %326

194:                                              ; preds = %191
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %39)
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %195)
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = add i32 %197, -1
  %199 = zext i32 %198 to i64
  %200 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not71 = icmp ugt i64 %200, %199
  br i1 %.not71, label %201, label %.invoke126.sink.split

201:                                              ; preds = %194
  %202 = load i32, ptr %17, align 4, !tbaa !5
  %203 = add i32 %202, -1
  %204 = zext i32 %203 to i64
  %205 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %204) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %205)
          to label %206 unwind label %.loopexit111

206:                                              ; preds = %201
  %207 = load i32, ptr %37, align 4, !tbaa !5
  %208 = add i32 %207, -1
  %209 = zext i32 %208 to i64
  %210 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %209) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %210)
          to label %211 unwind label %.loopexit111

211:                                              ; preds = %206
  %212 = load i32, ptr %39, align 4, !tbaa !5
  %213 = add i32 %212, -1
  %214 = zext i32 %213 to i64
  %215 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %214) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %215)
          to label %216 unwind label %.loopexit111

216:                                              ; preds = %211
  %217 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %40)
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %217)
  %219 = load i32, ptr %218, align 4, !tbaa !5
  %220 = add i32 %219, -1
  %221 = zext i32 %220 to i64
  %222 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  %.not72 = icmp ugt i64 %222, %221
  br i1 %.not72, label %223, label %.invoke126.sink.split

223:                                              ; preds = %216
  %224 = load i32, ptr %18, align 4, !tbaa !5
  %225 = add i32 %224, -1
  %226 = zext i32 %225 to i64
  %227 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %226) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %227)
          to label %228 unwind label %.loopexit111

228:                                              ; preds = %223
  %229 = load i32, ptr %38, align 4, !tbaa !5
  %230 = add i32 %229, -1
  %231 = zext i32 %230 to i64
  %232 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %231) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %232)
          to label %233 unwind label %.loopexit111

233:                                              ; preds = %228
  %234 = load i32, ptr %40, align 4, !tbaa !5
  %235 = add i32 %234, -1
  %236 = zext i32 %235 to i64
  %237 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %236) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %237)
          to label %238 unwind label %.loopexit111

238:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %17) #9
  br label %325

239:                                              ; preds = %187, %185
  %240 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not62 = icmp eq i64 %240, 0
  br i1 %.not62, label %293, label %241

241:                                              ; preds = %239
  %242 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  %.not63 = icmp eq i64 %242, 0
  br i1 %.not63, label %293, label %243

243:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #9
  %244 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.12, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44)
          to label %245 unwind label %.loopexit116

245:                                              ; preds = %243
  %.not67 = icmp eq i32 %244, 6
  br i1 %.not67, label %248, label %.invoke127

.invoke127.sink.split:                            ; preds = %270, %248
  %246 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  br label %.invoke127

.invoke127:                                       ; preds = %245, %.invoke127.sink.split
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %1)
          to label %.critedge98 unwind label %.loopexit.split-lp117

.loopexit116:                                     ; preds = %243, %255, %260, %265, %277, %282, %287
  %lpad.loopexit118 = landingpad { ptr, i32 }
          cleanup
  br label %247

.loopexit.split-lp117:                            ; preds = %.invoke127
  %lpad.loopexit.split-lp119 = landingpad { ptr, i32 }
          cleanup
  br label %247

247:                                              ; preds = %.loopexit.split-lp117, %.loopexit116
  %lpad.phi120 = phi { ptr, i32 } [ %lpad.loopexit118, %.loopexit116 ], [ %lpad.loopexit.split-lp119, %.loopexit.split-lp117 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #9
  br label %326

248:                                              ; preds = %245
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %43)
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %249)
  %251 = load i32, ptr %250, align 4, !tbaa !5
  %252 = add i32 %251, -1
  %253 = zext i32 %252 to i64
  %254 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not68 = icmp ugt i64 %254, %253
  br i1 %.not68, label %255, label %.invoke127.sink.split

255:                                              ; preds = %248
  %256 = load i32, ptr %19, align 4, !tbaa !5
  %257 = add i32 %256, -1
  %258 = zext i32 %257 to i64
  %259 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %258) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %259)
          to label %260 unwind label %.loopexit116

260:                                              ; preds = %255
  %261 = load i32, ptr %41, align 4, !tbaa !5
  %262 = add i32 %261, -1
  %263 = zext i32 %262 to i64
  %264 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %263) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %264)
          to label %265 unwind label %.loopexit116

265:                                              ; preds = %260
  %266 = load i32, ptr %43, align 4, !tbaa !5
  %267 = add i32 %266, -1
  %268 = zext i32 %267 to i64
  %269 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %268) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %269)
          to label %270 unwind label %.loopexit116

270:                                              ; preds = %265
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef nonnull align 4 dereferenceable(4) %44)
  %272 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %271)
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = add i32 %273, -1
  %275 = zext i32 %274 to i64
  %276 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  %.not69 = icmp ugt i64 %276, %275
  br i1 %.not69, label %277, label %.invoke127.sink.split

277:                                              ; preds = %270
  %278 = load i32, ptr %20, align 4, !tbaa !5
  %279 = add i32 %278, -1
  %280 = zext i32 %279 to i64
  %281 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %280) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %281)
          to label %282 unwind label %.loopexit116

282:                                              ; preds = %277
  %283 = load i32, ptr %42, align 4, !tbaa !5
  %284 = add i32 %283, -1
  %285 = zext i32 %284 to i64
  %286 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %285) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %286)
          to label %287 unwind label %.loopexit116

287:                                              ; preds = %282
  %288 = load i32, ptr %44, align 4, !tbaa !5
  %289 = add i32 %288, -1
  %290 = zext i32 %289 to i64
  %291 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %290) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(8) %291)
          to label %292 unwind label %.loopexit116

292:                                              ; preds = %287
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #9
  br label %325

293:                                              ; preds = %241, %239
  %294 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not64 = icmp eq i64 %294, 0
  br i1 %.not64, label %324, label %295

295:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #9
  %296 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef nonnull %26, ptr noundef nonnull @.str.13, ptr noundef nonnull %21, ptr noundef nonnull %45, ptr noundef nonnull %46)
          to label %297 unwind label %.loopexit121

297:                                              ; preds = %295
  %.not65 = icmp eq i32 %296, 3
  br i1 %.not65, label %299, label %.invoke128

.invoke128:                                       ; preds = %297, %306
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %1)
          to label %.critedge100 unwind label %.loopexit.split-lp122

.loopexit121:                                     ; preds = %295, %308, %313, %318
  %lpad.loopexit123 = landingpad { ptr, i32 }
          cleanup
  br label %298

.loopexit.split-lp122:                            ; preds = %.invoke128
  %lpad.loopexit.split-lp124 = landingpad { ptr, i32 }
          cleanup
  br label %298

298:                                              ; preds = %.loopexit.split-lp122, %.loopexit121
  %lpad.phi125 = phi { ptr, i32 } [ %lpad.loopexit123, %.loopexit121 ], [ %lpad.loopexit.split-lp124, %.loopexit.split-lp122 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #9
  br label %326

299:                                              ; preds = %297
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %46)
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %300)
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = add i32 %302, -1
  %304 = zext i32 %303 to i64
  %305 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  %.not66 = icmp ugt i64 %305, %304
  br i1 %.not66, label %308, label %306

306:                                              ; preds = %299
  %307 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  br label %.invoke128

308:                                              ; preds = %299
  %309 = load i32, ptr %21, align 4, !tbaa !5
  %310 = add i32 %309, -1
  %311 = zext i32 %310 to i64
  %312 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %311) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %312)
          to label %313 unwind label %.loopexit121

313:                                              ; preds = %308
  %314 = load i32, ptr %45, align 4, !tbaa !5
  %315 = add i32 %314, -1
  %316 = zext i32 %315 to i64
  %317 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %316) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %317)
          to label %318 unwind label %.loopexit121

318:                                              ; preds = %313
  %319 = load i32, ptr %46, align 4, !tbaa !5
  %320 = add i32 %319, -1
  %321 = zext i32 %320 to i64
  %322 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %321) #9
  invoke void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(12) %322)
          to label %323 unwind label %.loopexit121

323:                                              ; preds = %318
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #9
  br label %325

324:                                              ; preds = %293
  invoke void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef %1)
          to label %.thread unwind label %.loopexit.split-lp

.critedge:                                        ; preds = %.invoke
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #9
  br label %.thread

.critedge96:                                      ; preds = %.invoke126
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %17) #9
  br label %.thread

.critedge98:                                      ; preds = %.invoke127
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #9
  br label %.thread

.critedge100:                                     ; preds = %.invoke128
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #9
  br label %.thread

.thread:                                          ; preds = %.critedge, %.critedge96, %.critedge98, %.critedge100, %324
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #9
  br label %391

325:                                              ; preds = %104, %184, %238, %292, %323
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #9
  br label %47

326:                                              ; preds = %.loopexit, %.loopexit.split-lp, %298, %247, %193, %117, %93, %80, %64
  %.pn = phi { ptr, i32 } [ %lpad.phi110, %117 ], [ %lpad.phi115, %193 ], [ %lpad.phi120, %247 ], [ %lpad.phi125, %298 ], [ %65, %64 ], [ %81, %80 ], [ %94, %93 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #9
  br label %393

327:                                              ; preds = %49
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %10) #9
  %328 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %.not78 = icmp eq i64 %328, 0
  br i1 %.not78, label %346, label %329

329:                                              ; preds = %327
  %330 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  %.not79 = icmp eq i64 %330, 0
  br i1 %.not79, label %346, label %331

331:                                              ; preds = %329
  %332 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %.not80 = icmp eq i64 %332, 0
  br i1 %.not80, label %346, label %333

333:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %22) #9
  %334 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #9
  %335 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #9
  %336 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef 0) #9
  %337 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %338 = trunc i64 %337 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3ES3_PKNS_4Vec2Ej(ptr noundef nonnull align 8 dereferenceable(52) %22, ptr noundef nonnull %334, ptr noundef nonnull %335, ptr noundef nonnull %336, i32 noundef %338)
          to label %339 unwind label %341

339:                                              ; preds = %333
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(52) %22)
          to label %340 unwind label %343

340:                                              ; preds = %339
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %22) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #9
  br label %391

341:                                              ; preds = %333
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %345

343:                                              ; preds = %339
  %344 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %22) #9
  br label %345

345:                                              ; preds = %343, %341
  %.pn92 = phi { ptr, i32 } [ %344, %343 ], [ %342, %341 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #9
  br label %393

346:                                              ; preds = %331, %329, %327
  %347 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %.not81 = icmp eq i64 %347, 0
  br i1 %.not81, label %362, label %348

348:                                              ; preds = %346
  %349 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  %.not82 = icmp eq i64 %349, 0
  br i1 %.not82, label %362, label %350

350:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %23) #9
  %351 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #9
  %352 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #9
  %353 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %354 = trunc i64 %353 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3ES3_PKNS_4Vec2Ej(ptr noundef nonnull align 8 dereferenceable(52) %23, ptr noundef nonnull %351, ptr noundef nonnull %352, ptr noundef null, i32 noundef %354)
          to label %355 unwind label %357

355:                                              ; preds = %350
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(52) %23)
          to label %356 unwind label %359

356:                                              ; preds = %355
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %23) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #9
  br label %391

357:                                              ; preds = %350
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %361

359:                                              ; preds = %355
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %23) #9
  br label %361

361:                                              ; preds = %359, %357
  %.pn90 = phi { ptr, i32 } [ %360, %359 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #9
  br label %393

362:                                              ; preds = %348, %346
  %363 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %.not83 = icmp eq i64 %363, 0
  br i1 %.not83, label %378, label %364

364:                                              ; preds = %362
  %365 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  %.not84 = icmp eq i64 %365, 0
  br i1 %.not84, label %378, label %366

366:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #9
  %367 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #9
  %368 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef 0) #9
  %369 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %370 = trunc i64 %369 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3EPKNS_4Vec2Ejb(ptr noundef nonnull align 8 dereferenceable(52) %24, ptr noundef nonnull %367, ptr noundef nonnull %368, i32 noundef %370, i1 noundef zeroext %2)
          to label %371 unwind label %373

371:                                              ; preds = %366
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(52) %24)
          to label %372 unwind label %375

372:                                              ; preds = %371
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %24) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #9
  br label %391

373:                                              ; preds = %366
  %374 = landingpad { ptr, i32 }
          cleanup
  br label %377

375:                                              ; preds = %371
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %24) #9
  br label %377

377:                                              ; preds = %375, %373
  %.pn88 = phi { ptr, i32 } [ %376, %375 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #9
  br label %393

378:                                              ; preds = %364, %362
  %379 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %.not85 = icmp eq i64 %379, 0
  br i1 %.not85, label %391, label %380

380:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %25) #9
  %381 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef 0) #9
  %382 = call noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %383 = trunc i64 %382 to i32
  invoke void @_ZN3rmg4MeshC1EPKNS_4Vec3Ejb(ptr noundef nonnull align 8 dereferenceable(52) %25, ptr noundef nonnull %381, i32 noundef %383, i1 noundef zeroext %2)
          to label %384 unwind label %386

384:                                              ; preds = %380
  invoke void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(52) %25)
          to label %385 unwind label %388

385:                                              ; preds = %384
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %25) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #9
  br label %391

386:                                              ; preds = %380
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %390

388:                                              ; preds = %384
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3rmg4MeshD1Ev(ptr noundef nonnull align 8 dereferenceable(52) %25) #9
  br label %390

390:                                              ; preds = %388, %386
  %.pn86 = phi { ptr, i32 } [ %389, %388 ], [ %387, %386 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #9
  br label %393

391:                                              ; preds = %.thread, %340, %372, %385, %378, %356
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  br label %392

392:                                              ; preds = %391, %28
  ret void

393:                                              ; preds = %390, %377, %361, %345, %326
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %345 ], [ %.pn90, %361 ], [ %.pn88, %377 ], [ %.pn86, %390 ], [ %.pn, %326 ]
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  call void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #9
  call void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  resume { ptr, i32 } %.pn92.pn
}

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3rmg4Vec3C2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec3ixEh(ptr noundef nonnull align 4 dereferenceable(12), i8 noundef zeroext) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3rmg4Vec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN3rmg4Vec2ixEh(ptr noundef nonnull align 4 dereferenceable(8), i8 noundef zeroext) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN3rmg4Vec3ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN3rmg4Vec2ESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN3rmgL14printLoadErrorEPKc(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

declare void @_ZN3rmg8Object3D7setMeshERKNS_4MeshE(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef nonnull align 8 dereferenceable(52)) local_unnamed_addr #4

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

declare void @_ZN3rmg4MeshC1EPKNS_4Vec3EPKNS_4Vec2Ejb(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef, ptr noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #4

declare void @_ZN3rmg4MeshC1EPKNS_4Vec3Ejb(ptr noundef nonnull align 8 dereferenceable(52), ptr noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec2ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3rmg4Vec3ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass