; LLVM IR from niessner/Matterport :: code/gaps/pkgs/R3Graphics/R3Scene.ll (ZN7R3Scene17ReadPrincetonFileEPKcP11R3SceneNode)

; 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.R3Vector = type { [3 x double] }
%class.RNArray.1 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%class.R3Point = type { [3 x double] }
%class.R3Affine = type { %class.R3Transformation, %class.R4Matrix, %class.R4Matrix, %class.RNFlags }
%class.R3Transformation = type { ptr }
%class.R4Matrix = type { [4 x [4 x double]] }
%class.RNFlags = type { i64 }
%class.RNRgb = type { [3 x double] }
%class.R3Camera = type { %class.R3CoordSystem, double, double, double, double, double, ptr }
%class.R3CoordSystem = type { %class.R3Point, %class.R3Triad }
%class.R3Triad = type { [3 x %class.R3Vector] }
%class.R3Scene = type { ptr, %class.RNArray, %class.RNArray.0, %class.RNArray.1, %class.RNArray.2, %class.RNArray.3, %class.RNArray.4, %class.RNSymbolTable, %class.R3Viewer, %class.RNRgb, %class.RNRgb, ptr, ptr, ptr }
%class.RNArray = type { %class.RNVArray }
%class.RNArray.0 = type { %class.RNVArray }
%class.RNArray.2 = type { %class.RNVArray }
%class.RNArray.3 = type { %class.RNVArray }
%class.RNArray.4 = type { %class.RNVArray }
%class.RNSymbolTable = type { %class.RNMap }
%class.RNMap = type { ptr }
%class.R3Viewer = type { ptr, %class.R3Camera, %class.R2Viewport }
%class.R2Viewport = type { i32, i32, i32, i32 }

@stderr = external global ptr, align 8
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [50 x i8], align 1
@R3posy_vector = external global %class.R3Vector, align 8
@.str.58 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [46 x i8], align 1
@RN_BIG_EPSILON = external global double, align 8
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [40 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

declare void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef) unnamed_addr #1

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

declare void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef nonnull align 8 dereferenceable(272)) #1

declare void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1

declare void @_ZN18R3DirectionalLightC1ERK8R3VectorRK5RNRgbdi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef) unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7R3Scene17ReadPrincetonFileEPKcP11R3SceneNode(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef %1, ptr noundef %2) #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %class.RNArray.1, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca [1024 x ptr], align 16
  %15 = alloca [1024 x ptr], align 16
  %16 = alloca i32, align 4
  %17 = alloca [128 x i8], align 16
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %class.R3Point, align 8
  %23 = alloca %class.R3Point, align 8
  %24 = alloca %class.R3Point, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca %class.R3Point, align 8
  %31 = alloca %class.R3Point, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca %class.R3Point, align 8
  %38 = alloca double, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca %class.R3Point, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca %class.R3Point, align 8
  %45 = alloca %class.R3Vector, align 8
  %46 = alloca %class.R3Point, align 8
  %47 = alloca %class.R3Vector, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca %class.R3Point, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca %class.R3Point, align 8
  %54 = alloca %class.R3Vector, align 8
  %55 = alloca %class.R3Point, align 8
  %56 = alloca %class.R3Vector, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca [256 x i8], align 16
  %60 = alloca [2048 x i8], align 16
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca %class.R3Point, align 8
  %71 = alloca %class.R3Point, align 8
  %72 = alloca ptr, align 8
  %73 = alloca i32, align 4
  %74 = alloca [16 x double], align 16
  %75 = alloca [4096 x i8], align 16
  %76 = alloca ptr, align 8
  %77 = alloca %class.R3Affine, align 8
  %78 = alloca %class.R4Matrix, align 8
  %79 = alloca %class.RNRgb, align 8
  %80 = alloca %class.RNRgb, align 8
  %81 = alloca %class.RNRgb, align 8
  %82 = alloca %class.RNRgb, align 8
  %83 = alloca %class.RNRgb, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca [256 x i8], align 16
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca [2048 x i8], align 16
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %class.RNRgb, align 8
  %94 = alloca %class.R3Vector, align 8
  %95 = alloca ptr, align 8
  %96 = alloca %class.RNRgb, align 8
  %97 = alloca %class.R3Point, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca ptr, align 8
  %102 = alloca %class.RNRgb, align 8
  %103 = alloca %class.R3Point, align 8
  %104 = alloca %class.R3Vector, align 8
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca ptr, align 8
  %111 = alloca %class.RNRgb, align 8
  %112 = alloca %class.R3Point, align 8
  %113 = alloca %class.R3Vector, align 8
  %114 = alloca double, align 8
  %115 = alloca double, align 8
  %116 = alloca double, align 8
  %117 = alloca double, align 8
  %118 = alloca ptr, align 8
  %119 = alloca %class.R3Point, align 8
  %120 = alloca %class.R3Vector, align 8
  %121 = alloca %class.R3Vector, align 8
  %122 = alloca double, align 8
  %123 = alloca double, align 8
  %124 = alloca double, align 8
  %125 = alloca %class.R3Camera, align 8
  %126 = alloca [256 x i8], align 16
  %127 = alloca [2048 x i8], align 16
  %128 = alloca ptr, align 8
  %129 = alloca double, align 8
  %130 = alloca double, align 8
  %131 = alloca double, align 8
  %132 = alloca %class.RNRgb, align 8
  %133 = alloca double, align 8
  %134 = alloca double, align 8
  %135 = alloca double, align 8
  %136 = alloca %class.RNRgb, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %137 = load ptr, ptr %5, align 8
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = icmp ne ptr %138, null
  br i1 %139, label %143, label %140

140:                                              ; preds = %3
  %141 = getelementptr inbounds %class.R3Scene, ptr %137, i32 0, i32 0
  %142 = load ptr, ptr %141, align 8, !tbaa !9
  store ptr %142, ptr %7, align 8, !tbaa !5
  br label %143

143:                                              ; preds = %140, %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = call noalias ptr @fopen(ptr noundef %144, ptr noundef @.str.42)
  store ptr %145, ptr %8, align 8, !tbaa !5
  %146 = icmp ne ptr %145, null
  br i1 %146, label %151, label %147

147:                                              ; preds = %143
  %148 = load ptr, ptr @stderr, align 8, !tbaa !5
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %148, ptr noundef @.str.43, ptr noundef %149) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1665

151:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #10
  call void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10)
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 1024, ptr %13, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8192, ptr %14) #10
  call void @llvm.memset.p0.i64(ptr align 16 %14, i8 0, i64 8192, i1 false)
  call void @llvm.lifetime.start.p0(i64 8192, ptr %15) #10
  call void @llvm.memset.p0.i64(ptr align 16 %15, i8 0, i64 8192, i1 false)
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 0
  store ptr %152, ptr %153, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store i32 0, ptr %16, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 128, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  store i32 1, ptr %18, align 4, !tbaa !29
  br label %154

154:                                              ; preds = %1656, %151
  %155 = load ptr, ptr %8, align 8, !tbaa !5
  %156 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %157 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %155, ptr noundef @.str.44, ptr noundef %156)
          to label %158 unwind label %185

158:                                              ; preds = %154
  %159 = icmp eq i32 %157, 1
  br i1 %159, label %160, label %1659

160:                                              ; preds = %158
  %161 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %162 = load i8, ptr %161, align 16, !tbaa !30
  %163 = sext i8 %162 to i32
  %164 = icmp eq i32 %163, 35
  br i1 %164, label %165, label %189

165:                                              ; preds = %160
  br label %166

166:                                              ; preds = %182, %165
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = invoke i32 @fgetc(ptr noundef %167)
          to label %169 unwind label %185

169:                                              ; preds = %166
  %170 = trunc i32 %168 to i8
  %171 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  store i8 %170, ptr %171, align 16, !tbaa !30
  br label %172

172:                                              ; preds = %169
  %173 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %174 = load i8, ptr %173, align 16, !tbaa !30
  %175 = sext i8 %174 to i32
  %176 = icmp sge i32 %175, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %172
  %178 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %179 = load i8, ptr %178, align 16, !tbaa !30
  %180 = sext i8 %179 to i32
  %181 = icmp ne i32 %180, 10
  br label %182

182:                                              ; preds = %177, %172
  %183 = phi i1 [ false, %172 ], [ %181, %177 ]
  br i1 %183, label %166, label %184, !llvm.loop !31

184:                                              ; preds = %182
  br label %1656

185:                                              ; preds = %1659, %166, %154
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %19, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %20, align 4
  br label %1664

189:                                              ; preds = %160
  %190 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %191 = call i32 @strcmp(ptr noundef %190, ptr noundef @.str.45) #11
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %315, label %193

193:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %194 unwind label %224

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %195 unwind label %228

195:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %196 unwind label %232

196:                                              ; preds = %195
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef 0)
          to label %199 unwind label %232

199:                                              ; preds = %196
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef 1)
          to label %201 unwind label %232

201:                                              ; preds = %199
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %22, i32 noundef 2)
          to label %203 unwind label %232

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef 0)
          to label %205 unwind label %232

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef 1)
          to label %207 unwind label %232

207:                                              ; preds = %205
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef 2)
          to label %209 unwind label %232

209:                                              ; preds = %207
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 0)
          to label %211 unwind label %232

211:                                              ; preds = %209
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 1)
          to label %213 unwind label %232

213:                                              ; preds = %211
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 2)
          to label %215 unwind label %232

215:                                              ; preds = %213
  %216 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %197, ptr noundef @.str.46, ptr noundef %21, ptr noundef %198, ptr noundef %200, ptr noundef %202, ptr noundef %204, ptr noundef %206, ptr noundef %208, ptr noundef %210, ptr noundef %212, ptr noundef %214)
          to label %217 unwind label %232

217:                                              ; preds = %215
  %218 = icmp ne i32 %216, 10
  br i1 %218, label %219, label %236

219:                                              ; preds = %217
  %220 = load ptr, ptr @stderr, align 8, !tbaa !5
  %221 = load i32, ptr %18, align 4, !tbaa !29
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  %223 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %220, ptr noundef @.str.47, i32 noundef %221, ptr noundef %222) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %305

224:                                              ; preds = %193
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %19, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %20, align 4
  br label %314

228:                                              ; preds = %194
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %19, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %20, align 4
  br label %313

232:                                              ; preds = %215, %213, %211, %209, %207, %205, %203, %201, %199, %196, %195
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %19, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %20, align 4
  br label %312

236:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %237 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 104) #12
          to label %238 unwind label %268

238:                                              ; preds = %236
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %237, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %239 unwind label %272

239:                                              ; preds = %238
  store ptr %237, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %240 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 104) #12
          to label %241 unwind label %276

241:                                              ; preds = %239
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %240, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %242 unwind label %280

242:                                              ; preds = %241
  store ptr %240, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %243 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 104) #12
          to label %244 unwind label %284

244:                                              ; preds = %242
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %243, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %245 unwind label %288

245:                                              ; preds = %244
  store ptr %243, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %246 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #12
          to label %247 unwind label %292

247:                                              ; preds = %245
  %248 = load ptr, ptr %25, align 8, !tbaa !5
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZN10R3TriangleC1EP16R3TriangleVertexS1_S1_(ptr noundef nonnull align 8 dereferenceable(132) %246, ptr noundef %248, ptr noundef %249, ptr noundef %250)
          to label %251 unwind label %296

251:                                              ; preds = %247
  store ptr %246, ptr %28, align 8, !tbaa !5
  %252 = load i32, ptr %16, align 4, !tbaa !29
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %253
  %255 = load ptr, ptr %254, align 8, !tbaa !5
  %256 = load i32, ptr %21, align 4, !tbaa !29
  %257 = load i32, ptr %16, align 4, !tbaa !29
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %258
  %260 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %255, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %256, ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %261 unwind label %292

261:                                              ; preds = %251
  %262 = icmp ne i32 %260, 0
  br i1 %262, label %300, label %263

263:                                              ; preds = %261
  %264 = load ptr, ptr @stderr, align 8, !tbaa !5
  %265 = load i32, ptr %18, align 4, !tbaa !29
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %264, ptr noundef @.str.48, i32 noundef %265, ptr noundef %266) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %304

268:                                              ; preds = %236
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %19, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %20, align 4
  br label %311

272:                                              ; preds = %238
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %19, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %237, i64 noundef 104) #13
  br label %311

276:                                              ; preds = %239
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %19, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %20, align 4
  br label %310

280:                                              ; preds = %241
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %19, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %240, i64 noundef 104) #13
  br label %310

284:                                              ; preds = %242
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %19, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %20, align 4
  br label %309

288:                                              ; preds = %244
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %19, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %243, i64 noundef 104) #13
  br label %309

292:                                              ; preds = %300, %251, %245
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %19, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %20, align 4
  br label %308

296:                                              ; preds = %247
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %19, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %246, i64 noundef 136) #13
  br label %308

300:                                              ; preds = %261
  %301 = load ptr, ptr %12, align 8, !tbaa !5
  %302 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %301, ptr noundef %302)
          to label %303 unwind label %292

303:                                              ; preds = %300
  store i32 0, ptr %9, align 4
  br label %304

304:                                              ; preds = %303, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %305

305:                                              ; preds = %304, %219
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  %306 = load i32, ptr %9, align 4
  switch i32 %306, label %1663 [
    i32 0, label %307
  ]

307:                                              ; preds = %305
  br label %1655

308:                                              ; preds = %296, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %309

309:                                              ; preds = %308, %288, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %310

310:                                              ; preds = %309, %280, %276
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %311

311:                                              ; preds = %310, %272, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %312

312:                                              ; preds = %311, %232
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  br label %313

313:                                              ; preds = %312, %228
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #10
  br label %314

314:                                              ; preds = %313, %224
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %1664

315:                                              ; preds = %189
  %316 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %317 = call i32 @strcmp(ptr noundef %316, ptr noundef @.str.49) #11
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %462, label %319

319:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %30)
          to label %320 unwind label %343

320:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %321 unwind label %347

321:                                              ; preds = %320
  %322 = load ptr, ptr %8, align 8, !tbaa !5
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 0)
          to label %324 unwind label %347

324:                                              ; preds = %321
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 1)
          to label %326 unwind label %347

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 2)
          to label %328 unwind label %347

328:                                              ; preds = %326
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 0)
          to label %330 unwind label %347

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1)
          to label %332 unwind label %347

332:                                              ; preds = %330
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2)
          to label %334 unwind label %347

334:                                              ; preds = %332
  %335 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %322, ptr noundef @.str.50, ptr noundef %29, ptr noundef %323, ptr noundef %325, ptr noundef %327, ptr noundef %329, ptr noundef %331, ptr noundef %333)
          to label %336 unwind label %347

336:                                              ; preds = %334
  %337 = icmp ne i32 %335, 7
  br i1 %337, label %338, label %351

338:                                              ; preds = %336
  %339 = load ptr, ptr @stderr, align 8, !tbaa !5
  %340 = load i32, ptr %18, align 4, !tbaa !29
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %339, ptr noundef @.str.51, i32 noundef %340, ptr noundef %341) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %456

343:                                              ; preds = %319
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %19, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %20, align 4
  br label %461

347:                                              ; preds = %401, %399, %377, %375, %353, %351, %334, %332, %330, %328, %326, %324, %321, %320
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %19, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %20, align 4
  br label %460

351:                                              ; preds = %336
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 0)
          to label %353 unwind label %347

353:                                              ; preds = %351
  %354 = load double, ptr %352, align 8, !tbaa !33
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 0)
          to label %356 unwind label %347

356:                                              ; preds = %353
  %357 = load double, ptr %355, align 8, !tbaa !33
  %358 = fcmp ogt double %354, %357
  br i1 %358, label %359, label %375

359:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 0)
          to label %361 unwind label %371

361:                                              ; preds = %359
  %362 = load double, ptr %360, align 8, !tbaa !33
  store double %362, ptr %32, align 8, !tbaa !33
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 0)
          to label %364 unwind label %371

364:                                              ; preds = %361
  %365 = load double, ptr %363, align 8, !tbaa !33
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 0)
          to label %367 unwind label %371

367:                                              ; preds = %364
  store double %365, ptr %366, align 8, !tbaa !33
  %368 = load double, ptr %32, align 8, !tbaa !33
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 0)
          to label %370 unwind label %371

370:                                              ; preds = %367
  store double %368, ptr %369, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %375

371:                                              ; preds = %367, %364, %361, %359
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %19, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %460

375:                                              ; preds = %370, %356
  %376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 1)
          to label %377 unwind label %347

377:                                              ; preds = %375
  %378 = load double, ptr %376, align 8, !tbaa !33
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1)
          to label %380 unwind label %347

380:                                              ; preds = %377
  %381 = load double, ptr %379, align 8, !tbaa !33
  %382 = fcmp ogt double %378, %381
  br i1 %382, label %383, label %399

383:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 1)
          to label %385 unwind label %395

385:                                              ; preds = %383
  %386 = load double, ptr %384, align 8, !tbaa !33
  store double %386, ptr %33, align 8, !tbaa !33
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1)
          to label %388 unwind label %395

388:                                              ; preds = %385
  %389 = load double, ptr %387, align 8, !tbaa !33
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 1)
          to label %391 unwind label %395

391:                                              ; preds = %388
  store double %389, ptr %390, align 8, !tbaa !33
  %392 = load double, ptr %33, align 8, !tbaa !33
  %393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1)
          to label %394 unwind label %395

394:                                              ; preds = %391
  store double %392, ptr %393, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %399

395:                                              ; preds = %391, %388, %385, %383
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %19, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %460

399:                                              ; preds = %394, %380
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 2)
          to label %401 unwind label %347

401:                                              ; preds = %399
  %402 = load double, ptr %400, align 8, !tbaa !33
  %403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2)
          to label %404 unwind label %347

404:                                              ; preds = %401
  %405 = load double, ptr %403, align 8, !tbaa !33
  %406 = fcmp ogt double %402, %405
  br i1 %406, label %407, label %423

407:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 2)
          to label %409 unwind label %419

409:                                              ; preds = %407
  %410 = load double, ptr %408, align 8, !tbaa !33
  store double %410, ptr %34, align 8, !tbaa !33
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2)
          to label %412 unwind label %419

412:                                              ; preds = %409
  %413 = load double, ptr %411, align 8, !tbaa !33
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 2)
          to label %415 unwind label %419

415:                                              ; preds = %412
  store double %413, ptr %414, align 8, !tbaa !33
  %416 = load double, ptr %34, align 8, !tbaa !33
  %417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2)
          to label %418 unwind label %419

418:                                              ; preds = %415
  store double %416, ptr %417, align 8, !tbaa !33
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %423

419:                                              ; preds = %415, %412, %409, %407
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %19, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %460

423:                                              ; preds = %418, %404
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %424 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #12
          to label %425 unwind label %443

425:                                              ; preds = %423
  invoke void @_ZN5R3BoxC1ERK7R3PointS2_(ptr noundef nonnull align 8 dereferenceable(56) %424, ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %426 unwind label %447

426:                                              ; preds = %425
  store ptr %424, ptr %35, align 8, !tbaa !5
  %427 = load i32, ptr %16, align 4, !tbaa !29
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !5
  %431 = load i32, ptr %29, align 4, !tbaa !29
  %432 = load i32, ptr %16, align 4, !tbaa !29
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %433
  %435 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %430, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %431, ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %436 unwind label %443

436:                                              ; preds = %426
  %437 = icmp ne i32 %435, 0
  br i1 %437, label %451, label %438

438:                                              ; preds = %436
  %439 = load ptr, ptr @stderr, align 8, !tbaa !5
  %440 = load i32, ptr %18, align 4, !tbaa !29
  %441 = load ptr, ptr %6, align 8, !tbaa !5
  %442 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %439, ptr noundef @.str.48, i32 noundef %440, ptr noundef %441) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %455

443:                                              ; preds = %451, %426, %423
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %19, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %20, align 4
  br label %459

447:                                              ; preds = %425
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %19, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %424, i64 noundef 56) #13
  br label %459

451:                                              ; preds = %436
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = load ptr, ptr %35, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %452, ptr noundef %453)
          to label %454 unwind label %443

454:                                              ; preds = %451
  store i32 0, ptr %9, align 4
  br label %455

455:                                              ; preds = %454, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %456

456:                                              ; preds = %455, %338
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  %457 = load i32, ptr %9, align 4
  switch i32 %457, label %1663 [
    i32 0, label %458
  ]

458:                                              ; preds = %456
  br label %1654

459:                                              ; preds = %447, %443
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %460

460:                                              ; preds = %459, %419, %395, %371, %347
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  br label %461

461:                                              ; preds = %460, %343
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %1664

462:                                              ; preds = %315
  %463 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %464 = call i32 @strcmp(ptr noundef %463, ptr noundef @.str.52) #11
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %531, label %466

466:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %467 unwind label %483

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %37, i32 noundef 0)
          to label %470 unwind label %487

470:                                              ; preds = %467
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %37, i32 noundef 1)
          to label %472 unwind label %487

472:                                              ; preds = %470
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %37, i32 noundef 2)
          to label %474 unwind label %487

474:                                              ; preds = %472
  %475 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %468, ptr noundef @.str.53, ptr noundef %36, ptr noundef %469, ptr noundef %471, ptr noundef %473, ptr noundef %38)
          to label %476 unwind label %487

476:                                              ; preds = %474
  %477 = icmp ne i32 %475, 5
  br i1 %477, label %478, label %491

478:                                              ; preds = %476
  %479 = load ptr, ptr @stderr, align 8, !tbaa !5
  %480 = load i32, ptr %18, align 4, !tbaa !29
  %481 = load ptr, ptr %6, align 8, !tbaa !5
  %482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %479, ptr noundef @.str.54, i32 noundef %480, ptr noundef %481) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %525

483:                                              ; preds = %466
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %19, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %20, align 4
  br label %530

487:                                              ; preds = %474, %472, %470, %467
  %488 = landingpad { ptr, i32 }
          cleanup
  %489 = extractvalue { ptr, i32 } %488, 0
  store ptr %489, ptr %19, align 8
  %490 = extractvalue { ptr, i32 } %488, 1
  store i32 %490, ptr %20, align 4
  br label %529

491:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %492 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 40) #12
          to label %493 unwind label %512

493:                                              ; preds = %491
  %494 = load double, ptr %38, align 8, !tbaa !33
  invoke void @_ZN8R3SphereC1ERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(40) %492, ptr noundef nonnull align 8 dereferenceable(24) %37, double noundef %494)
          to label %495 unwind label %516

495:                                              ; preds = %493
  store ptr %492, ptr %39, align 8, !tbaa !5
  %496 = load i32, ptr %16, align 4, !tbaa !29
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %497
  %499 = load ptr, ptr %498, align 8, !tbaa !5
  %500 = load i32, ptr %36, align 4, !tbaa !29
  %501 = load i32, ptr %16, align 4, !tbaa !29
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %502
  %504 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %499, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %500, ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %505 unwind label %512

505:                                              ; preds = %495
  %506 = icmp ne i32 %504, 0
  br i1 %506, label %520, label %507

507:                                              ; preds = %505
  %508 = load ptr, ptr @stderr, align 8, !tbaa !5
  %509 = load i32, ptr %18, align 4, !tbaa !29
  %510 = load ptr, ptr %6, align 8, !tbaa !5
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %508, ptr noundef @.str.48, i32 noundef %509, ptr noundef %510) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %524

512:                                              ; preds = %520, %495, %491
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %19, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %20, align 4
  br label %528

516:                                              ; preds = %493
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %19, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %492, i64 noundef 40) #13
  br label %528

520:                                              ; preds = %505
  %521 = load ptr, ptr %12, align 8, !tbaa !5
  %522 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %521, ptr noundef %522)
          to label %523 unwind label %512

523:                                              ; preds = %520
  store i32 0, ptr %9, align 4
  br label %524

524:                                              ; preds = %523, %507
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %525

525:                                              ; preds = %524, %478
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  %526 = load i32, ptr %9, align 4
  switch i32 %526, label %1663 [
    i32 0, label %527
  ]

527:                                              ; preds = %525
  br label %1653

528:                                              ; preds = %516, %512
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %529

529:                                              ; preds = %528, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %530

530:                                              ; preds = %529, %483
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1664

531:                                              ; preds = %462
  %532 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %533 = call i32 @strcmp(ptr noundef %532, ptr noundef @.str.55) #11
  %534 = icmp ne i32 %533, 0
  br i1 %534, label %618, label %535

535:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %536 unwind label %552

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %41, i32 noundef 0)
          to label %539 unwind label %556

539:                                              ; preds = %536
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %41, i32 noundef 1)
          to label %541 unwind label %556

541:                                              ; preds = %539
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %41, i32 noundef 2)
          to label %543 unwind label %556

543:                                              ; preds = %541
  %544 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %537, ptr noundef @.str.56, ptr noundef %40, ptr noundef %538, ptr noundef %540, ptr noundef %542, ptr noundef %42, ptr noundef %43)
          to label %545 unwind label %556

545:                                              ; preds = %543
  %546 = icmp ne i32 %544, 6
  br i1 %546, label %547, label %560

547:                                              ; preds = %545
  %548 = load ptr, ptr @stderr, align 8, !tbaa !5
  %549 = load i32, ptr %18, align 4, !tbaa !29
  %550 = load ptr, ptr %6, align 8, !tbaa !5
  %551 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %548, ptr noundef @.str.57, i32 noundef %549, ptr noundef %550) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %610

552:                                              ; preds = %535
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %19, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %20, align 4
  br label %617

556:                                              ; preds = %543, %541, %539, %536
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %19, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %20, align 4
  br label %616

560:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #10
  %561 = load double, ptr %43, align 8, !tbaa !33
  %562 = fmul double 5.000000e-01, %561
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %45, double noundef %562, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %563 unwind label %589

563:                                              ; preds = %560
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %44, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %45)
          to label %564 unwind label %589

564:                                              ; preds = %563
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #10
  %565 = load double, ptr %43, align 8, !tbaa !33
  %566 = fmul double 5.000000e-01, %565
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %47, double noundef %566, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %567 unwind label %593

567:                                              ; preds = %564
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %46, ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %568 unwind label %593

568:                                              ; preds = %567
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %569 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 232) #12
          to label %570 unwind label %597

570:                                              ; preds = %568
  %571 = load double, ptr %42, align 8, !tbaa !33
  invoke void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232) %569, ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %46, double noundef %571)
          to label %572 unwind label %601

572:                                              ; preds = %570
  store ptr %569, ptr %48, align 8, !tbaa !5
  %573 = load i32, ptr %16, align 4, !tbaa !29
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %574
  %576 = load ptr, ptr %575, align 8, !tbaa !5
  %577 = load i32, ptr %40, align 4, !tbaa !29
  %578 = load i32, ptr %16, align 4, !tbaa !29
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %579
  %581 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %576, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %577, ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %582 unwind label %597

582:                                              ; preds = %572
  %583 = icmp ne i32 %581, 0
  br i1 %583, label %605, label %584

584:                                              ; preds = %582
  %585 = load ptr, ptr @stderr, align 8, !tbaa !5
  %586 = load i32, ptr %18, align 4, !tbaa !29
  %587 = load ptr, ptr %6, align 8, !tbaa !5
  %588 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %585, ptr noundef @.str.48, i32 noundef %586, ptr noundef %587) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %609

589:                                              ; preds = %563, %560
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %19, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #10
  br label %615

593:                                              ; preds = %567, %564
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %19, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #10
  br label %614

597:                                              ; preds = %605, %572, %568
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %19, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %20, align 4
  br label %613

601:                                              ; preds = %570
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %19, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %569, i64 noundef 232) #13
  br label %613

605:                                              ; preds = %582
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %606, ptr noundef %607)
          to label %608 unwind label %597

608:                                              ; preds = %605
  store i32 0, ptr %9, align 4
  br label %609

609:                                              ; preds = %608, %584
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #10
  br label %610

610:                                              ; preds = %609, %547
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  %611 = load i32, ptr %9, align 4
  switch i32 %611, label %1663 [
    i32 0, label %612
  ]

612:                                              ; preds = %610
  br label %1652

613:                                              ; preds = %601, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %614

614:                                              ; preds = %613, %593
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  br label %615

615:                                              ; preds = %614, %589
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #10
  br label %616

616:                                              ; preds = %615, %556
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %617

617:                                              ; preds = %616, %552
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %1664

618:                                              ; preds = %531
  %619 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %620 = call i32 @strcmp(ptr noundef %619, ptr noundef @.str.58) #11
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %705, label %622

622:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %50)
          to label %623 unwind label %639

623:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %624 = load ptr, ptr %8, align 8, !tbaa !5
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %50, i32 noundef 0)
          to label %626 unwind label %643

626:                                              ; preds = %623
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %50, i32 noundef 1)
          to label %628 unwind label %643

628:                                              ; preds = %626
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %50, i32 noundef 2)
          to label %630 unwind label %643

630:                                              ; preds = %628
  %631 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %624, ptr noundef @.str.56, ptr noundef %49, ptr noundef %625, ptr noundef %627, ptr noundef %629, ptr noundef %51, ptr noundef %52)
          to label %632 unwind label %643

632:                                              ; preds = %630
  %633 = icmp ne i32 %631, 6
  br i1 %633, label %634, label %647

634:                                              ; preds = %632
  %635 = load ptr, ptr @stderr, align 8, !tbaa !5
  %636 = load i32, ptr %18, align 4, !tbaa !29
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  %638 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %635, ptr noundef @.str.59, i32 noundef %636, ptr noundef %637) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %697

639:                                              ; preds = %622
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %19, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %20, align 4
  br label %704

643:                                              ; preds = %630, %628, %626, %623
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %19, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %20, align 4
  br label %703

647:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #10
  %648 = load double, ptr %52, align 8, !tbaa !33
  %649 = fmul double 5.000000e-01, %648
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %54, double noundef %649, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %650 unwind label %676

650:                                              ; preds = %647
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %53, ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %54)
          to label %651 unwind label %676

651:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #10
  %652 = load double, ptr %52, align 8, !tbaa !33
  %653 = fmul double 5.000000e-01, %652
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Vector) align 8 %56, double noundef %653, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %654 unwind label %680

654:                                              ; preds = %651
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind writable sret(%class.R3Point) align 8 %55, ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %56)
          to label %655 unwind label %680

655:                                              ; preds = %654
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %656 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 160) #12
          to label %657 unwind label %684

657:                                              ; preds = %655
  %658 = load double, ptr %51, align 8, !tbaa !33
  invoke void @_ZN6R3ConeC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(160) %656, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %55, double noundef %658)
          to label %659 unwind label %688

659:                                              ; preds = %657
  store ptr %656, ptr %57, align 8, !tbaa !5
  %660 = load i32, ptr %16, align 4, !tbaa !29
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %661
  %663 = load ptr, ptr %662, align 8, !tbaa !5
  %664 = load i32, ptr %49, align 4, !tbaa !29
  %665 = load i32, ptr %16, align 4, !tbaa !29
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %666
  %668 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %663, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %664, ptr noundef nonnull align 8 dereferenceable(8) %667, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %669 unwind label %684

669:                                              ; preds = %659
  %670 = icmp ne i32 %668, 0
  br i1 %670, label %692, label %671

671:                                              ; preds = %669
  %672 = load ptr, ptr @stderr, align 8, !tbaa !5
  %673 = load i32, ptr %18, align 4, !tbaa !29
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %672, ptr noundef @.str.48, i32 noundef %673, ptr noundef %674) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %696

676:                                              ; preds = %650, %647
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %19, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  br label %702

680:                                              ; preds = %654, %651
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %19, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #10
  br label %701

684:                                              ; preds = %692, %659, %655
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %19, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %20, align 4
  br label %700

688:                                              ; preds = %657
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %19, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %656, i64 noundef 160) #13
  br label %700

692:                                              ; preds = %669
  %693 = load ptr, ptr %12, align 8, !tbaa !5
  %694 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %693, ptr noundef %694)
          to label %695 unwind label %684

695:                                              ; preds = %692
  store i32 0, ptr %9, align 4
  br label %696

696:                                              ; preds = %695, %671
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #10
  br label %697

697:                                              ; preds = %696, %634
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  %698 = load i32, ptr %9, align 4
  switch i32 %698, label %1663 [
    i32 0, label %699
  ]

699:                                              ; preds = %697
  br label %1651

700:                                              ; preds = %688, %684
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %701

701:                                              ; preds = %700, %680
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #10
  br label %702

702:                                              ; preds = %701, %676
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #10
  br label %703

703:                                              ; preds = %702, %643
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  br label %704

704:                                              ; preds = %703, %639
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %1664

705:                                              ; preds = %618
  %706 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %707 = call i32 @strcmp(ptr noundef %706, ptr noundef @.str.60) #11
  %708 = icmp ne i32 %707, 0
  br i1 %708, label %777, label %709

709:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  call void @llvm.lifetime.start.p0(i64 256, ptr %59) #10
  %710 = load ptr, ptr %8, align 8, !tbaa !5
  %711 = getelementptr inbounds [256 x i8], ptr %59, i64 0, i64 0
  %712 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %710, ptr noundef @.str.61, ptr noundef %58, ptr noundef %711)
          to label %713 unwind label %720

713:                                              ; preds = %709
  %714 = icmp ne i32 %712, 2
  br i1 %714, label %715, label %724

715:                                              ; preds = %713
  %716 = load ptr, ptr @stderr, align 8, !tbaa !5
  %717 = load i32, ptr %18, align 4, !tbaa !29
  %718 = load ptr, ptr %6, align 8, !tbaa !5
  %719 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %716, ptr noundef @.str.62, i32 noundef %717, ptr noundef %718) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %773

720:                                              ; preds = %709
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %19, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %20, align 4
  br label %776

724:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 2048, ptr %60) #10
  %725 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  %726 = load ptr, ptr %6, align 8, !tbaa !5
  %727 = call ptr @strcpy(ptr noundef %725, ptr noundef %726) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %728 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  %729 = call noundef ptr @strrchr(ptr noundef %728, i32 noundef 47) #11
  store ptr %729, ptr %61, align 8, !tbaa !5
  %730 = load ptr, ptr %61, align 8, !tbaa !5
  %731 = icmp ne ptr %730, null
  br i1 %731, label %732, label %735

732:                                              ; preds = %724
  %733 = load ptr, ptr %61, align 8, !tbaa !5
  %734 = getelementptr inbounds i8, ptr %733, i64 1
  store i8 0, ptr %734, align 1, !tbaa !30
  br label %737

735:                                              ; preds = %724
  %736 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  store i8 0, ptr %736, align 16, !tbaa !30
  br label %737

737:                                              ; preds = %735, %732
  %738 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  %739 = getelementptr inbounds [256 x i8], ptr %59, i64 0, i64 0
  %740 = call ptr @strcat(ptr noundef %738, ptr noundef %739) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %741 = getelementptr inbounds [2048 x i8], ptr %60, i64 0, i64 0
  %742 = invoke noundef ptr @_ZL8ReadMeshPKc(ptr noundef %741)
          to label %743 unwind label %747

743:                                              ; preds = %737
  store ptr %742, ptr %62, align 8, !tbaa !5
  %744 = load ptr, ptr %62, align 8, !tbaa !5
  %745 = icmp ne ptr %744, null
  br i1 %745, label %751, label %746

746:                                              ; preds = %743
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %772

747:                                              ; preds = %768, %751, %737
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %19, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %60) #10
  br label %776

751:                                              ; preds = %743
  %752 = load i32, ptr %16, align 4, !tbaa !29
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %753
  %755 = load ptr, ptr %754, align 8, !tbaa !5
  %756 = load i32, ptr %58, align 4, !tbaa !29
  %757 = load i32, ptr %16, align 4, !tbaa !29
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %758
  %760 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %755, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %756, ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %761 unwind label %747

761:                                              ; preds = %751
  %762 = icmp ne i32 %760, 0
  br i1 %762, label %768, label %763

763:                                              ; preds = %761
  %764 = load ptr, ptr @stderr, align 8, !tbaa !5
  %765 = load i32, ptr %18, align 4, !tbaa !29
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %764, ptr noundef @.str.48, i32 noundef %765, ptr noundef %766) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %772

768:                                              ; preds = %761
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  %770 = load ptr, ptr %62, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %769, ptr noundef %770)
          to label %771 unwind label %747

771:                                              ; preds = %768
  store i32 0, ptr %9, align 4
  br label %772

772:                                              ; preds = %771, %763, %746
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %60) #10
  br label %773

773:                                              ; preds = %772, %715
  call void @llvm.lifetime.end.p0(i64 256, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  %774 = load i32, ptr %9, align 4
  switch i32 %774, label %1663 [
    i32 0, label %775
  ]

775:                                              ; preds = %773
  br label %1650

776:                                              ; preds = %747, %720
  call void @llvm.lifetime.end.p0(i64 256, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %1664

777:                                              ; preds = %705
  %778 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %779 = call i32 @strcmp(ptr noundef %778, ptr noundef @.str.63) #11
  %780 = icmp ne i32 %779, 0
  br i1 %780, label %852, label %781

781:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %782 = load ptr, ptr %8, align 8, !tbaa !5
  %783 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %782, ptr noundef @.str.50, ptr noundef %63, ptr noundef %64, ptr noundef %65, ptr noundef %66, ptr noundef %67, ptr noundef %68, ptr noundef %69)
          to label %784 unwind label %791

784:                                              ; preds = %781
  %785 = icmp ne i32 %783, 7
  br i1 %785, label %786, label %795

786:                                              ; preds = %784
  %787 = load ptr, ptr @stderr, align 8, !tbaa !5
  %788 = load i32, ptr %18, align 4, !tbaa !29
  %789 = load ptr, ptr %6, align 8, !tbaa !5
  %790 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %787, ptr noundef @.str.64, i32 noundef %788, ptr noundef %789) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %845

791:                                              ; preds = %781
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %19, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %20, align 4
  br label %851

795:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 24, ptr %70) #10
  %796 = load double, ptr %64, align 8, !tbaa !33
  %797 = load double, ptr %65, align 8, !tbaa !33
  %798 = load double, ptr %66, align 8, !tbaa !33
  invoke void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %70, double noundef %796, double noundef %797, double noundef %798)
          to label %799 unwind label %824

799:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #10
  %800 = load double, ptr %67, align 8, !tbaa !33
  %801 = load double, ptr %68, align 8, !tbaa !33
  %802 = load double, ptr %69, align 8, !tbaa !33
  invoke void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %71, double noundef %800, double noundef %801, double noundef %802)
          to label %803 unwind label %828

803:                                              ; preds = %799
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %804 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 232) #12
          to label %805 unwind label %832

805:                                              ; preds = %803
  %806 = load double, ptr @RN_BIG_EPSILON, align 8, !tbaa !33
  invoke void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232) %804, ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %71, double noundef %806)
          to label %807 unwind label %836

807:                                              ; preds = %805
  store ptr %804, ptr %72, align 8, !tbaa !5
  %808 = load i32, ptr %16, align 4, !tbaa !29
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %809
  %811 = load ptr, ptr %810, align 8, !tbaa !5
  %812 = load i32, ptr %63, align 4, !tbaa !29
  %813 = load i32, ptr %16, align 4, !tbaa !29
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %814
  %816 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef %137, ptr noundef %811, ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %812, ptr noundef nonnull align 8 dereferenceable(8) %815, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %817 unwind label %832

817:                                              ; preds = %807
  %818 = icmp ne i32 %816, 0
  br i1 %818, label %840, label %819

819:                                              ; preds = %817
  %820 = load ptr, ptr @stderr, align 8, !tbaa !5
  %821 = load i32, ptr %18, align 4, !tbaa !29
  %822 = load ptr, ptr %6, align 8, !tbaa !5
  %823 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %820, ptr noundef @.str.48, i32 noundef %821, ptr noundef %822) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %844

824:                                              ; preds = %795
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %19, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %20, align 4
  br label %850

828:                                              ; preds = %799
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %19, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %20, align 4
  br label %849

832:                                              ; preds = %840, %807, %803
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %19, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %20, align 4
  br label %848

836:                                              ; preds = %805
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %19, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %804, i64 noundef 232) #13
  br label %848

840:                                              ; preds = %817
  %841 = load ptr, ptr %12, align 8, !tbaa !5
  %842 = load ptr, ptr %72, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %841, ptr noundef %842)
          to label %843 unwind label %832

843:                                              ; preds = %840
  store i32 0, ptr %9, align 4
  br label %844

844:                                              ; preds = %843, %819
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %70) #10
  br label %845

845:                                              ; preds = %844, %786
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  %846 = load i32, ptr %9, align 4
  switch i32 %846, label %1663 [
    i32 0, label %847
  ]

847:                                              ; preds = %845
  br label %1649

848:                                              ; preds = %836, %832
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %849

849:                                              ; preds = %848, %828
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #10
  br label %850

850:                                              ; preds = %849, %824
  call void @llvm.lifetime.end.p0(i64 24, ptr %70) #10
  br label %851

851:                                              ; preds = %850, %791
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %1664

852:                                              ; preds = %777
  %853 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %854 = call i32 @strcmp(ptr noundef %853, ptr noundef @.str.65) #11
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %856, label %860

856:                                              ; preds = %852
  %857 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %858 = call i32 @strcmp(ptr noundef %857, ptr noundef @.str.66) #11
  %859 = icmp ne i32 %858, 0
  br i1 %859, label %969, label %860

860:                                              ; preds = %856, %852
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr %74) #10
  call void @llvm.lifetime.start.p0(i64 4096, ptr %75) #10
  call void @llvm.memset.p0.i64(ptr align 16 %75, i8 0, i64 4096, i1 false)
  %861 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %862 = call i32 @strcmp(ptr noundef %861, ptr noundef @.str.66) #11
  %863 = icmp ne i32 %862, 0
  br i1 %863, label %873, label %864

864:                                              ; preds = %860
  %865 = load ptr, ptr %8, align 8, !tbaa !5
  %866 = getelementptr inbounds [4096 x i8], ptr %75, i64 0, i64 0
  %867 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %865, ptr noundef @.str.44, ptr noundef %866)
          to label %868 unwind label %869

868:                                              ; preds = %864
  br label %873

869:                                              ; preds = %907, %902, %873, %864
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %19, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %20, align 4
  br label %968

873:                                              ; preds = %868, %860
  %874 = load ptr, ptr %8, align 8, !tbaa !5
  %875 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 0
  %876 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 1
  %877 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 2
  %878 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 3
  %879 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 4
  %880 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 5
  %881 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 6
  %882 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 7
  %883 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 8
  %884 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 9
  %885 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 10
  %886 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 11
  %887 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 12
  %888 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 13
  %889 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 14
  %890 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 15
  %891 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %874, ptr noundef @.str.67, ptr noundef %73, ptr noundef %875, ptr noundef %876, ptr noundef %877, ptr noundef %878, ptr noundef %879, ptr noundef %880, ptr noundef %881, ptr noundef %882, ptr noundef %883, ptr noundef %884, ptr noundef %885, ptr noundef %886, ptr noundef %887, ptr noundef %888, ptr noundef %889, ptr noundef %890)
          to label %892 unwind label %869

892:                                              ; preds = %873
  %893 = icmp ne i32 %891, 17
  br i1 %893, label %894, label %899

894:                                              ; preds = %892
  %895 = load ptr, ptr @stderr, align 8, !tbaa !5
  %896 = load i32, ptr %18, align 4, !tbaa !29
  %897 = load ptr, ptr %6, align 8, !tbaa !5
  %898 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %895, ptr noundef @.str.68, i32 noundef %896, ptr noundef %897) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %955

899:                                              ; preds = %892
  %900 = load i32, ptr %73, align 4, !tbaa !29
  %901 = icmp sge i32 %900, 0
  br i1 %901, label %902, label %914

902:                                              ; preds = %899
  %903 = load i32, ptr %73, align 4, !tbaa !29
  %904 = invoke noundef i32 @_ZNK8RNVArray8NEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %905 unwind label %869

905:                                              ; preds = %902
  %906 = icmp slt i32 %903, %904
  br i1 %906, label %907, label %912

907:                                              ; preds = %905
  %908 = load i32, ptr %73, align 4, !tbaa !29
  %909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7RNArrayIP10R3MaterialEixEi(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %908)
          to label %910 unwind label %869

910:                                              ; preds = %907
  %911 = load ptr, ptr %909, align 8, !tbaa !5
  store ptr %911, ptr %11, align 8, !tbaa !5
  br label %913

912:                                              ; preds = %905
  store ptr null, ptr %11, align 8, !tbaa !5
  br label %913

913:                                              ; preds = %912, %910
  br label %914

914:                                              ; preds = %913, %899
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %915 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #12
          to label %916 unwind label %925

916:                                              ; preds = %914
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %915, ptr noundef %137)
          to label %917 unwind label %929

917:                                              ; preds = %916
  store ptr %915, ptr %76, align 8, !tbaa !5
  %918 = getelementptr inbounds [4096 x i8], ptr %75, i64 0, i64 0
  %919 = load i8, ptr %918, align 16, !tbaa !30
  %920 = icmp ne i8 %919, 0
  br i1 %920, label %921, label %933

921:                                              ; preds = %917
  %922 = load ptr, ptr %76, align 8, !tbaa !5
  %923 = getelementptr inbounds [4096 x i8], ptr %75, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %922, ptr noundef %923)
          to label %924 unwind label %925

924:                                              ; preds = %921
  br label %933

925:                                              ; preds = %938, %921, %914
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %19, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %20, align 4
  br label %967

929:                                              ; preds = %916
  %930 = landingpad { ptr, i32 }
          cleanup
  %931 = extractvalue { ptr, i32 } %930, 0
  store ptr %931, ptr %19, align 8
  %932 = extractvalue { ptr, i32 } %930, 1
  store i32 %932, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %915, i64 noundef 432) #13
  br label %967

933:                                              ; preds = %924, %917
  %934 = load ptr, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 272, ptr %77) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr %78) #10
  %935 = getelementptr inbounds [16 x double], ptr %74, i64 0, i64 0
  invoke void @_ZN8R4MatrixC1EPKd(ptr noundef nonnull align 8 dereferenceable(128) %78, ptr noundef %935)
          to label %936 unwind label %958

936:                                              ; preds = %933
  invoke void @_ZN8R3AffineC1ERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272) %77, ptr noundef nonnull align 8 dereferenceable(128) %78, i32 noundef 0)
          to label %937 unwind label %958

937:                                              ; preds = %936
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %934, ptr noundef nonnull align 8 dereferenceable(272) %77)
          to label %938 unwind label %962

938:                                              ; preds = %937
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %77) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr %77) #10
  %939 = load i32, ptr %16, align 4, !tbaa !29
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %940
  %942 = load ptr, ptr %941, align 8, !tbaa !5
  %943 = load ptr, ptr %76, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %942, ptr noundef %943)
          to label %944 unwind label %925

944:                                              ; preds = %938
  %945 = load i32, ptr %16, align 4, !tbaa !29
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %16, align 4, !tbaa !29
  %947 = load ptr, ptr %76, align 8, !tbaa !5
  %948 = load i32, ptr %16, align 4, !tbaa !29
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %949
  store ptr %947, ptr %950, align 8, !tbaa !5
  %951 = load ptr, ptr %11, align 8, !tbaa !5
  %952 = load i32, ptr %16, align 4, !tbaa !29
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds [1024 x ptr], ptr %15, i64 0, i64 %953
  store ptr %951, ptr %954, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  store i32 0, ptr %9, align 4
  br label %955

955:                                              ; preds = %944, %894
  call void @llvm.lifetime.end.p0(i64 4096, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  %956 = load i32, ptr %9, align 4
  switch i32 %956, label %1663 [
    i32 0, label %957
  ]

957:                                              ; preds = %955
  br label %1648

958:                                              ; preds = %936, %933
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %19, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %20, align 4
  br label %966

962:                                              ; preds = %937
  %963 = landingpad { ptr, i32 }
          cleanup
  %964 = extractvalue { ptr, i32 } %963, 0
  store ptr %964, ptr %19, align 8
  %965 = extractvalue { ptr, i32 } %963, 1
  store i32 %965, ptr %20, align 4
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %77) #10
  br label %966

966:                                              ; preds = %962, %958
  call void @llvm.lifetime.end.p0(i64 128, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 272, ptr %77) #10
  br label %967

967:                                              ; preds = %966, %929, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %968

968:                                              ; preds = %967, %869
  call void @llvm.lifetime.end.p0(i64 4096, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  br label %1664

969:                                              ; preds = %856
  %970 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %971 = call i32 @strcmp(ptr noundef %970, ptr noundef @.str.69) #11
  %972 = icmp ne i32 %971, 0
  br i1 %972, label %984, label %973

973:                                              ; preds = %969
  %974 = load i32, ptr %16, align 4, !tbaa !29
  %975 = icmp sle i32 %974, 0
  br i1 %975, label %976, label %981

976:                                              ; preds = %973
  %977 = load ptr, ptr @stderr, align 8, !tbaa !5
  %978 = load i32, ptr %18, align 4, !tbaa !29
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  %980 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %977, ptr noundef @.str.70, i32 noundef %978, ptr noundef %979) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1663

981:                                              ; preds = %973
  %982 = load i32, ptr %16, align 4, !tbaa !29
  %983 = add nsw i32 %982, -1
  store i32 %983, ptr %16, align 4, !tbaa !29
  br label %1647

984:                                              ; preds = %969
  %985 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %986 = call i32 @strcmp(ptr noundef %985, ptr noundef @.str.71) #11
  %987 = icmp ne i32 %986, 0
  br i1 %987, label %1163, label %988

988:                                              ; preds = %984
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %989 unwind label %1034

989:                                              ; preds = %988
  call void @llvm.lifetime.start.p0(i64 24, ptr %80) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %80)
          to label %990 unwind label %1038

990:                                              ; preds = %989
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %81)
          to label %991 unwind label %1042

991:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 24, ptr %82) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %82)
          to label %992 unwind label %1046

992:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %993 unwind label %1050

993:                                              ; preds = %992
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.start.p0(i64 256, ptr %86) #10
  %994 = load ptr, ptr %8, align 8, !tbaa !5
  %995 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 0)
          to label %996 unwind label %1054

996:                                              ; preds = %993
  %997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 1)
          to label %998 unwind label %1054

998:                                              ; preds = %996
  %999 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 2)
          to label %1000 unwind label %1054

1000:                                             ; preds = %998
  %1001 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %80, i32 noundef 0)
          to label %1002 unwind label %1054

1002:                                             ; preds = %1000
  %1003 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %80, i32 noundef 1)
          to label %1004 unwind label %1054

1004:                                             ; preds = %1002
  %1005 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %80, i32 noundef 2)
          to label %1006 unwind label %1054

1006:                                             ; preds = %1004
  %1007 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %81, i32 noundef 0)
          to label %1008 unwind label %1054

1008:                                             ; preds = %1006
  %1009 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %81, i32 noundef 1)
          to label %1010 unwind label %1054

1010:                                             ; preds = %1008
  %1011 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %81, i32 noundef 2)
          to label %1012 unwind label %1054

1012:                                             ; preds = %1010
  %1013 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %82, i32 noundef 0)
          to label %1014 unwind label %1054

1014:                                             ; preds = %1012
  %1015 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %82, i32 noundef 1)
          to label %1016 unwind label %1054

1016:                                             ; preds = %1014
  %1017 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %82, i32 noundef 2)
          to label %1018 unwind label %1054

1018:                                             ; preds = %1016
  %1019 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 0)
          to label %1020 unwind label %1054

1020:                                             ; preds = %1018
  %1021 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 1)
          to label %1022 unwind label %1054

1022:                                             ; preds = %1020
  %1023 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 2)
          to label %1024 unwind label %1054

1024:                                             ; preds = %1022
  %1025 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  %1026 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %994, ptr noundef @.str.72, ptr noundef %995, ptr noundef %997, ptr noundef %999, ptr noundef %1001, ptr noundef %1003, ptr noundef %1005, ptr noundef %1007, ptr noundef %1009, ptr noundef %1011, ptr noundef %1013, ptr noundef %1015, ptr noundef %1017, ptr noundef %1019, ptr noundef %1021, ptr noundef %1023, ptr noundef %84, ptr noundef %85, ptr noundef %1025)
          to label %1027 unwind label %1054

1027:                                             ; preds = %1024
  %1028 = icmp ne i32 %1026, 18
  br i1 %1028, label %1029, label %1058

1029:                                             ; preds = %1027
  %1030 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1031 = load i32, ptr %18, align 4, !tbaa !29
  %1032 = load ptr, ptr %6, align 8, !tbaa !5
  %1033 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1030, ptr noundef @.str.73, i32 noundef %1031, ptr noundef %1032) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1143

1034:                                             ; preds = %988
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %19, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %20, align 4
  br label %1162

1038:                                             ; preds = %989
  %1039 = landingpad { ptr, i32 }
          cleanup
  %1040 = extractvalue { ptr, i32 } %1039, 0
  store ptr %1040, ptr %19, align 8
  %1041 = extractvalue { ptr, i32 } %1039, 1
  store i32 %1041, ptr %20, align 4
  br label %1161

1042:                                             ; preds = %990
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %19, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %20, align 4
  br label %1160

1046:                                             ; preds = %991
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %19, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %20, align 4
  br label %1159

1050:                                             ; preds = %992
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %19, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %20, align 4
  br label %1158

1054:                                             ; preds = %1024, %1022, %1020, %1018, %1016, %1014, %1012, %1010, %1008, %1006, %1004, %1002, %1000, %998, %996, %993
  %1055 = landingpad { ptr, i32 }
          cleanup
  %1056 = extractvalue { ptr, i32 } %1055, 0
  store ptr %1056, ptr %19, align 8
  %1057 = extractvalue { ptr, i32 } %1055, 1
  store i32 %1057, ptr %20, align 4
  br label %1157

1058:                                             ; preds = %1027
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  %1059 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 184) #12
          to label %1060 unwind label %1080

1060:                                             ; preds = %1058
  %1061 = load double, ptr %84, align 8, !tbaa !33
  %1062 = load double, ptr %85, align 8, !tbaa !33
  invoke void @_ZN6R3BrdfC1ERK5RNRgbS2_S2_S2_S2_ddPKc(ptr noundef nonnull align 8 dereferenceable(180) %1059, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 8 dereferenceable(24) %83, double noundef %1061, double noundef %1062, ptr noundef null)
          to label %1063 unwind label %1084

1063:                                             ; preds = %1060
  store ptr %1059, ptr %87, align 8, !tbaa !5
  %1064 = load ptr, ptr %87, align 8, !tbaa !5
  invoke void @_ZN7R3Scene10InsertBrdfEP6R3Brdf(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1064)
          to label %1065 unwind label %1080

1065:                                             ; preds = %1063
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  store ptr null, ptr %88, align 8, !tbaa !5
  %1066 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  %1067 = call i32 @strcmp(ptr noundef %1066, ptr noundef @.str.74) #11
  %1068 = icmp ne i32 %1067, 0
  br i1 %1068, label %1069, label %1131

1069:                                             ; preds = %1065
  call void @llvm.lifetime.start.p0(i64 2048, ptr %89) #10
  %1070 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %1071 = load ptr, ptr %6, align 8, !tbaa !5
  %1072 = call ptr @strcpy(ptr noundef %1070, ptr noundef %1071) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  %1073 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %1074 = call noundef ptr @strrchr(ptr noundef %1073, i32 noundef 47) #11
  store ptr %1074, ptr %90, align 8, !tbaa !5
  %1075 = load ptr, ptr %90, align 8, !tbaa !5
  %1076 = icmp ne ptr %1075, null
  br i1 %1076, label %1077, label %1088

1077:                                             ; preds = %1069
  %1078 = load ptr, ptr %90, align 8, !tbaa !5
  %1079 = getelementptr inbounds i8, ptr %1078, i64 1
  store i8 0, ptr %1079, align 1, !tbaa !30
  br label %1090

1080:                                             ; preds = %1063, %1058
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %19, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %20, align 4
  br label %1156

1084:                                             ; preds = %1060
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %19, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1059, i64 noundef 184) #13
  br label %1156

1088:                                             ; preds = %1069
  %1089 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  store i8 0, ptr %1089, align 16, !tbaa !30
  br label %1090

1090:                                             ; preds = %1088, %1077
  %1091 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %1092 = getelementptr inbounds [256 x i8], ptr %86, i64 0, i64 0
  %1093 = call ptr @strcat(ptr noundef %1091, ptr noundef %1092) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  %1094 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #12
          to label %1095 unwind label %1108

1095:                                             ; preds = %1090
  invoke void @_ZN7R2ImageC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %1094)
          to label %1096 unwind label %1112

1096:                                             ; preds = %1095
  store ptr %1094, ptr %91, align 8, !tbaa !5
  %1097 = load ptr, ptr %91, align 8, !tbaa !5
  %1098 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %1099 = invoke noundef i32 @_ZN7R2Image4ReadEPKc(ptr noundef nonnull align 8 dereferenceable(24) %1097, ptr noundef %1098)
          to label %1100 unwind label %1108

1100:                                             ; preds = %1096
  %1101 = icmp ne i32 %1099, 0
  br i1 %1101, label %1116, label %1102

1102:                                             ; preds = %1100
  %1103 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1104 = getelementptr inbounds [2048 x i8], ptr %89, i64 0, i64 0
  %1105 = load i32, ptr %18, align 4, !tbaa !29
  %1106 = load ptr, ptr %6, align 8, !tbaa !5
  %1107 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1103, ptr noundef @.str.75, ptr noundef %1104, i32 noundef %1105, ptr noundef %1106) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1123

1108:                                             ; preds = %1120, %1116, %1096, %1090
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %19, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %20, align 4
  br label %1130

1112:                                             ; preds = %1095
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %19, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1094, i64 noundef 24) #13
  br label %1130

1116:                                             ; preds = %1100
  %1117 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #12
          to label %1118 unwind label %1108

1118:                                             ; preds = %1116
  %1119 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZN9R2TextureC1EPK7R2Image13R2TextureWrapS3_15R2TextureFilterS4_14R2TextureBlendPKc(ptr noundef nonnull align 8 dereferenceable(76) %1117, ptr noundef %1119, i32 noundef 10497, i32 noundef 10497, i32 noundef 9987, i32 noundef 9729, i32 noundef 8448, ptr noundef null)
          to label %1120 unwind label %1126

1120:                                             ; preds = %1118
  store ptr %1117, ptr %88, align 8, !tbaa !5
  %1121 = load ptr, ptr %88, align 8, !tbaa !5
  invoke void @_ZN7R3Scene13InsertTextureEP9R2Texture(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1121)
          to label %1122 unwind label %1108

1122:                                             ; preds = %1120
  store i32 0, ptr %9, align 4
  br label %1123

1123:                                             ; preds = %1122, %1102
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %89) #10
  %1124 = load i32, ptr %9, align 4
  switch i32 %1124, label %1142 [
    i32 0, label %1125
  ]

1125:                                             ; preds = %1123
  br label %1131

1126:                                             ; preds = %1118
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %19, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1117, i64 noundef 80) #13
  br label %1130

1130:                                             ; preds = %1126, %1112, %1108
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %89) #10
  br label %1155

1131:                                             ; preds = %1125, %1065
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  %1132 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #12
          to label %1133 unwind label %1146

1133:                                             ; preds = %1131
  %1134 = load ptr, ptr %87, align 8, !tbaa !5
  %1135 = load ptr, ptr %88, align 8, !tbaa !5
  invoke void @_ZN10R3MaterialC1EPK6R3BrdfPK9R2TexturePKc(ptr noundef nonnull align 8 dereferenceable(48) %1132, ptr noundef %1134, ptr noundef %1135, ptr noundef null)
          to label %1136 unwind label %1150

1136:                                             ; preds = %1133
  store ptr %1132, ptr %92, align 8, !tbaa !5
  %1137 = load ptr, ptr %92, align 8, !tbaa !5
  invoke void @_ZN7R3Scene14InsertMaterialEP10R3Material(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1137)
          to label %1138 unwind label %1146

1138:                                             ; preds = %1136
  %1139 = load ptr, ptr %92, align 8, !tbaa !5
  %1140 = invoke noundef ptr @_ZN7RNArrayIP10R3MaterialE6InsertES1_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef %1139)
          to label %1141 unwind label %1146

1141:                                             ; preds = %1138
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  store i32 0, ptr %9, align 4
  br label %1142

1142:                                             ; preds = %1141, %1123
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %1143

1143:                                             ; preds = %1142, %1029
  call void @llvm.lifetime.end.p0(i64 256, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #10
  %1144 = load i32, ptr %9, align 4
  switch i32 %1144, label %1663 [
    i32 0, label %1145
  ]

1145:                                             ; preds = %1143
  br label %1646

1146:                                             ; preds = %1138, %1136, %1131
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %19, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %20, align 4
  br label %1154

1150:                                             ; preds = %1133
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %19, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1132, i64 noundef 48) #13
  br label %1154

1154:                                             ; preds = %1150, %1146
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %1155

1155:                                             ; preds = %1154, %1130
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1156

1156:                                             ; preds = %1155, %1084, %1080
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %1157

1157:                                             ; preds = %1156, %1054
  call void @llvm.lifetime.end.p0(i64 256, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br label %1158

1158:                                             ; preds = %1157, %1050
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #10
  br label %1159

1159:                                             ; preds = %1158, %1046
  call void @llvm.lifetime.end.p0(i64 24, ptr %82) #10
  br label %1160

1160:                                             ; preds = %1159, %1042
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #10
  br label %1161

1161:                                             ; preds = %1160, %1038
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #10
  br label %1162

1162:                                             ; preds = %1161, %1034
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #10
  br label %1664

1163:                                             ; preds = %984
  %1164 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1165 = call i32 @strcmp(ptr noundef %1164, ptr noundef @.str.76) #11
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1220, label %1167

1167:                                             ; preds = %1163
  call void @llvm.lifetime.start.p0(i64 24, ptr %93) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %93)
          to label %1168 unwind label %1191

1168:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 24, ptr %94) #10
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %94)
          to label %1169 unwind label %1195

1169:                                             ; preds = %1168
  %1170 = load ptr, ptr %8, align 8, !tbaa !5
  %1171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %93, i32 noundef 0)
          to label %1172 unwind label %1195

1172:                                             ; preds = %1169
  %1173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %93, i32 noundef 1)
          to label %1174 unwind label %1195

1174:                                             ; preds = %1172
  %1175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %93, i32 noundef 2)
          to label %1176 unwind label %1195

1176:                                             ; preds = %1174
  %1177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %94, i32 noundef 0)
          to label %1178 unwind label %1195

1178:                                             ; preds = %1176
  %1179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %94, i32 noundef 1)
          to label %1180 unwind label %1195

1180:                                             ; preds = %1178
  %1181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %94, i32 noundef 2)
          to label %1182 unwind label %1195

1182:                                             ; preds = %1180
  %1183 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1170, ptr noundef @.str.77, ptr noundef %1171, ptr noundef %1173, ptr noundef %1175, ptr noundef %1177, ptr noundef %1179, ptr noundef %1181)
          to label %1184 unwind label %1195

1184:                                             ; preds = %1182
  %1185 = icmp ne i32 %1183, 6
  br i1 %1185, label %1186, label %1199

1186:                                             ; preds = %1184
  %1187 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1188 = load i32, ptr %18, align 4, !tbaa !29
  %1189 = load ptr, ptr %6, align 8, !tbaa !5
  %1190 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1187, ptr noundef @.str.78, i32 noundef %1188, ptr noundef %1189) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1206

1191:                                             ; preds = %1167
  %1192 = landingpad { ptr, i32 }
          cleanup
  %1193 = extractvalue { ptr, i32 } %1192, 0
  store ptr %1193, ptr %19, align 8
  %1194 = extractvalue { ptr, i32 } %1192, 1
  store i32 %1194, ptr %20, align 4
  br label %1219

1195:                                             ; preds = %1199, %1182, %1180, %1178, %1176, %1174, %1172, %1169, %1168
  %1196 = landingpad { ptr, i32 }
          cleanup
  %1197 = extractvalue { ptr, i32 } %1196, 0
  store ptr %1197, ptr %19, align 8
  %1198 = extractvalue { ptr, i32 } %1196, 1
  store i32 %1198, ptr %20, align 4
  br label %1218

1199:                                             ; preds = %1184
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %94)
          to label %1200 unwind label %1195

1200:                                             ; preds = %1199
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #10
  %1201 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 104) #12
          to label %1202 unwind label %1209

1202:                                             ; preds = %1200
  invoke void @_ZN18R3DirectionalLightC1ERK8R3VectorRK5RNRgbdi(ptr noundef nonnull align 8 dereferenceable(104) %1201, ptr noundef nonnull align 8 dereferenceable(24) %94, ptr noundef nonnull align 8 dereferenceable(24) %93, double noundef 1.000000e+00, i32 noundef 1)
          to label %1203 unwind label %1213

1203:                                             ; preds = %1202
  store ptr %1201, ptr %95, align 8, !tbaa !5
  %1204 = load ptr, ptr %95, align 8, !tbaa !5
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1204)
          to label %1205 unwind label %1209

1205:                                             ; preds = %1203
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  store i32 0, ptr %9, align 4
  br label %1206

1206:                                             ; preds = %1205, %1186
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #10
  %1207 = load i32, ptr %9, align 4
  switch i32 %1207, label %1663 [
    i32 0, label %1208
  ]

1208:                                             ; preds = %1206
  br label %1645

1209:                                             ; preds = %1203, %1200
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %19, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %20, align 4
  br label %1217

1213:                                             ; preds = %1202
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %19, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1201, i64 noundef 104) #13
  br label %1217

1217:                                             ; preds = %1213, %1209
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  br label %1218

1218:                                             ; preds = %1217, %1195
  call void @llvm.lifetime.end.p0(i64 24, ptr %94) #10
  br label %1219

1219:                                             ; preds = %1218, %1191
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #10
  br label %1664

1220:                                             ; preds = %1163
  %1221 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1222 = call i32 @strcmp(ptr noundef %1221, ptr noundef @.str.79) #11
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1284, label %1224

1224:                                             ; preds = %1220
  call void @llvm.lifetime.start.p0(i64 24, ptr %96) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %96)
          to label %1225 unwind label %1248

1225:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 24, ptr %97) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %97)
          to label %1226 unwind label %1252

1226:                                             ; preds = %1225
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  %1227 = load ptr, ptr %8, align 8, !tbaa !5
  %1228 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %96, i32 noundef 0)
          to label %1229 unwind label %1256

1229:                                             ; preds = %1226
  %1230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %96, i32 noundef 1)
          to label %1231 unwind label %1256

1231:                                             ; preds = %1229
  %1232 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %96, i32 noundef 2)
          to label %1233 unwind label %1256

1233:                                             ; preds = %1231
  %1234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %97, i32 noundef 0)
          to label %1235 unwind label %1256

1235:                                             ; preds = %1233
  %1236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %97, i32 noundef 1)
          to label %1237 unwind label %1256

1237:                                             ; preds = %1235
  %1238 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %97, i32 noundef 2)
          to label %1239 unwind label %1256

1239:                                             ; preds = %1237
  %1240 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1227, ptr noundef @.str.80, ptr noundef %1228, ptr noundef %1230, ptr noundef %1232, ptr noundef %1234, ptr noundef %1236, ptr noundef %1238, ptr noundef %98, ptr noundef %99, ptr noundef %100)
          to label %1241 unwind label %1256

1241:                                             ; preds = %1239
  %1242 = icmp ne i32 %1240, 9
  br i1 %1242, label %1243, label %1260

1243:                                             ; preds = %1241
  %1244 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1245 = load i32, ptr %18, align 4, !tbaa !29
  %1246 = load ptr, ptr %6, align 8, !tbaa !5
  %1247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1244, ptr noundef @.str.81, i32 noundef %1245, ptr noundef %1246) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1269

1248:                                             ; preds = %1224
  %1249 = landingpad { ptr, i32 }
          cleanup
  %1250 = extractvalue { ptr, i32 } %1249, 0
  store ptr %1250, ptr %19, align 8
  %1251 = extractvalue { ptr, i32 } %1249, 1
  store i32 %1251, ptr %20, align 4
  br label %1283

1252:                                             ; preds = %1225
  %1253 = landingpad { ptr, i32 }
          cleanup
  %1254 = extractvalue { ptr, i32 } %1253, 0
  store ptr %1254, ptr %19, align 8
  %1255 = extractvalue { ptr, i32 } %1253, 1
  store i32 %1255, ptr %20, align 4
  br label %1282

1256:                                             ; preds = %1239, %1237, %1235, %1233, %1231, %1229, %1226
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %19, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %20, align 4
  br label %1281

1260:                                             ; preds = %1241
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %1261 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 128) #12
          to label %1262 unwind label %1272

1262:                                             ; preds = %1260
  %1263 = load double, ptr %98, align 8, !tbaa !33
  %1264 = load double, ptr %99, align 8, !tbaa !33
  %1265 = load double, ptr %100, align 8, !tbaa !33
  invoke void @_ZN12R3PointLightC1ERK7R3PointRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(128) %1261, ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 8 dereferenceable(24) %96, double noundef 1.000000e+00, i32 noundef 1, double noundef %1263, double noundef %1264, double noundef %1265)
          to label %1266 unwind label %1276

1266:                                             ; preds = %1262
  store ptr %1261, ptr %101, align 8, !tbaa !5
  %1267 = load ptr, ptr %101, align 8, !tbaa !5
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1267)
          to label %1268 unwind label %1272

1268:                                             ; preds = %1266
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  store i32 0, ptr %9, align 4
  br label %1269

1269:                                             ; preds = %1268, %1243
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #10
  %1270 = load i32, ptr %9, align 4
  switch i32 %1270, label %1663 [
    i32 0, label %1271
  ]

1271:                                             ; preds = %1269
  br label %1644

1272:                                             ; preds = %1266, %1260
  %1273 = landingpad { ptr, i32 }
          cleanup
  %1274 = extractvalue { ptr, i32 } %1273, 0
  store ptr %1274, ptr %19, align 8
  %1275 = extractvalue { ptr, i32 } %1273, 1
  store i32 %1275, ptr %20, align 4
  br label %1280

1276:                                             ; preds = %1262
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %19, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1261, i64 noundef 128) #13
  br label %1280

1280:                                             ; preds = %1276, %1272
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1281

1281:                                             ; preds = %1280, %1256
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  br label %1282

1282:                                             ; preds = %1281, %1252
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #10
  br label %1283

1283:                                             ; preds = %1282, %1248
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #10
  br label %1664

1284:                                             ; preds = %1220
  %1285 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1286 = call i32 @strcmp(ptr noundef %1285, ptr noundef @.str.82) #11
  %1287 = icmp ne i32 %1286, 0
  br i1 %1287, label %1363, label %1288

1288:                                             ; preds = %1284
  call void @llvm.lifetime.start.p0(i64 24, ptr %102) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %102)
          to label %1289 unwind label %1319

1289:                                             ; preds = %1288
  call void @llvm.lifetime.start.p0(i64 24, ptr %103) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %103)
          to label %1290 unwind label %1323

1290:                                             ; preds = %1289
  call void @llvm.lifetime.start.p0(i64 24, ptr %104) #10
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1291 unwind label %1327

1291:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #10
  %1292 = load ptr, ptr %8, align 8, !tbaa !5
  %1293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %102, i32 noundef 0)
          to label %1294 unwind label %1331

1294:                                             ; preds = %1291
  %1295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %102, i32 noundef 1)
          to label %1296 unwind label %1331

1296:                                             ; preds = %1294
  %1297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %102, i32 noundef 2)
          to label %1298 unwind label %1331

1298:                                             ; preds = %1296
  %1299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %103, i32 noundef 0)
          to label %1300 unwind label %1331

1300:                                             ; preds = %1298
  %1301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %103, i32 noundef 1)
          to label %1302 unwind label %1331

1302:                                             ; preds = %1300
  %1303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %103, i32 noundef 2)
          to label %1304 unwind label %1331

1304:                                             ; preds = %1302
  %1305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %104, i32 noundef 0)
          to label %1306 unwind label %1331

1306:                                             ; preds = %1304
  %1307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %104, i32 noundef 1)
          to label %1308 unwind label %1331

1308:                                             ; preds = %1306
  %1309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %104, i32 noundef 2)
          to label %1310 unwind label %1331

1310:                                             ; preds = %1308
  %1311 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1292, ptr noundef @.str.83, ptr noundef %1293, ptr noundef %1295, ptr noundef %1297, ptr noundef %1299, ptr noundef %1301, ptr noundef %1303, ptr noundef %1305, ptr noundef %1307, ptr noundef %1309, ptr noundef %105, ptr noundef %106, ptr noundef %107, ptr noundef %108, ptr noundef %109)
          to label %1312 unwind label %1331

1312:                                             ; preds = %1310
  %1313 = icmp ne i32 %1311, 14
  br i1 %1313, label %1314, label %1335

1314:                                             ; preds = %1312
  %1315 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1316 = load i32, ptr %18, align 4, !tbaa !29
  %1317 = load ptr, ptr %6, align 8, !tbaa !5
  %1318 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1315, ptr noundef @.str.81, i32 noundef %1316, ptr noundef %1317) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1347

1319:                                             ; preds = %1288
  %1320 = landingpad { ptr, i32 }
          cleanup
  %1321 = extractvalue { ptr, i32 } %1320, 0
  store ptr %1321, ptr %19, align 8
  %1322 = extractvalue { ptr, i32 } %1320, 1
  store i32 %1322, ptr %20, align 4
  br label %1362

1323:                                             ; preds = %1289
  %1324 = landingpad { ptr, i32 }
          cleanup
  %1325 = extractvalue { ptr, i32 } %1324, 0
  store ptr %1325, ptr %19, align 8
  %1326 = extractvalue { ptr, i32 } %1324, 1
  store i32 %1326, ptr %20, align 4
  br label %1361

1327:                                             ; preds = %1290
  %1328 = landingpad { ptr, i32 }
          cleanup
  %1329 = extractvalue { ptr, i32 } %1328, 0
  store ptr %1329, ptr %19, align 8
  %1330 = extractvalue { ptr, i32 } %1328, 1
  store i32 %1330, ptr %20, align 4
  br label %1360

1331:                                             ; preds = %1335, %1310, %1308, %1306, %1304, %1302, %1300, %1298, %1296, %1294, %1291
  %1332 = landingpad { ptr, i32 }
          cleanup
  %1333 = extractvalue { ptr, i32 } %1332, 0
  store ptr %1333, ptr %19, align 8
  %1334 = extractvalue { ptr, i32 } %1332, 1
  store i32 %1334, ptr %20, align 4
  br label %1359

1335:                                             ; preds = %1312
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1336 unwind label %1331

1336:                                             ; preds = %1335
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #10
  %1337 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 168) #12
          to label %1338 unwind label %1350

1338:                                             ; preds = %1336
  %1339 = load double, ptr %109, align 8, !tbaa !33
  %1340 = load double, ptr %108, align 8, !tbaa !33
  %1341 = load double, ptr %105, align 8, !tbaa !33
  %1342 = load double, ptr %106, align 8, !tbaa !33
  %1343 = load double, ptr %107, align 8, !tbaa !33
  invoke void @_ZN11R3SpotLightC1ERK7R3PointRK8R3VectorRK5RNRgbdddiddd(ptr noundef nonnull align 8 dereferenceable(168) %1337, ptr noundef nonnull align 8 dereferenceable(24) %103, ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(24) %102, double noundef %1339, double noundef %1340, double noundef 1.000000e+00, i32 noundef 1, double noundef %1341, double noundef %1342, double noundef %1343)
          to label %1344 unwind label %1354

1344:                                             ; preds = %1338
  store ptr %1337, ptr %110, align 8, !tbaa !5
  %1345 = load ptr, ptr %110, align 8, !tbaa !5
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1345)
          to label %1346 unwind label %1350

1346:                                             ; preds = %1344
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  store i32 0, ptr %9, align 4
  br label %1347

1347:                                             ; preds = %1346, %1314
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %102) #10
  %1348 = load i32, ptr %9, align 4
  switch i32 %1348, label %1663 [
    i32 0, label %1349
  ]

1349:                                             ; preds = %1347
  br label %1643

1350:                                             ; preds = %1344, %1336
  %1351 = landingpad { ptr, i32 }
          cleanup
  %1352 = extractvalue { ptr, i32 } %1351, 0
  store ptr %1352, ptr %19, align 8
  %1353 = extractvalue { ptr, i32 } %1351, 1
  store i32 %1353, ptr %20, align 4
  br label %1358

1354:                                             ; preds = %1338
  %1355 = landingpad { ptr, i32 }
          cleanup
  %1356 = extractvalue { ptr, i32 } %1355, 0
  store ptr %1356, ptr %19, align 8
  %1357 = extractvalue { ptr, i32 } %1355, 1
  store i32 %1357, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1337, i64 noundef 168) #13
  br label %1358

1358:                                             ; preds = %1354, %1350
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #10
  br label %1359

1359:                                             ; preds = %1358, %1331
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  br label %1360

1360:                                             ; preds = %1359, %1327
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #10
  br label %1361

1361:                                             ; preds = %1360, %1323
  call void @llvm.lifetime.end.p0(i64 24, ptr %103) #10
  br label %1362

1362:                                             ; preds = %1361, %1319
  call void @llvm.lifetime.end.p0(i64 24, ptr %102) #10
  br label %1664

1363:                                             ; preds = %1284
  %1364 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1365 = call i32 @strcmp(ptr noundef %1364, ptr noundef @.str.84) #11
  %1366 = icmp ne i32 %1365, 0
  br i1 %1366, label %1441, label %1367

1367:                                             ; preds = %1363
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #10
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %111)
          to label %1368 unwind label %1398

1368:                                             ; preds = %1367
  call void @llvm.lifetime.start.p0(i64 24, ptr %112) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %112)
          to label %1369 unwind label %1402

1369:                                             ; preds = %1368
  call void @llvm.lifetime.start.p0(i64 24, ptr %113) #10
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %113)
          to label %1370 unwind label %1406

1370:                                             ; preds = %1369
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  %1371 = load ptr, ptr %8, align 8, !tbaa !5
  %1372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %111, i32 noundef 0)
          to label %1373 unwind label %1410

1373:                                             ; preds = %1370
  %1374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %111, i32 noundef 1)
          to label %1375 unwind label %1410

1375:                                             ; preds = %1373
  %1376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %111, i32 noundef 2)
          to label %1377 unwind label %1410

1377:                                             ; preds = %1375
  %1378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %112, i32 noundef 0)
          to label %1379 unwind label %1410

1379:                                             ; preds = %1377
  %1380 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %112, i32 noundef 1)
          to label %1381 unwind label %1410

1381:                                             ; preds = %1379
  %1382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %112, i32 noundef 2)
          to label %1383 unwind label %1410

1383:                                             ; preds = %1381
  %1384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %113, i32 noundef 0)
          to label %1385 unwind label %1410

1385:                                             ; preds = %1383
  %1386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %113, i32 noundef 1)
          to label %1387 unwind label %1410

1387:                                             ; preds = %1385
  %1388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %113, i32 noundef 2)
          to label %1389 unwind label %1410

1389:                                             ; preds = %1387
  %1390 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1371, ptr noundef @.str.85, ptr noundef %1372, ptr noundef %1374, ptr noundef %1376, ptr noundef %1378, ptr noundef %1380, ptr noundef %1382, ptr noundef %1384, ptr noundef %1386, ptr noundef %1388, ptr noundef %114, ptr noundef %115, ptr noundef %116, ptr noundef %117)
          to label %1391 unwind label %1410

1391:                                             ; preds = %1389
  %1392 = icmp ne i32 %1390, 13
  br i1 %1392, label %1393, label %1414

1393:                                             ; preds = %1391
  %1394 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1395 = load i32, ptr %18, align 4, !tbaa !29
  %1396 = load ptr, ptr %6, align 8, !tbaa !5
  %1397 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1394, ptr noundef @.str.86, i32 noundef %1395, ptr noundef %1396) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1425

1398:                                             ; preds = %1367
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %19, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %20, align 4
  br label %1440

1402:                                             ; preds = %1368
  %1403 = landingpad { ptr, i32 }
          cleanup
  %1404 = extractvalue { ptr, i32 } %1403, 0
  store ptr %1404, ptr %19, align 8
  %1405 = extractvalue { ptr, i32 } %1403, 1
  store i32 %1405, ptr %20, align 4
  br label %1439

1406:                                             ; preds = %1369
  %1407 = landingpad { ptr, i32 }
          cleanup
  %1408 = extractvalue { ptr, i32 } %1407, 0
  store ptr %1408, ptr %19, align 8
  %1409 = extractvalue { ptr, i32 } %1407, 1
  store i32 %1409, ptr %20, align 4
  br label %1438

1410:                                             ; preds = %1414, %1389, %1387, %1385, %1383, %1381, %1379, %1377, %1375, %1373, %1370
  %1411 = landingpad { ptr, i32 }
          cleanup
  %1412 = extractvalue { ptr, i32 } %1411, 0
  store ptr %1412, ptr %19, align 8
  %1413 = extractvalue { ptr, i32 } %1411, 1
  store i32 %1413, ptr %20, align 4
  br label %1437

1414:                                             ; preds = %1391
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113)
          to label %1415 unwind label %1410

1415:                                             ; preds = %1414
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %1416 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 176) #12
          to label %1417 unwind label %1428

1417:                                             ; preds = %1415
  %1418 = load double, ptr %114, align 8, !tbaa !33
  %1419 = load double, ptr %115, align 8, !tbaa !33
  %1420 = load double, ptr %116, align 8, !tbaa !33
  %1421 = load double, ptr %117, align 8, !tbaa !33
  invoke void @_ZN11R3AreaLightC1ERK7R3PointdRK8R3VectorRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(176) %1416, ptr noundef nonnull align 8 dereferenceable(24) %112, double noundef %1418, ptr noundef nonnull align 8 dereferenceable(24) %113, ptr noundef nonnull align 8 dereferenceable(24) %111, double noundef 1.000000e+00, i32 noundef 1, double noundef %1419, double noundef %1420, double noundef %1421)
          to label %1422 unwind label %1432

1422:                                             ; preds = %1417
  store ptr %1416, ptr %118, align 8, !tbaa !5
  %1423 = load ptr, ptr %118, align 8, !tbaa !5
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1423)
          to label %1424 unwind label %1428

1424:                                             ; preds = %1422
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  store i32 0, ptr %9, align 4
  br label %1425

1425:                                             ; preds = %1424, %1393
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #10
  %1426 = load i32, ptr %9, align 4
  switch i32 %1426, label %1663 [
    i32 0, label %1427
  ]

1427:                                             ; preds = %1425
  br label %1642

1428:                                             ; preds = %1422, %1415
  %1429 = landingpad { ptr, i32 }
          cleanup
  %1430 = extractvalue { ptr, i32 } %1429, 0
  store ptr %1430, ptr %19, align 8
  %1431 = extractvalue { ptr, i32 } %1429, 1
  store i32 %1431, ptr %20, align 4
  br label %1436

1432:                                             ; preds = %1417
  %1433 = landingpad { ptr, i32 }
          cleanup
  %1434 = extractvalue { ptr, i32 } %1433, 0
  store ptr %1434, ptr %19, align 8
  %1435 = extractvalue { ptr, i32 } %1433, 1
  store i32 %1435, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %1416, i64 noundef 176) #13
  br label %1436

1436:                                             ; preds = %1432, %1428
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  br label %1437

1437:                                             ; preds = %1436, %1410
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  br label %1438

1438:                                             ; preds = %1437, %1406
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #10
  br label %1439

1439:                                             ; preds = %1438, %1402
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #10
  br label %1440

1440:                                             ; preds = %1439, %1398
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #10
  br label %1664

1441:                                             ; preds = %1363
  %1442 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1443 = call i32 @strcmp(ptr noundef %1442, ptr noundef @.str.87) #11
  %1444 = icmp ne i32 %1443, 0
  br i1 %1444, label %1510, label %1445

1445:                                             ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 24, ptr %119) #10
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %1446 unwind label %1476

1446:                                             ; preds = %1445
  call void @llvm.lifetime.start.p0(i64 24, ptr %120) #10
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %120)
          to label %1447 unwind label %1480

1447:                                             ; preds = %1446
  call void @llvm.lifetime.start.p0(i64 24, ptr %121) #10
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %121)
          to label %1448 unwind label %1484

1448:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %1449 = load ptr, ptr %8, align 8, !tbaa !5
  %1450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %119, i32 noundef 0)
          to label %1451 unwind label %1488

1451:                                             ; preds = %1448
  %1452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %119, i32 noundef 1)
          to label %1453 unwind label %1488

1453:                                             ; preds = %1451
  %1454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %119, i32 noundef 2)
          to label %1455 unwind label %1488

1455:                                             ; preds = %1453
  %1456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %120, i32 noundef 0)
          to label %1457 unwind label %1488

1457:                                             ; preds = %1455
  %1458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %120, i32 noundef 1)
          to label %1459 unwind label %1488

1459:                                             ; preds = %1457
  %1460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %120, i32 noundef 2)
          to label %1461 unwind label %1488

1461:                                             ; preds = %1459
  %1462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %121, i32 noundef 0)
          to label %1463 unwind label %1488

1463:                                             ; preds = %1461
  %1464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %121, i32 noundef 1)
          to label %1465 unwind label %1488

1465:                                             ; preds = %1463
  %1466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %121, i32 noundef 2)
          to label %1467 unwind label %1488

1467:                                             ; preds = %1465
  %1468 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1449, ptr noundef @.str.88, ptr noundef %1450, ptr noundef %1452, ptr noundef %1454, ptr noundef %1456, ptr noundef %1458, ptr noundef %1460, ptr noundef %1462, ptr noundef %1464, ptr noundef %1466, ptr noundef %122, ptr noundef %123, ptr noundef %124)
          to label %1469 unwind label %1488

1469:                                             ; preds = %1467
  %1470 = icmp ne i32 %1468, 12
  br i1 %1470, label %1471, label %1492

1471:                                             ; preds = %1469
  %1472 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1473 = load i32, ptr %18, align 4, !tbaa !29
  %1474 = load ptr, ptr %6, align 8, !tbaa !5
  %1475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1472, ptr noundef @.str.89, i32 noundef %1473, ptr noundef %1474) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1499

1476:                                             ; preds = %1445
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %19, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %20, align 4
  br label %1509

1480:                                             ; preds = %1446
  %1481 = landingpad { ptr, i32 }
          cleanup
  %1482 = extractvalue { ptr, i32 } %1481, 0
  store ptr %1482, ptr %19, align 8
  %1483 = extractvalue { ptr, i32 } %1481, 1
  store i32 %1483, ptr %20, align 4
  br label %1508

1484:                                             ; preds = %1447
  %1485 = landingpad { ptr, i32 }
          cleanup
  %1486 = extractvalue { ptr, i32 } %1485, 0
  store ptr %1486, ptr %19, align 8
  %1487 = extractvalue { ptr, i32 } %1485, 1
  store i32 %1487, ptr %20, align 4
  br label %1507

1488:                                             ; preds = %1467, %1465, %1463, %1461, %1459, %1457, %1455, %1453, %1451, %1448
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %19, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %20, align 4
  br label %1506

1492:                                             ; preds = %1469
  call void @llvm.lifetime.start.p0(i64 144, ptr %125) #10
  %1493 = load double, ptr %122, align 8, !tbaa !33
  %1494 = load double, ptr %122, align 8, !tbaa !33
  %1495 = load double, ptr %123, align 8, !tbaa !33
  %1496 = load double, ptr %124, align 8, !tbaa !33
  invoke void @_ZN8R3CameraC1ERK7R3PointRK8R3VectorS5_dddd(ptr noundef nonnull align 8 dereferenceable(144) %125, ptr noundef nonnull align 8 dereferenceable(24) %119, ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(24) %121, double noundef %1493, double noundef %1494, double noundef %1495, double noundef %1496)
          to label %1497 unwind label %1502

1497:                                             ; preds = %1492
  invoke void @_ZN7R3Scene9SetCameraERK8R3Camera(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef nonnull align 8 dereferenceable(144) %125)
          to label %1498 unwind label %1502

1498:                                             ; preds = %1497
  call void @llvm.lifetime.end.p0(i64 144, ptr %125) #10
  store i32 0, ptr %9, align 4
  br label %1499

1499:                                             ; preds = %1498, %1471
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %120) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #10
  %1500 = load i32, ptr %9, align 4
  switch i32 %1500, label %1663 [
    i32 0, label %1501
  ]

1501:                                             ; preds = %1499
  br label %1641

1502:                                             ; preds = %1497, %1492
  %1503 = landingpad { ptr, i32 }
          cleanup
  %1504 = extractvalue { ptr, i32 } %1503, 0
  store ptr %1504, ptr %19, align 8
  %1505 = extractvalue { ptr, i32 } %1503, 1
  store i32 %1505, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 144, ptr %125) #10
  br label %1506

1506:                                             ; preds = %1502, %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  br label %1507

1507:                                             ; preds = %1506, %1484
  call void @llvm.lifetime.end.p0(i64 24, ptr %121) #10
  br label %1508

1508:                                             ; preds = %1507, %1480
  call void @llvm.lifetime.end.p0(i64 24, ptr %120) #10
  br label %1509

1509:                                             ; preds = %1508, %1476
  call void @llvm.lifetime.end.p0(i64 24, ptr %119) #10
  br label %1664

1510:                                             ; preds = %1441
  %1511 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1512 = call i32 @strcmp(ptr noundef %1511, ptr noundef @.str.90) #11
  %1513 = icmp ne i32 %1512, 0
  br i1 %1513, label %1568, label %1514

1514:                                             ; preds = %1510
  call void @llvm.lifetime.start.p0(i64 256, ptr %126) #10
  %1515 = load ptr, ptr %8, align 8, !tbaa !5
  %1516 = getelementptr inbounds [256 x i8], ptr %126, i64 0, i64 0
  %1517 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1515, ptr noundef @.str.44, ptr noundef %1516)
          to label %1518 unwind label %1525

1518:                                             ; preds = %1514
  %1519 = icmp ne i32 %1517, 1
  br i1 %1519, label %1520, label %1529

1520:                                             ; preds = %1518
  %1521 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1522 = load i32, ptr %18, align 4, !tbaa !29
  %1523 = load ptr, ptr %6, align 8, !tbaa !5
  %1524 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1521, ptr noundef @.str.91, i32 noundef %1522, ptr noundef %1523) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1564

1525:                                             ; preds = %1514
  %1526 = landingpad { ptr, i32 }
          cleanup
  %1527 = extractvalue { ptr, i32 } %1526, 0
  store ptr %1527, ptr %19, align 8
  %1528 = extractvalue { ptr, i32 } %1526, 1
  store i32 %1528, ptr %20, align 4
  br label %1567

1529:                                             ; preds = %1518
  call void @llvm.lifetime.start.p0(i64 2048, ptr %127) #10
  %1530 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  %1531 = load ptr, ptr %6, align 8, !tbaa !5
  %1532 = call ptr @strcpy(ptr noundef %1530, ptr noundef %1531) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #10
  %1533 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  %1534 = call noundef ptr @strrchr(ptr noundef %1533, i32 noundef 47) #11
  store ptr %1534, ptr %128, align 8, !tbaa !5
  %1535 = load ptr, ptr %128, align 8, !tbaa !5
  %1536 = icmp ne ptr %1535, null
  br i1 %1536, label %1537, label %1540

1537:                                             ; preds = %1529
  %1538 = load ptr, ptr %128, align 8, !tbaa !5
  %1539 = getelementptr inbounds i8, ptr %1538, i64 1
  store i8 0, ptr %1539, align 1, !tbaa !30
  br label %1542

1540:                                             ; preds = %1529
  %1541 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  store i8 0, ptr %1541, align 16, !tbaa !30
  br label %1542

1542:                                             ; preds = %1540, %1537
  %1543 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  %1544 = getelementptr inbounds [256 x i8], ptr %126, i64 0, i64 0
  %1545 = call ptr @strcat(ptr noundef %1543, ptr noundef %1544) #10
  %1546 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  %1547 = load i32, ptr %16, align 4, !tbaa !29
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds [1024 x ptr], ptr %14, i64 0, i64 %1548
  %1550 = load ptr, ptr %1549, align 8, !tbaa !5
  %1551 = invoke noundef i32 @_ZN7R3Scene8ReadFileEPKcP11R3SceneNode(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef %1546, ptr noundef %1550)
          to label %1552 unwind label %1558

1552:                                             ; preds = %1542
  %1553 = icmp ne i32 %1551, 0
  br i1 %1553, label %1562, label %1554

1554:                                             ; preds = %1552
  %1555 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1556 = getelementptr inbounds [2048 x i8], ptr %127, i64 0, i64 0
  %1557 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1555, ptr noundef @.str.92, ptr noundef %1556) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1563

1558:                                             ; preds = %1542
  %1559 = landingpad { ptr, i32 }
          cleanup
  %1560 = extractvalue { ptr, i32 } %1559, 0
  store ptr %1560, ptr %19, align 8
  %1561 = extractvalue { ptr, i32 } %1559, 1
  store i32 %1561, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %127) #10
  br label %1567

1562:                                             ; preds = %1552
  store i32 0, ptr %9, align 4
  br label %1563

1563:                                             ; preds = %1562, %1554
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 2048, ptr %127) #10
  br label %1564

1564:                                             ; preds = %1563, %1520
  call void @llvm.lifetime.end.p0(i64 256, ptr %126) #10
  %1565 = load i32, ptr %9, align 4
  switch i32 %1565, label %1663 [
    i32 0, label %1566
  ]

1566:                                             ; preds = %1564
  br label %1640

1567:                                             ; preds = %1558, %1525
  call void @llvm.lifetime.end.p0(i64 256, ptr %126) #10
  br label %1664

1568:                                             ; preds = %1510
  %1569 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1570 = call i32 @strcmp(ptr noundef %1569, ptr noundef @.str.93) #11
  %1571 = icmp ne i32 %1570, 0
  br i1 %1571, label %1600, label %1572

1572:                                             ; preds = %1568
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #10
  %1573 = load ptr, ptr %8, align 8, !tbaa !5
  %1574 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1573, ptr noundef @.str.94, ptr noundef %129, ptr noundef %130, ptr noundef %131)
          to label %1575 unwind label %1582

1575:                                             ; preds = %1572
  %1576 = icmp ne i32 %1574, 3
  br i1 %1576, label %1577, label %1586

1577:                                             ; preds = %1575
  %1578 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1579 = load i32, ptr %18, align 4, !tbaa !29
  %1580 = load ptr, ptr %6, align 8, !tbaa !5
  %1581 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1578, ptr noundef @.str.95, i32 noundef %1579, ptr noundef %1580) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1592

1582:                                             ; preds = %1572
  %1583 = landingpad { ptr, i32 }
          cleanup
  %1584 = extractvalue { ptr, i32 } %1583, 0
  store ptr %1584, ptr %19, align 8
  %1585 = extractvalue { ptr, i32 } %1583, 1
  store i32 %1585, ptr %20, align 4
  br label %1599

1586:                                             ; preds = %1575
  call void @llvm.lifetime.start.p0(i64 24, ptr %132) #10
  %1587 = load double, ptr %129, align 8, !tbaa !33
  %1588 = load double, ptr %130, align 8, !tbaa !33
  %1589 = load double, ptr %131, align 8, !tbaa !33
  invoke void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %132, double noundef %1587, double noundef %1588, double noundef %1589)
          to label %1590 unwind label %1595

1590:                                             ; preds = %1586
  invoke void @_ZN7R3Scene13SetBackgroundERK5RNRgb(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef nonnull align 8 dereferenceable(24) %132)
          to label %1591 unwind label %1595

1591:                                             ; preds = %1590
  call void @llvm.lifetime.end.p0(i64 24, ptr %132) #10
  store i32 0, ptr %9, align 4
  br label %1592

1592:                                             ; preds = %1591, %1577
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  %1593 = load i32, ptr %9, align 4
  switch i32 %1593, label %1663 [
    i32 0, label %1594
  ]

1594:                                             ; preds = %1592
  br label %1639

1595:                                             ; preds = %1590, %1586
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %19, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %132) #10
  br label %1599

1599:                                             ; preds = %1595, %1582
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #10
  br label %1664

1600:                                             ; preds = %1568
  %1601 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1602 = call i32 @strcmp(ptr noundef %1601, ptr noundef @.str.96) #11
  %1603 = icmp ne i32 %1602, 0
  br i1 %1603, label %1632, label %1604

1604:                                             ; preds = %1600
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #10
  %1605 = load ptr, ptr %8, align 8, !tbaa !5
  %1606 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %1605, ptr noundef @.str.94, ptr noundef %133, ptr noundef %134, ptr noundef %135)
          to label %1607 unwind label %1614

1607:                                             ; preds = %1604
  %1608 = icmp ne i32 %1606, 3
  br i1 %1608, label %1609, label %1618

1609:                                             ; preds = %1607
  %1610 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1611 = load i32, ptr %18, align 4, !tbaa !29
  %1612 = load ptr, ptr %6, align 8, !tbaa !5
  %1613 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1610, ptr noundef @.str.97, i32 noundef %1611, ptr noundef %1612) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1624

1614:                                             ; preds = %1604
  %1615 = landingpad { ptr, i32 }
          cleanup
  %1616 = extractvalue { ptr, i32 } %1615, 0
  store ptr %1616, ptr %19, align 8
  %1617 = extractvalue { ptr, i32 } %1615, 1
  store i32 %1617, ptr %20, align 4
  br label %1631

1618:                                             ; preds = %1607
  call void @llvm.lifetime.start.p0(i64 24, ptr %136) #10
  %1619 = load double, ptr %133, align 8, !tbaa !33
  %1620 = load double, ptr %134, align 8, !tbaa !33
  %1621 = load double, ptr %135, align 8, !tbaa !33
  invoke void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %136, double noundef %1619, double noundef %1620, double noundef %1621)
          to label %1622 unwind label %1627

1622:                                             ; preds = %1618
  invoke void @_ZN7R3Scene10SetAmbientERK5RNRgb(ptr noundef nonnull align 8 dereferenceable(352) %137, ptr noundef nonnull align 8 dereferenceable(24) %136)
          to label %1623 unwind label %1627

1623:                                             ; preds = %1622
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #10
  store i32 0, ptr %9, align 4
  br label %1624

1624:                                             ; preds = %1623, %1609
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  %1625 = load i32, ptr %9, align 4
  switch i32 %1625, label %1663 [
    i32 0, label %1626
  ]

1626:                                             ; preds = %1624
  br label %1638

1627:                                             ; preds = %1622, %1618
  %1628 = landingpad { ptr, i32 }
          cleanup
  %1629 = extractvalue { ptr, i32 } %1628, 0
  store ptr %1629, ptr %19, align 8
  %1630 = extractvalue { ptr, i32 } %1628, 1
  store i32 %1630, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %136) #10
  br label %1631

1631:                                             ; preds = %1627, %1614
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  br label %1664

1632:                                             ; preds = %1600
  %1633 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1634 = load i32, ptr %18, align 4, !tbaa !29
  %1635 = load ptr, ptr %6, align 8, !tbaa !5
  %1636 = getelementptr inbounds [128 x i8], ptr %17, i64 0, i64 0
  %1637 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1633, ptr noundef @.str.98, i32 noundef %1634, ptr noundef %1635, ptr noundef %1636) #10
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1663

1638:                                             ; preds = %1626
  br label %1639

1639:                                             ; preds = %1638, %1594
  br label %1640

1640:                                             ; preds = %1639, %1566
  br label %1641

1641:                                             ; preds = %1640, %1501
  br label %1642

1642:                                             ; preds = %1641, %1427
  br label %1643

1643:                                             ; preds = %1642, %1349
  br label %1644

1644:                                             ; preds = %1643, %1271
  br label %1645

1645:                                             ; preds = %1644, %1208
  br label %1646

1646:                                             ; preds = %1645, %1145
  br label %1647

1647:                                             ; preds = %1646, %981
  br label %1648

1648:                                             ; preds = %1647, %957
  br label %1649

1649:                                             ; preds = %1648, %847
  br label %1650

1650:                                             ; preds = %1649, %775
  br label %1651

1651:                                             ; preds = %1650, %699
  br label %1652

1652:                                             ; preds = %1651, %612
  br label %1653

1653:                                             ; preds = %1652, %527
  br label %1654

1654:                                             ; preds = %1653, %458
  br label %1655

1655:                                             ; preds = %1654, %307
  br label %1656

1656:                                             ; preds = %1655, %184
  %1657 = load i32, ptr %18, align 4, !tbaa !29
  %1658 = add nsw i32 %1657, 1
  store i32 %1658, ptr %18, align 4, !tbaa !29
  br label %154, !llvm.loop !34

1659:                                             ; preds = %158
  %1660 = load ptr, ptr %8, align 8, !tbaa !5
  %1661 = invoke i32 @fclose(ptr noundef %1660)
          to label %1662 unwind label %185

1662:                                             ; preds = %1659
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1663

1663:                                             ; preds = %1662, %1632, %1624, %1592, %1564, %1499, %1425, %1347, %1269, %1206, %1143, %976, %955, %845, %773, %697, %610, %525, %456, %305
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8192, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8192, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #10
  br label %1665

1664:                                             ; preds = %1631, %1599, %1567, %1509, %1440, %1362, %1283, %1219, %1162, %968, %851, %776, %704, %617, %530, %461, %314, %185
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8192, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8192, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %1667

1665:                                             ; preds = %1663, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  %1666 = load i32, ptr %4, align 4
  ret i32 %1666

1667:                                             ; preds = %1664
  %1668 = load ptr, ptr %19, align 8
  %1669 = load i32, ptr %20, align 4
  %1670 = insertvalue { ptr, i32 } poison, ptr %1668, 0
  %1671 = insertvalue { ptr, i32 } %1670, i32 %1669, 1
  resume { ptr, i32 } %1671
}

declare void @_ZN8R3CameraC1ERK7R3PointRK8R3VectorS5_dddd(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN10R3TriangleC1EP16R3TriangleVertexS1_S1_(ptr noundef nonnull align 8 dereferenceable(132), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

declare void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) #1

declare void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) #1

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

declare void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

declare i32 @fgetc(ptr noundef) #1

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

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

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

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

declare void @_ZN8R3SphereC1ERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

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

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

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

declare void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

declare void @_ZN6R3ConeC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #7

; Function Attrs: nounwind
declare ptr @strcat(ptr noundef, ptr noundef) #7

declare void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef) unnamed_addr #1

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

declare void @_ZN8R4MatrixC1EPKd(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef) unnamed_addr #1

declare void @_ZN8R3AffineC1ERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) unnamed_addr #1

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

declare void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

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

declare void @_ZN6R3BrdfC1ERK5RNRgbS2_S2_S2_S2_ddPKc(ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, ptr noundef) unnamed_addr #1

declare void @_ZN7R2ImageC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare noundef i32 @_ZN7R2Image4ReadEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #1

declare void @_ZN9R2TextureC1EPK7R2Image13R2TextureWrapS3_15R2TextureFilterS4_14R2TextureBlendPKc(ptr noundef nonnull align 8 dereferenceable(76), ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) unnamed_addr #1

declare void @_ZN10R3MaterialC1EPK6R3BrdfPK9R2TexturePKc(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

declare void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

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

declare void @_ZN12R3PointLightC1ERK7R3PointRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN11R3SpotLightC1ERK7R3PointRK8R3VectorRK5RNRgbdddiddd(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN11R3AreaLightC1ERK7R3PointdRK8R3VectorRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(24), double noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

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

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

declare i32 @fclose(ptr noundef) #1

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS7R3Scene", !6, i64 0, !11, i64 8, !14, i64 24, !15, i64 40, !16, i64 56, !17, i64 72, !18, i64 88, !19, i64 104, !21, i64 112, !28, i64 280, !28, i64 304, !6, i64 328, !6, i64 336, !6, i64 344}
!11 = !{!"_ZTS7RNArrayIP11R3SceneNodeE", !12, i64 0}
!12 = !{!"_ZTS8RNVArray", !6, i64 0, !13, i64 8, !13, i64 12}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS7RNArrayIP7R3LightE", !12, i64 0}
!15 = !{!"_ZTS7RNArrayIP10R3MaterialE", !12, i64 0}
!16 = !{!"_ZTS7RNArrayIP6R3BrdfE", !12, i64 0}
!17 = !{!"_ZTS7RNArrayIP9R2TextureE", !12, i64 0}
!18 = !{!"_ZTS7RNArrayIP7R3SceneE", !12, i64 0}
!19 = !{!"_ZTS13RNSymbolTableIPKcE", !20, i64 0}
!20 = !{!"_ZTS5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcE", !6, i64 0}
!21 = !{!"_ZTS8R3Viewer", !22, i64 8, !27, i64 152}
!22 = !{!"_ZTS8R3Camera", !23, i64 0, !26, i64 96, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !6, i64 136}
!23 = !{!"_ZTS13R3CoordSystem", !24, i64 0, !25, i64 24}
!24 = !{!"_ZTS7R3Point", !7, i64 0}
!25 = !{!"_ZTS7R3Triad", !7, i64 0}
!26 = !{!"double", !7, i64 0}
!27 = !{!"_ZTS10R2Viewport", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12}
!28 = !{!"_ZTS5RNRgb", !7, i64 0}
!29 = !{!13, !13, i64 0}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!26, !26, i64 0}
!34 = distinct !{!34, !32}


; 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.R3Vector = type { [3 x double] }
%class.RNArray.1 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%class.R3Point = type { [3 x double] }
%class.R3Affine = type { %class.R3Transformation, %class.R4Matrix, %class.R4Matrix, %class.RNFlags }
%class.R3Transformation = type { ptr }
%class.R4Matrix = type { [4 x [4 x double]] }
%class.RNFlags = type { i64 }
%class.RNRgb = type { [3 x double] }
%class.R3Camera = type { %class.R3CoordSystem, double, double, double, double, double, ptr }
%class.R3CoordSystem = type { %class.R3Point, %class.R3Triad }
%class.R3Triad = type { [3 x %class.R3Vector] }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [50 x i8], align 1
@R3posy_vector = external global %class.R3Vector, align 8
@.str.58 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [46 x i8], align 1
@RN_BIG_EPSILON = external local_unnamed_addr global double, align 8
@.str.65 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [40 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #0 align 2

declare void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef) unnamed_addr #1

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

declare void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef nonnull align 8 dereferenceable(272)) local_unnamed_addr #1

declare void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

declare void @_ZN18R3DirectionalLightC1ERK8R3VectorRK5RNRgbdi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef) unnamed_addr #1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7R3Scene17ReadPrincetonFileEPKcP11R3SceneNode(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %class.RNArray.1, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca [1024 x ptr], align 16
  %8 = alloca [1024 x ptr], align 16
  %9 = alloca [128 x i8], align 16
  %10 = alloca i32, align 4
  %11 = alloca %class.R3Point, align 8
  %12 = alloca %class.R3Point, align 8
  %13 = alloca %class.R3Point, align 8
  %14 = alloca i32, align 4
  %15 = alloca %class.R3Point, align 8
  %16 = alloca %class.R3Point, align 8
  %17 = alloca i32, align 4
  %18 = alloca %class.R3Point, align 8
  %19 = alloca double, align 8
  %20 = alloca i32, align 4
  %21 = alloca %class.R3Point, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca %class.R3Point, align 8
  %25 = alloca %class.R3Vector, align 8
  %26 = alloca %class.R3Point, align 8
  %27 = alloca %class.R3Vector, align 8
  %28 = alloca i32, align 4
  %29 = alloca %class.R3Point, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %class.R3Point, align 8
  %33 = alloca %class.R3Vector, align 8
  %34 = alloca %class.R3Point, align 8
  %35 = alloca %class.R3Vector, align 8
  %36 = alloca i32, align 4
  %37 = alloca [256 x i8], align 16
  %38 = alloca [2048 x i8], align 16
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca %class.R3Point, align 8
  %47 = alloca %class.R3Point, align 8
  %48 = alloca i32, align 4
  %49 = alloca [16 x double], align 16
  %50 = alloca [4096 x i8], align 16
  %51 = alloca %class.R3Affine, align 8
  %52 = alloca %class.R4Matrix, align 8
  %53 = alloca %class.RNRgb, align 8
  %54 = alloca %class.RNRgb, align 8
  %55 = alloca %class.RNRgb, align 8
  %56 = alloca %class.RNRgb, align 8
  %57 = alloca %class.RNRgb, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca [256 x i8], align 16
  %61 = alloca [2048 x i8], align 16
  %62 = alloca %class.RNRgb, align 8
  %63 = alloca %class.R3Vector, align 8
  %64 = alloca %class.RNRgb, align 8
  %65 = alloca %class.R3Point, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca %class.RNRgb, align 8
  %70 = alloca %class.R3Point, align 8
  %71 = alloca %class.R3Vector, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca %class.RNRgb, align 8
  %78 = alloca %class.R3Point, align 8
  %79 = alloca %class.R3Vector, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca %class.R3Point, align 8
  %85 = alloca %class.R3Vector, align 8
  %86 = alloca %class.R3Vector, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca %class.R3Camera, align 8
  %91 = alloca [256 x i8], align 16
  %92 = alloca [2048 x i8], align 16
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca %class.RNRgb, align 8
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca %class.RNRgb, align 8
  %101 = load ptr, ptr %0, align 8
  %102 = tail call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str.42)
  %.not317 = icmp eq ptr %102, null
  br i1 %.not317, label %103, label %106

103:                                              ; preds = %3
  %104 = load ptr, ptr @stderr, align 8, !tbaa !5
  %105 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %104, ptr noundef nonnull @.str.43, ptr noundef %1) #12
  br label %1034

106:                                              ; preds = %3
  %.not = icmp eq ptr %2, null
  %spec.select = select i1 %.not, ptr %101, ptr %2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #13
  call void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #13
  store ptr null, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #13
  store ptr null, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8192, ptr nonnull %7) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %7, i8 0, i64 8192, i1 false)
  call void @llvm.lifetime.start.p0(i64 8192, ptr nonnull %8) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8192) %8, i8 0, i64 8192, i1 false)
  store ptr %spec.select, ptr %7, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %9) #13
  %107 = getelementptr inbounds i8, ptr %49, i64 8
  %108 = getelementptr inbounds i8, ptr %49, i64 16
  %109 = getelementptr inbounds i8, ptr %49, i64 24
  %110 = getelementptr inbounds i8, ptr %49, i64 32
  %111 = getelementptr inbounds i8, ptr %49, i64 40
  %112 = getelementptr inbounds i8, ptr %49, i64 48
  %113 = getelementptr inbounds i8, ptr %49, i64 56
  %114 = getelementptr inbounds i8, ptr %49, i64 64
  %115 = getelementptr inbounds i8, ptr %49, i64 72
  %116 = getelementptr inbounds i8, ptr %49, i64 80
  %117 = getelementptr inbounds i8, ptr %49, i64 88
  %118 = getelementptr inbounds i8, ptr %49, i64 96
  %119 = getelementptr inbounds i8, ptr %49, i64 104
  %120 = getelementptr inbounds i8, ptr %49, i64 112
  %121 = getelementptr inbounds i8, ptr %49, i64 120
  br label %122

122:                                              ; preds = %.loopexit, %106
  %.0209 = phi i32 [ 1, %106 ], [ %1029, %.loopexit ]
  %.0206 = phi i32 [ 0, %106 ], [ %.2208, %.loopexit ]
  %123 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.44, ptr noundef nonnull %9)
          to label %124 unwind label %134

124:                                              ; preds = %122
  %125 = icmp eq i32 %123, 1
  br i1 %125, label %126, label %1030

126:                                              ; preds = %124
  %127 = load i8, ptr %9, align 16, !tbaa !9
  %128 = icmp eq i8 %127, 35
  br i1 %128, label %.preheader, label %136

.preheader:                                       ; preds = %126, %.preheader
  %129 = call i32 @fgetc(ptr noundef %102)
  %130 = trunc i32 %129 to i8
  store i8 %130, ptr %9, align 16, !tbaa !9
  %sext = shl i32 %129, 24
  %131 = icmp sgt i32 %sext, -1
  %132 = icmp ne i32 %sext, 167772160
  %133 = and i1 %131, %132
  br i1 %133, label %.preheader, label %.loopexit, !llvm.loop !10

134:                                              ; preds = %122
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %1033

136:                                              ; preds = %126
  %137 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.45) #14
  %.not318 = icmp eq i32 %137, 0
  br i1 %.not318, label %138, label %212

138:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %139 unwind label %162

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %140 unwind label %164

140:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %141 unwind label %166

141:                                              ; preds = %140
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 0)
          to label %143 unwind label %166

143:                                              ; preds = %141
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 1)
          to label %145 unwind label %166

145:                                              ; preds = %143
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef 2)
          to label %147 unwind label %166

147:                                              ; preds = %145
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 0)
          to label %149 unwind label %166

149:                                              ; preds = %147
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 1)
          to label %151 unwind label %166

151:                                              ; preds = %149
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %12, i32 noundef 2)
          to label %153 unwind label %166

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 0)
          to label %155 unwind label %166

155:                                              ; preds = %153
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 1)
          to label %157 unwind label %166

157:                                              ; preds = %155
  %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef 2)
          to label %159 unwind label %166

159:                                              ; preds = %157
  %160 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.46, ptr noundef nonnull %10, ptr noundef nonnull %142, ptr noundef nonnull %144, ptr noundef nonnull %146, ptr noundef nonnull %148, ptr noundef nonnull %150, ptr noundef nonnull %152, ptr noundef nonnull %154, ptr noundef nonnull %156, ptr noundef nonnull %158)
          to label %161 unwind label %166

161:                                              ; preds = %159
  %.not319 = icmp eq i32 %160, 10
  br i1 %.not319, label %168, label %.thread

162:                                              ; preds = %138
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %211

164:                                              ; preds = %139
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %210

166:                                              ; preds = %159, %157, %155, %153, %151, %149, %147, %145, %143, %141, %140
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %209

168:                                              ; preds = %161
  %169 = invoke noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #15
          to label %170 unwind label %188

170:                                              ; preds = %168
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %169, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %171 unwind label %190

171:                                              ; preds = %170
  %172 = invoke noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #15
          to label %173 unwind label %192

173:                                              ; preds = %171
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %172, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %174 unwind label %194

174:                                              ; preds = %173
  %175 = invoke noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #15
          to label %176 unwind label %196

176:                                              ; preds = %174
  invoke void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100) %175, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %177 unwind label %198

177:                                              ; preds = %176
  %178 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #15
          to label %179 unwind label %200

179:                                              ; preds = %177
  invoke void @_ZN10R3TriangleC1EP16R3TriangleVertexS1_S1_(ptr noundef nonnull align 8 dereferenceable(132) %178, ptr noundef nonnull %169, ptr noundef nonnull %172, ptr noundef nonnull %175)
          to label %180 unwind label %202

180:                                              ; preds = %179
  %181 = sext i32 %.0206 to i64
  %182 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = load i32, ptr %10, align 4, !tbaa !12
  %185 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %181
  %186 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %183, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %184, ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %187 unwind label %200

187:                                              ; preds = %180
  %.not320 = icmp eq i32 %186, 0
  br i1 %.not320, label %.thread, label %204

188:                                              ; preds = %168
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %209

190:                                              ; preds = %170
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %169, i64 noundef 104) #16
  br label %209

192:                                              ; preds = %171
  %193 = landingpad { ptr, i32 }
          cleanup
  br label %209

194:                                              ; preds = %173
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %172, i64 noundef 104) #16
  br label %209

196:                                              ; preds = %174
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %209

198:                                              ; preds = %176
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %175, i64 noundef 104) #16
  br label %209

200:                                              ; preds = %204, %180, %177
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %209

202:                                              ; preds = %179
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %178, i64 noundef 136) #16
  br label %209

204:                                              ; preds = %187
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %205, ptr noundef nonnull %178)
          to label %208 unwind label %200

.thread:                                          ; preds = %187, %161
  %.str.47.sink = phi ptr [ @.str.47, %161 ], [ @.str.48, %187 ]
  %206 = load ptr, ptr @stderr, align 8, !tbaa !5
  %207 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %206, ptr noundef nonnull %.str.47.sink, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #13
  br label %1032

208:                                              ; preds = %204
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #13
  br label %.loopexit

209:                                              ; preds = %188, %190, %196, %198, %202, %200, %194, %192, %166
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %167, %166 ], [ %191, %190 ], [ %189, %188 ], [ %195, %194 ], [ %193, %192 ], [ %199, %198 ], [ %197, %196 ], [ %201, %200 ], [ %203, %202 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #13
  br label %210

210:                                              ; preds = %209, %164
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %209 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #13
  br label %211

211:                                              ; preds = %210, %162
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %210 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #13
  br label %1033

212:                                              ; preds = %136
  %213 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.49) #14
  %.not328 = icmp eq i32 %213, 0
  br i1 %.not328, label %214, label %320

214:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %215 unwind label %231

215:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %216 unwind label %233

216:                                              ; preds = %215
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 0)
          to label %218 unwind label %233

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 1)
          to label %220 unwind label %233

220:                                              ; preds = %218
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %222 unwind label %233

222:                                              ; preds = %220
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 0)
          to label %224 unwind label %233

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %226 unwind label %233

226:                                              ; preds = %224
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 2)
          to label %228 unwind label %233

228:                                              ; preds = %226
  %229 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.50, ptr noundef nonnull %14, ptr noundef nonnull %217, ptr noundef nonnull %219, ptr noundef nonnull %221, ptr noundef nonnull %223, ptr noundef nonnull %225, ptr noundef nonnull %227)
          to label %230 unwind label %233

230:                                              ; preds = %228
  %.not329 = icmp eq i32 %229, 7
  br i1 %.not329, label %235, label %.thread457

231:                                              ; preds = %214
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %319

233:                                              ; preds = %279, %277, %258, %256, %237, %235, %228, %226, %224, %222, %220, %218, %216, %215
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %318

235:                                              ; preds = %230
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 0)
          to label %237 unwind label %233

237:                                              ; preds = %235
  %238 = load double, ptr %236, align 8, !tbaa !14
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 0)
          to label %240 unwind label %233

240:                                              ; preds = %237
  %241 = load double, ptr %239, align 8, !tbaa !14
  %242 = fcmp ogt double %238, %241
  br i1 %242, label %243, label %256

243:                                              ; preds = %240
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 0)
          to label %245 unwind label %254

245:                                              ; preds = %243
  %246 = load double, ptr %244, align 8, !tbaa !14
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 0)
          to label %248 unwind label %254

248:                                              ; preds = %245
  %249 = load double, ptr %247, align 8, !tbaa !14
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 0)
          to label %251 unwind label %254

251:                                              ; preds = %248
  store double %249, ptr %250, align 8, !tbaa !14
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 0)
          to label %253 unwind label %254

253:                                              ; preds = %251
  store double %246, ptr %252, align 8, !tbaa !14
  br label %256

254:                                              ; preds = %251, %248, %245, %243
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %318

256:                                              ; preds = %253, %240
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 1)
          to label %258 unwind label %233

258:                                              ; preds = %256
  %259 = load double, ptr %257, align 8, !tbaa !14
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %261 unwind label %233

261:                                              ; preds = %258
  %262 = load double, ptr %260, align 8, !tbaa !14
  %263 = fcmp ogt double %259, %262
  br i1 %263, label %264, label %277

264:                                              ; preds = %261
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 1)
          to label %266 unwind label %275

266:                                              ; preds = %264
  %267 = load double, ptr %265, align 8, !tbaa !14
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %269 unwind label %275

269:                                              ; preds = %266
  %270 = load double, ptr %268, align 8, !tbaa !14
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 1)
          to label %272 unwind label %275

272:                                              ; preds = %269
  store double %270, ptr %271, align 8, !tbaa !14
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %274 unwind label %275

274:                                              ; preds = %272
  store double %267, ptr %273, align 8, !tbaa !14
  br label %277

275:                                              ; preds = %272, %269, %266, %264
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %318

277:                                              ; preds = %274, %261
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %279 unwind label %233

279:                                              ; preds = %277
  %280 = load double, ptr %278, align 8, !tbaa !14
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 2)
          to label %282 unwind label %233

282:                                              ; preds = %279
  %283 = load double, ptr %281, align 8, !tbaa !14
  %284 = fcmp ogt double %280, %283
  br i1 %284, label %285, label %298

285:                                              ; preds = %282
  %286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %287 unwind label %296

287:                                              ; preds = %285
  %288 = load double, ptr %286, align 8, !tbaa !14
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 2)
          to label %290 unwind label %296

290:                                              ; preds = %287
  %291 = load double, ptr %289, align 8, !tbaa !14
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %15, i32 noundef 2)
          to label %293 unwind label %296

293:                                              ; preds = %290
  store double %291, ptr %292, align 8, !tbaa !14
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 2)
          to label %295 unwind label %296

295:                                              ; preds = %293
  store double %288, ptr %294, align 8, !tbaa !14
  br label %298

296:                                              ; preds = %293, %290, %287, %285
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %318

298:                                              ; preds = %295, %282
  %299 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #15
          to label %300 unwind label %309

300:                                              ; preds = %298
  invoke void @_ZN5R3BoxC1ERK7R3PointS2_(ptr noundef nonnull align 8 dereferenceable(56) %299, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %301 unwind label %311

301:                                              ; preds = %300
  %302 = sext i32 %.0206 to i64
  %303 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = load i32, ptr %14, align 4, !tbaa !12
  %306 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %302
  %307 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %304, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %305, ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %308 unwind label %309

308:                                              ; preds = %301
  %.not330 = icmp eq i32 %307, 0
  br i1 %.not330, label %.thread457, label %313

309:                                              ; preds = %313, %301, %298
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %318

311:                                              ; preds = %300
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %299, i64 noundef 56) #16
  br label %318

313:                                              ; preds = %308
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %314, ptr noundef nonnull %299)
          to label %317 unwind label %309

.thread457:                                       ; preds = %308, %230
  %.str.51.sink = phi ptr [ @.str.51, %230 ], [ @.str.48, %308 ]
  %315 = load ptr, ptr @stderr, align 8, !tbaa !5
  %316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %315, ptr noundef nonnull %.str.51.sink, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %1032

317:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %.loopexit

318:                                              ; preds = %309, %311, %296, %275, %254, %233
  %.pn331.pn = phi { ptr, i32 } [ %297, %296 ], [ %234, %233 ], [ %276, %275 ], [ %255, %254 ], [ %310, %309 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #13
  br label %319

319:                                              ; preds = %318, %231
  %.pn331.pn.pn = phi { ptr, i32 } [ %.pn331.pn, %318 ], [ %232, %231 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #13
  br label %1033

320:                                              ; preds = %212
  %321 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.52) #14
  %.not335 = icmp eq i32 %321, 0
  br i1 %.not335, label %322, label %359

322:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %323 unwind label %332

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #13
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 0)
          to label %325 unwind label %334

325:                                              ; preds = %323
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 1)
          to label %327 unwind label %334

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %18, i32 noundef 2)
          to label %329 unwind label %334

329:                                              ; preds = %327
  %330 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.53, ptr noundef nonnull %17, ptr noundef nonnull %324, ptr noundef nonnull %326, ptr noundef nonnull %328, ptr noundef nonnull %19)
          to label %331 unwind label %334

331:                                              ; preds = %329
  %.not336 = icmp eq i32 %330, 5
  br i1 %.not336, label %336, label %.thread461

332:                                              ; preds = %322
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %358

334:                                              ; preds = %329, %327, %325, %323
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %357

336:                                              ; preds = %331
  %337 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #15
          to label %338 unwind label %348

338:                                              ; preds = %336
  %339 = load double, ptr %19, align 8, !tbaa !14
  invoke void @_ZN8R3SphereC1ERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(40) %337, ptr noundef nonnull align 8 dereferenceable(24) %18, double noundef %339)
          to label %340 unwind label %350

340:                                              ; preds = %338
  %341 = sext i32 %.0206 to i64
  %342 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %341
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  %344 = load i32, ptr %17, align 4, !tbaa !12
  %345 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %341
  %346 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %343, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %344, ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %347 unwind label %348

347:                                              ; preds = %340
  %.not337 = icmp eq i32 %346, 0
  br i1 %.not337, label %.thread461, label %352

348:                                              ; preds = %352, %340, %336
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %357

350:                                              ; preds = %338
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %337, i64 noundef 40) #16
  br label %357

352:                                              ; preds = %347
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %353, ptr noundef nonnull %337)
          to label %356 unwind label %348

.thread461:                                       ; preds = %347, %331
  %.str.54.sink = phi ptr [ @.str.54, %331 ], [ @.str.48, %347 ]
  %354 = load ptr, ptr @stderr, align 8, !tbaa !5
  %355 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %354, ptr noundef nonnull %.str.54.sink, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  br label %1032

356:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  br label %.loopexit

357:                                              ; preds = %348, %350, %334
  %.pn338.pn = phi { ptr, i32 } [ %335, %334 ], [ %349, %348 ], [ %351, %350 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %358

358:                                              ; preds = %357, %332
  %.pn338.pn.pn = phi { ptr, i32 } [ %.pn338.pn, %357 ], [ %333, %332 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  br label %1033

359:                                              ; preds = %320
  %360 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.55) #14
  %.not342 = icmp eq i32 %360, 0
  br i1 %.not342, label %361, label %414

361:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %362 unwind label %373

362:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #13
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %21, i32 noundef 0)
          to label %364 unwind label %375

364:                                              ; preds = %362
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %21, i32 noundef 1)
          to label %366 unwind label %375

366:                                              ; preds = %364
  %367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %21, i32 noundef 2)
          to label %368 unwind label %375

368:                                              ; preds = %366
  %369 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.56, ptr noundef nonnull %20, ptr noundef nonnull %363, ptr noundef nonnull %365, ptr noundef nonnull %367, ptr noundef nonnull %22, ptr noundef nonnull %23)
          to label %370 unwind label %375

370:                                              ; preds = %368
  %.not343 = icmp eq i32 %369, 6
  br i1 %.not343, label %377, label %.thread464

.thread464:                                       ; preds = %370
  %371 = load ptr, ptr @stderr, align 8, !tbaa !5
  %372 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %371, ptr noundef nonnull @.str.57, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  br label %1032

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

375:                                              ; preds = %368, %366, %364, %362
  %376 = landingpad { ptr, i32 }
          cleanup
  br label %412

377:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #13
  %378 = load double, ptr %23, align 8, !tbaa !14
  %379 = fmul double %378, 5.000000e-01
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %25, double noundef %379, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %380 unwind label %397

380:                                              ; preds = %377
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %24, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %381 unwind label %397

381:                                              ; preds = %380
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #13
  %382 = load double, ptr %23, align 8, !tbaa !14
  %383 = fmul double %382, 5.000000e-01
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %27, double noundef %383, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %384 unwind label %399

384:                                              ; preds = %381
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %26, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %385 unwind label %399

385:                                              ; preds = %384
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #13
  %386 = invoke noalias noundef nonnull dereferenceable(232) ptr @_Znwm(i64 noundef 232) #15
          to label %387 unwind label %401

387:                                              ; preds = %385
  %388 = load double, ptr %22, align 8, !tbaa !14
  invoke void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232) %386, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %26, double noundef %388)
          to label %389 unwind label %403

389:                                              ; preds = %387
  %390 = sext i32 %.0206 to i64
  %391 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %390
  %392 = load ptr, ptr %391, align 8, !tbaa !5
  %393 = load i32, ptr %20, align 4, !tbaa !12
  %394 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %390
  %395 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %392, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %393, ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %396 unwind label %401

396:                                              ; preds = %389
  %.not344 = icmp eq i32 %395, 0
  br i1 %.not344, label %407, label %405

397:                                              ; preds = %380, %377
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #13
  br label %411

399:                                              ; preds = %384, %381
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #13
  br label %410

401:                                              ; preds = %405, %389, %385
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %410

403:                                              ; preds = %387
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %386, i64 noundef 232) #16
  br label %410

405:                                              ; preds = %396
  %406 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %406, ptr noundef nonnull %386)
          to label %.thread467 unwind label %401

.thread467:                                       ; preds = %405
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  br label %.loopexit

407:                                              ; preds = %396
  %408 = load ptr, ptr @stderr, align 8, !tbaa !5
  %409 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %408, ptr noundef nonnull @.str.48, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  br label %1032

410:                                              ; preds = %401, %403, %399
  %.pn345.pn = phi { ptr, i32 } [ %400, %399 ], [ %402, %401 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #13
  br label %411

411:                                              ; preds = %410, %397
  %.pn345.pn.pn = phi { ptr, i32 } [ %.pn345.pn, %410 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #13
  br label %412

412:                                              ; preds = %411, %375
  %.pn345.pn.pn.pn = phi { ptr, i32 } [ %.pn345.pn.pn, %411 ], [ %376, %375 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #13
  br label %413

413:                                              ; preds = %412, %373
  %.pn345.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn345.pn.pn.pn, %412 ], [ %374, %373 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  br label %1033

414:                                              ; preds = %359
  %415 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.58) #14
  %.not351 = icmp eq i32 %415, 0
  br i1 %.not351, label %416, label %469

416:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %417 unwind label %428

417:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #13
  %418 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 0)
          to label %419 unwind label %430

419:                                              ; preds = %417
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 1)
          to label %421 unwind label %430

421:                                              ; preds = %419
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 2)
          to label %423 unwind label %430

423:                                              ; preds = %421
  %424 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.56, ptr noundef nonnull %28, ptr noundef nonnull %418, ptr noundef nonnull %420, ptr noundef nonnull %422, ptr noundef nonnull %30, ptr noundef nonnull %31)
          to label %425 unwind label %430

425:                                              ; preds = %423
  %.not352 = icmp eq i32 %424, 6
  br i1 %.not352, label %432, label %.thread470

.thread470:                                       ; preds = %425
  %426 = load ptr, ptr @stderr, align 8, !tbaa !5
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef nonnull @.str.59, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #13
  br label %1032

428:                                              ; preds = %416
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %468

430:                                              ; preds = %423, %421, %419, %417
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %467

432:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #13
  %433 = load double, ptr %31, align 8, !tbaa !14
  %434 = fmul double %433, 5.000000e-01
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %33, double noundef %434, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %435 unwind label %452

435:                                              ; preds = %432
  invoke void @_ZmiRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %32, ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %436 unwind label %452

436:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #13
  %437 = load double, ptr %31, align 8, !tbaa !14
  %438 = fmul double %437, 5.000000e-01
  invoke void @_ZmldRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Vector) align 8 %35, double noundef %438, ptr noundef nonnull align 8 dereferenceable(24) @R3posy_vector)
          to label %439 unwind label %454

439:                                              ; preds = %436
  invoke void @_ZplRK7R3PointRK8R3Vector(ptr dead_on_unwind nonnull writable sret(%class.R3Point) align 8 %34, ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %440 unwind label %454

440:                                              ; preds = %439
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #13
  %441 = invoke noalias noundef nonnull dereferenceable(160) ptr @_Znwm(i64 noundef 160) #15
          to label %442 unwind label %456

442:                                              ; preds = %440
  %443 = load double, ptr %30, align 8, !tbaa !14
  invoke void @_ZN6R3ConeC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(160) %441, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %34, double noundef %443)
          to label %444 unwind label %458

444:                                              ; preds = %442
  %445 = sext i32 %.0206 to i64
  %446 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %445
  %447 = load ptr, ptr %446, align 8, !tbaa !5
  %448 = load i32, ptr %28, align 4, !tbaa !12
  %449 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %445
  %450 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %447, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %448, ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %451 unwind label %456

451:                                              ; preds = %444
  %.not353 = icmp eq i32 %450, 0
  br i1 %.not353, label %462, label %460

452:                                              ; preds = %435, %432
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #13
  br label %466

454:                                              ; preds = %439, %436
  %455 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #13
  br label %465

456:                                              ; preds = %460, %444, %440
  %457 = landingpad { ptr, i32 }
          cleanup
  br label %465

458:                                              ; preds = %442
  %459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %441, i64 noundef 160) #16
  br label %465

460:                                              ; preds = %451
  %461 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %461, ptr noundef nonnull %441)
          to label %.thread473 unwind label %456

.thread473:                                       ; preds = %460
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #13
  br label %.loopexit

462:                                              ; preds = %451
  %463 = load ptr, ptr @stderr, align 8, !tbaa !5
  %464 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %463, ptr noundef nonnull @.str.48, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #13
  br label %1032

465:                                              ; preds = %456, %458, %454
  %.pn354.pn = phi { ptr, i32 } [ %455, %454 ], [ %457, %456 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #13
  br label %466

466:                                              ; preds = %465, %452
  %.pn354.pn.pn = phi { ptr, i32 } [ %.pn354.pn, %465 ], [ %453, %452 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #13
  br label %467

467:                                              ; preds = %466, %430
  %.pn354.pn.pn.pn = phi { ptr, i32 } [ %.pn354.pn.pn, %466 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  br label %468

468:                                              ; preds = %467, %428
  %.pn354.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn354.pn.pn.pn, %467 ], [ %429, %428 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #13
  br label %1033

469:                                              ; preds = %414
  %470 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.60) #14
  %.not360 = icmp eq i32 %470, 0
  br i1 %.not360, label %471, label %505

471:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %37) #13
  %472 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.61, ptr noundef nonnull %36, ptr noundef nonnull %37)
          to label %473 unwind label %476

473:                                              ; preds = %471
  %.not361 = icmp eq i32 %472, 2
  br i1 %.not361, label %478, label %.thread476

.thread476:                                       ; preds = %473
  %474 = load ptr, ptr @stderr, align 8, !tbaa !5
  %475 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %474, ptr noundef nonnull @.str.62, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #13
  br label %1032

476:                                              ; preds = %471
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %504

478:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %38) #13
  %479 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) %1) #13
  %480 = call noundef ptr @strrchr(ptr noundef nonnull dereferenceable(1) %38, i32 noundef 47) #14
  %.not362 = icmp eq ptr %480, null
  br i1 %.not362, label %483, label %481

481:                                              ; preds = %478
  %482 = getelementptr inbounds i8, ptr %480, i64 1
  store i8 0, ptr %482, align 1, !tbaa !9
  br label %484

483:                                              ; preds = %478
  store i8 0, ptr %38, align 16, !tbaa !9
  br label %484

484:                                              ; preds = %483, %481
  %485 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %38, ptr noundef nonnull dereferenceable(1) %37) #13
  %486 = invoke noundef ptr @_ZL8ReadMeshPKc(ptr noundef nonnull %38)
          to label %487 unwind label %488

487:                                              ; preds = %484
  %.not363 = icmp eq ptr %486, null
  br i1 %.not363, label %.thread480, label %490

488:                                              ; preds = %501, %490, %484
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %38) #13
  br label %504

490:                                              ; preds = %487
  %491 = sext i32 %.0206 to i64
  %492 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %491
  %493 = load ptr, ptr %492, align 8, !tbaa !5
  %494 = load i32, ptr %36, align 4, !tbaa !12
  %495 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %491
  %496 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %493, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %494, ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %497 unwind label %488

497:                                              ; preds = %490
  %.not364 = icmp eq i32 %496, 0
  br i1 %.not364, label %498, label %501

498:                                              ; preds = %497
  %499 = load ptr, ptr @stderr, align 8, !tbaa !5
  %500 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %499, ptr noundef nonnull @.str.48, i32 noundef %.0209, ptr noundef %1) #12
  br label %.thread480

501:                                              ; preds = %497
  %502 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %502, ptr noundef nonnull %486)
          to label %503 unwind label %488

.thread480:                                       ; preds = %487, %498
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %38) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #13
  br label %1032

503:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %38) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #13
  br label %.loopexit

504:                                              ; preds = %488, %476
  %.pn365 = phi { ptr, i32 } [ %489, %488 ], [ %477, %476 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #13
  br label %1033

505:                                              ; preds = %469
  %506 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.63) #14
  %.not367 = icmp eq i32 %506, 0
  br i1 %.not367, label %507, label %550

507:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #13
  %508 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.50, ptr noundef nonnull %39, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45)
          to label %509 unwind label %512

509:                                              ; preds = %507
  %.not368 = icmp eq i32 %508, 7
  br i1 %.not368, label %514, label %.thread483

.thread483:                                       ; preds = %509
  %510 = load ptr, ptr @stderr, align 8, !tbaa !5
  %511 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %510, ptr noundef nonnull @.str.64, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #13
  br label %1032

512:                                              ; preds = %507
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %549

514:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %46) #13
  %515 = load double, ptr %40, align 8, !tbaa !14
  %516 = load double, ptr %41, align 8, !tbaa !14
  %517 = load double, ptr %42, align 8, !tbaa !14
  invoke void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %46, double noundef %515, double noundef %516, double noundef %517)
          to label %518 unwind label %534

518:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %47) #13
  %519 = load double, ptr %43, align 8, !tbaa !14
  %520 = load double, ptr %44, align 8, !tbaa !14
  %521 = load double, ptr %45, align 8, !tbaa !14
  invoke void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %47, double noundef %519, double noundef %520, double noundef %521)
          to label %522 unwind label %536

522:                                              ; preds = %518
  %523 = invoke noalias noundef nonnull dereferenceable(232) ptr @_Znwm(i64 noundef 232) #15
          to label %524 unwind label %538

524:                                              ; preds = %522
  %525 = load double, ptr @RN_BIG_EPSILON, align 8, !tbaa !14
  invoke void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232) %523, ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 8 dereferenceable(24) %47, double noundef %525)
          to label %526 unwind label %540

526:                                              ; preds = %524
  %527 = sext i32 %.0206 to i64
  %528 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %527
  %529 = load ptr, ptr %528, align 8, !tbaa !5
  %530 = load i32, ptr %39, align 4, !tbaa !12
  %531 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %527
  %532 = invoke noundef i32 @_ZL31FindPrincetonMaterialAndElementP7R3SceneP11R3SceneNodeRK7RNArrayIP10R3MaterialEiRS5_S9_RP14R3SceneElement(ptr noundef nonnull %0, ptr noundef %529, ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %530, ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %533 unwind label %538

533:                                              ; preds = %526
  %.not369 = icmp eq i32 %532, 0
  br i1 %.not369, label %544, label %542

534:                                              ; preds = %514
  %535 = landingpad { ptr, i32 }
          cleanup
  br label %548

536:                                              ; preds = %518
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %547

538:                                              ; preds = %542, %526, %522
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %547

540:                                              ; preds = %524
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %523, i64 noundef 232) #16
  br label %547

542:                                              ; preds = %533
  %543 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96) %543, ptr noundef nonnull %523)
          to label %.thread486 unwind label %538

.thread486:                                       ; preds = %542
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #13
  br label %.loopexit

544:                                              ; preds = %533
  %545 = load ptr, ptr @stderr, align 8, !tbaa !5
  %546 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %545, ptr noundef nonnull @.str.48, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #13
  br label %1032

547:                                              ; preds = %538, %540, %536
  %.pn370.pn = phi { ptr, i32 } [ %537, %536 ], [ %539, %538 ], [ %541, %540 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #13
  br label %548

548:                                              ; preds = %547, %534
  %.pn370.pn.pn = phi { ptr, i32 } [ %.pn370.pn, %547 ], [ %535, %534 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #13
  br label %549

549:                                              ; preds = %548, %512
  %.pn370.pn.pn.pn = phi { ptr, i32 } [ %.pn370.pn.pn, %548 ], [ %513, %512 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #13
  br label %1033

550:                                              ; preds = %505
  %551 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.65) #14
  %.not375 = icmp eq i32 %551, 0
  br i1 %.not375, label %554, label %552

552:                                              ; preds = %550
  %553 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.66) #14
  %.not376 = icmp eq i32 %553, 0
  br i1 %.not376, label %554, label %606

554:                                              ; preds = %552, %550
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #13
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %49) #13
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %50) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(4096) %50, i8 0, i64 4096, i1 false)
  %555 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.66) #14
  %.not377 = icmp eq i32 %555, 0
  br i1 %.not377, label %556, label %560

556:                                              ; preds = %554
  %557 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.44, ptr noundef nonnull %50)
          to label %560 unwind label %558

558:                                              ; preds = %569, %560, %556
  %559 = landingpad { ptr, i32 }
          cleanup
  br label %605

560:                                              ; preds = %556, %554
  %561 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.67, ptr noundef nonnull %48, ptr noundef nonnull %49, ptr noundef nonnull %107, ptr noundef nonnull %108, ptr noundef nonnull %109, ptr noundef nonnull %110, ptr noundef nonnull %111, ptr noundef nonnull %112, ptr noundef nonnull %113, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %116, ptr noundef nonnull %117, ptr noundef nonnull %118, ptr noundef nonnull %119, ptr noundef nonnull %120, ptr noundef nonnull %121)
          to label %562 unwind label %558

562:                                              ; preds = %560
  %.not378 = icmp eq i32 %561, 17
  br i1 %.not378, label %563, label %597

563:                                              ; preds = %562
  %564 = load i32, ptr %48, align 4, !tbaa !12
  %565 = icmp sgt i32 %564, -1
  br i1 %565, label %566, label %575

566:                                              ; preds = %563
  %567 = call noundef i32 @_ZNK8RNVArray8NEntriesEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
  %568 = icmp slt i32 %564, %567
  br i1 %568, label %569, label %574

569:                                              ; preds = %566
  %570 = load i32, ptr %48, align 4, !tbaa !12
  %571 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7RNArrayIP10R3MaterialEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %570)
          to label %572 unwind label %558

572:                                              ; preds = %569
  %573 = load ptr, ptr %571, align 8, !tbaa !5
  store ptr %573, ptr %5, align 8, !tbaa !5
  br label %575

574:                                              ; preds = %566
  store ptr null, ptr %5, align 8, !tbaa !5
  br label %575

575:                                              ; preds = %572, %574, %563
  %576 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #15
          to label %577 unwind label %581

577:                                              ; preds = %575
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %576, ptr noundef nonnull %0)
          to label %578 unwind label %583

578:                                              ; preds = %577
  %579 = load i8, ptr %50, align 16, !tbaa !9
  %.not379 = icmp eq i8 %579, 0
  br i1 %.not379, label %585, label %580

580:                                              ; preds = %578
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %576, ptr noundef nonnull %50)
          to label %585 unwind label %581

581:                                              ; preds = %588, %580, %575
  %582 = landingpad { ptr, i32 }
          cleanup
  br label %605

583:                                              ; preds = %577
  %584 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %576, i64 noundef 432) #16
  br label %605

585:                                              ; preds = %580, %578
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %51) #13
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %52) #13
  invoke void @_ZN8R4MatrixC1EPKd(ptr noundef nonnull align 8 dereferenceable(128) %52, ptr noundef nonnull %49)
          to label %586 unwind label %600

586:                                              ; preds = %585
  invoke void @_ZN8R3AffineC1ERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272) %51, ptr noundef nonnull align 8 dereferenceable(128) %52, i32 noundef 0)
          to label %587 unwind label %600

587:                                              ; preds = %586
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %576, ptr noundef nonnull align 8 dereferenceable(272) %51)
          to label %588 unwind label %602

588:                                              ; preds = %587
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %51) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %52) #13
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %51) #13
  %589 = sext i32 %.0206 to i64
  %590 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %589
  %591 = load ptr, ptr %590, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %591, ptr noundef nonnull %576)
          to label %.thread489 unwind label %581

.thread489:                                       ; preds = %588
  %592 = add nsw i32 %.0206, 1
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %593
  store ptr %576, ptr %594, align 8, !tbaa !5
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  %596 = getelementptr inbounds [1024 x ptr], ptr %8, i64 0, i64 %593
  store ptr %595, ptr %596, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %50) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %49) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #13
  br label %.loopexit

597:                                              ; preds = %562
  %598 = load ptr, ptr @stderr, align 8, !tbaa !5
  %599 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %598, ptr noundef nonnull @.str.68, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %50) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %49) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #13
  br label %1032

600:                                              ; preds = %586, %585
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %604

602:                                              ; preds = %587
  %603 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %51) #13
  br label %604

604:                                              ; preds = %602, %600
  %.pn380 = phi { ptr, i32 } [ %603, %602 ], [ %601, %600 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %52) #13
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %51) #13
  br label %605

605:                                              ; preds = %581, %583, %604, %558
  %.pn382.pn = phi { ptr, i32 } [ %559, %558 ], [ %582, %581 ], [ %.pn380, %604 ], [ %584, %583 ]
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %50) #13
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %49) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #13
  br label %1033

606:                                              ; preds = %552
  %607 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.69) #14
  %.not385 = icmp eq i32 %607, 0
  br i1 %.not385, label %608, label %615

608:                                              ; preds = %606
  %609 = icmp slt i32 %.0206, 1
  br i1 %609, label %610, label %613

610:                                              ; preds = %608
  %611 = load ptr, ptr @stderr, align 8, !tbaa !5
  %612 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %611, ptr noundef nonnull @.str.70, i32 noundef %.0209, ptr noundef %1) #12
  br label %1032

613:                                              ; preds = %608
  %614 = add nsw i32 %.0206, -1
  br label %.loopexit

615:                                              ; preds = %606
  %616 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.71) #14
  %.not386 = icmp eq i32 %616, 0
  br i1 %.not386, label %617, label %726

617:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %618 unwind label %658

618:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %54)
          to label %619 unwind label %660

619:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %55) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %55)
          to label %620 unwind label %662

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56)
          to label %621 unwind label %664

621:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %622 unwind label %666

622:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %60) #13
  %623 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %53, i32 noundef 0)
          to label %624 unwind label %668

624:                                              ; preds = %622
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %53, i32 noundef 1)
          to label %626 unwind label %668

626:                                              ; preds = %624
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %53, i32 noundef 2)
          to label %628 unwind label %668

628:                                              ; preds = %626
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %54, i32 noundef 0)
          to label %630 unwind label %668

630:                                              ; preds = %628
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %54, i32 noundef 1)
          to label %632 unwind label %668

632:                                              ; preds = %630
  %633 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %54, i32 noundef 2)
          to label %634 unwind label %668

634:                                              ; preds = %632
  %635 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %55, i32 noundef 0)
          to label %636 unwind label %668

636:                                              ; preds = %634
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %55, i32 noundef 1)
          to label %638 unwind label %668

638:                                              ; preds = %636
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %55, i32 noundef 2)
          to label %640 unwind label %668

640:                                              ; preds = %638
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %56, i32 noundef 0)
          to label %642 unwind label %668

642:                                              ; preds = %640
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %56, i32 noundef 1)
          to label %644 unwind label %668

644:                                              ; preds = %642
  %645 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %56, i32 noundef 2)
          to label %646 unwind label %668

646:                                              ; preds = %644
  %647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %57, i32 noundef 0)
          to label %648 unwind label %668

648:                                              ; preds = %646
  %649 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %57, i32 noundef 1)
          to label %650 unwind label %668

650:                                              ; preds = %648
  %651 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %57, i32 noundef 2)
          to label %652 unwind label %668

652:                                              ; preds = %650
  %653 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.72, ptr noundef nonnull %623, ptr noundef nonnull %625, ptr noundef nonnull %627, ptr noundef nonnull %629, ptr noundef nonnull %631, ptr noundef nonnull %633, ptr noundef nonnull %635, ptr noundef nonnull %637, ptr noundef nonnull %639, ptr noundef nonnull %641, ptr noundef nonnull %643, ptr noundef nonnull %645, ptr noundef nonnull %647, ptr noundef nonnull %649, ptr noundef nonnull %651, ptr noundef nonnull %58, ptr noundef nonnull %59, ptr noundef nonnull %60)
          to label %654 unwind label %668

654:                                              ; preds = %652
  %.not387 = icmp eq i32 %653, 18
  br i1 %.not387, label %670, label %655

655:                                              ; preds = %654
  %656 = load ptr, ptr @stderr, align 8, !tbaa !5
  %657 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %656, ptr noundef nonnull @.str.73, i32 noundef %.0209, ptr noundef %1) #12
  br label %.thread494

658:                                              ; preds = %617
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %725

660:                                              ; preds = %618
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %724

662:                                              ; preds = %619
  %663 = landingpad { ptr, i32 }
          cleanup
  br label %723

664:                                              ; preds = %620
  %665 = landingpad { ptr, i32 }
          cleanup
  br label %722

666:                                              ; preds = %621
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %721

668:                                              ; preds = %652, %650, %648, %646, %644, %642, %640, %638, %636, %634, %632, %630, %628, %626, %624, %622
  %669 = landingpad { ptr, i32 }
          cleanup
  br label %720

670:                                              ; preds = %654
  %671 = invoke noalias noundef nonnull dereferenceable(184) ptr @_Znwm(i64 noundef 184) #15
          to label %672 unwind label %683

672:                                              ; preds = %670
  %673 = load double, ptr %58, align 8, !tbaa !14
  %674 = load double, ptr %59, align 8, !tbaa !14
  invoke void @_ZN6R3BrdfC1ERK5RNRgbS2_S2_S2_S2_ddPKc(ptr noundef nonnull align 8 dereferenceable(180) %671, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(24) %57, double noundef %673, double noundef %674, ptr noundef null)
          to label %675 unwind label %685

675:                                              ; preds = %672
  invoke void @_ZN7R3Scene10InsertBrdfEP6R3Brdf(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %671)
          to label %676 unwind label %683

676:                                              ; preds = %675
  %677 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %60, ptr noundef nonnull dereferenceable(1) @.str.74) #14
  %.not388 = icmp eq i32 %677, 0
  br i1 %.not388, label %709, label %678

678:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %61) #13
  %679 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %61, ptr noundef nonnull dereferenceable(1) %1) #13
  %680 = call noundef ptr @strrchr(ptr noundef nonnull dereferenceable(1) %61, i32 noundef 47) #14
  %.not389 = icmp eq ptr %680, null
  br i1 %.not389, label %687, label %681

681:                                              ; preds = %678
  %682 = getelementptr inbounds i8, ptr %680, i64 1
  store i8 0, ptr %682, align 1, !tbaa !9
  br label %688

683:                                              ; preds = %675, %670
  %684 = landingpad { ptr, i32 }
          cleanup
  br label %720

685:                                              ; preds = %672
  %686 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %671, i64 noundef 184) #16
  br label %720

687:                                              ; preds = %678
  store i8 0, ptr %61, align 16, !tbaa !9
  br label %688

688:                                              ; preds = %687, %681
  %689 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %61, ptr noundef nonnull dereferenceable(1) %60) #13
  %690 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #15
          to label %691 unwind label %697

691:                                              ; preds = %688
  invoke void @_ZN7R2ImageC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %690)
          to label %692 unwind label %699

692:                                              ; preds = %691
  %693 = invoke noundef i32 @_ZN7R2Image4ReadEPKc(ptr noundef nonnull align 8 dereferenceable(24) %690, ptr noundef nonnull %61)
          to label %694 unwind label %697

694:                                              ; preds = %692
  %.not390.not = icmp eq i32 %693, 0
  br i1 %.not390.not, label %.thread491, label %701

.thread491:                                       ; preds = %694
  %695 = load ptr, ptr @stderr, align 8, !tbaa !5
  %696 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %695, ptr noundef nonnull @.str.75, ptr noundef nonnull %61, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %61) #13
  br label %.thread494

697:                                              ; preds = %704, %701, %692, %688
  %698 = landingpad { ptr, i32 }
          cleanup
  br label %708

699:                                              ; preds = %691
  %700 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %690, i64 noundef 24) #16
  br label %708

701:                                              ; preds = %694
  %702 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #15
          to label %703 unwind label %697

703:                                              ; preds = %701
  invoke void @_ZN9R2TextureC1EPK7R2Image13R2TextureWrapS3_15R2TextureFilterS4_14R2TextureBlendPKc(ptr noundef nonnull align 8 dereferenceable(76) %702, ptr noundef nonnull %690, i32 noundef 10497, i32 noundef 10497, i32 noundef 9987, i32 noundef 9729, i32 noundef 8448, ptr noundef null)
          to label %704 unwind label %706

704:                                              ; preds = %703
  invoke void @_ZN7R3Scene13InsertTextureEP9R2Texture(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %702)
          to label %705 unwind label %697

705:                                              ; preds = %704
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %61) #13
  br label %709

706:                                              ; preds = %703
  %707 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %702, i64 noundef 80) #16
  br label %708

708:                                              ; preds = %706, %699, %697
  %.pn391 = phi { ptr, i32 } [ %698, %697 ], [ %707, %706 ], [ %700, %699 ]
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %61) #13
  br label %720

709:                                              ; preds = %705, %676
  %.1309 = phi ptr [ %702, %705 ], [ null, %676 ]
  %710 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #15
          to label %711 unwind label %716

711:                                              ; preds = %709
  invoke void @_ZN10R3MaterialC1EPK6R3BrdfPK9R2TexturePKc(ptr noundef nonnull align 8 dereferenceable(48) %710, ptr noundef nonnull %671, ptr noundef %.1309, ptr noundef null)
          to label %712 unwind label %718

712:                                              ; preds = %711
  invoke void @_ZN7R3Scene14InsertMaterialEP10R3Material(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %710)
          to label %713 unwind label %716

713:                                              ; preds = %712
  %714 = invoke noundef ptr @_ZN7RNArrayIP10R3MaterialE6InsertES1_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %710)
          to label %715 unwind label %716

.thread494:                                       ; preds = %655, %.thread491
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %60) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #13
  br label %1032

715:                                              ; preds = %713
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %60) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #13
  br label %.loopexit

716:                                              ; preds = %713, %712, %709
  %717 = landingpad { ptr, i32 }
          cleanup
  br label %720

718:                                              ; preds = %711
  %719 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %710, i64 noundef 48) #16
  br label %720

720:                                              ; preds = %683, %685, %716, %718, %708, %668
  %.pn393.pn.pn.pn = phi { ptr, i32 } [ %669, %668 ], [ %684, %683 ], [ %686, %685 ], [ %.pn391, %708 ], [ %717, %716 ], [ %719, %718 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %60) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #13
  br label %721

721:                                              ; preds = %720, %666
  %.pn393.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn393.pn.pn.pn, %720 ], [ %667, %666 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #13
  br label %722

722:                                              ; preds = %721, %664
  %.pn393.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn393.pn.pn.pn.pn, %721 ], [ %665, %664 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #13
  br label %723

723:                                              ; preds = %722, %662
  %.pn393.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn393.pn.pn.pn.pn.pn, %722 ], [ %663, %662 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #13
  br label %724

724:                                              ; preds = %723, %660
  %.pn393.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn393.pn.pn.pn.pn.pn.pn, %723 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %54) #13
  br label %725

725:                                              ; preds = %724, %658
  %.pn393.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn393.pn.pn.pn.pn.pn.pn.pn, %724 ], [ %659, %658 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #13
  br label %1033

726:                                              ; preds = %615
  %727 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.76) #14
  %.not403 = icmp eq i32 %727, 0
  br i1 %.not403, label %728, label %763

728:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %62)
          to label %729 unwind label %745

729:                                              ; preds = %728
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #13
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %730 unwind label %747

730:                                              ; preds = %729
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %62, i32 noundef 0)
          to label %732 unwind label %747

732:                                              ; preds = %730
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %62, i32 noundef 1)
          to label %734 unwind label %747

734:                                              ; preds = %732
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %62, i32 noundef 2)
          to label %736 unwind label %747

736:                                              ; preds = %734
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %63, i32 noundef 0)
          to label %738 unwind label %747

738:                                              ; preds = %736
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %63, i32 noundef 1)
          to label %740 unwind label %747

740:                                              ; preds = %738
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %63, i32 noundef 2)
          to label %742 unwind label %747

742:                                              ; preds = %740
  %743 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.77, ptr noundef nonnull %731, ptr noundef nonnull %733, ptr noundef nonnull %735, ptr noundef nonnull %737, ptr noundef nonnull %739, ptr noundef nonnull %741)
          to label %744 unwind label %747

744:                                              ; preds = %742
  %.not404 = icmp eq i32 %743, 6
  br i1 %.not404, label %749, label %754

745:                                              ; preds = %728
  %746 = landingpad { ptr, i32 }
          cleanup
  br label %762

747:                                              ; preds = %749, %742, %740, %738, %736, %734, %732, %730, %729
  %748 = landingpad { ptr, i32 }
          cleanup
  br label %761

749:                                              ; preds = %744
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %750 unwind label %747

750:                                              ; preds = %749
  %751 = invoke noalias noundef nonnull dereferenceable(104) ptr @_Znwm(i64 noundef 104) #15
          to label %752 unwind label %757

752:                                              ; preds = %750
  invoke void @_ZN18R3DirectionalLightC1ERK8R3VectorRK5RNRgbdi(ptr noundef nonnull align 8 dereferenceable(104) %751, ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %62, double noundef 1.000000e+00, i32 noundef 1)
          to label %753 unwind label %759

753:                                              ; preds = %752
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %751)
          to label %.thread497 unwind label %757

.thread497:                                       ; preds = %753
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #13
  br label %.loopexit

754:                                              ; preds = %744
  %755 = load ptr, ptr @stderr, align 8, !tbaa !5
  %756 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %755, ptr noundef nonnull @.str.78, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #13
  br label %1032

757:                                              ; preds = %753, %750
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %761

759:                                              ; preds = %752
  %760 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %751, i64 noundef 104) #16
  br label %761

761:                                              ; preds = %757, %759, %747
  %.pn405.pn = phi { ptr, i32 } [ %748, %747 ], [ %758, %757 ], [ %760, %759 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #13
  br label %762

762:                                              ; preds = %761, %745
  %.pn405.pn.pn = phi { ptr, i32 } [ %.pn405.pn, %761 ], [ %746, %745 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #13
  br label %1033

763:                                              ; preds = %726
  %764 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.79) #14
  %.not409 = icmp eq i32 %764, 0
  br i1 %.not409, label %765, label %805

765:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %64) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %64)
          to label %766 unwind label %782

766:                                              ; preds = %765
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %65) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %65)
          to label %767 unwind label %784

767:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #13
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %64, i32 noundef 0)
          to label %769 unwind label %786

769:                                              ; preds = %767
  %770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %64, i32 noundef 1)
          to label %771 unwind label %786

771:                                              ; preds = %769
  %772 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %64, i32 noundef 2)
          to label %773 unwind label %786

773:                                              ; preds = %771
  %774 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 0)
          to label %775 unwind label %786

775:                                              ; preds = %773
  %776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 1)
          to label %777 unwind label %786

777:                                              ; preds = %775
  %778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 2)
          to label %779 unwind label %786

779:                                              ; preds = %777
  %780 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.80, ptr noundef nonnull %768, ptr noundef nonnull %770, ptr noundef nonnull %772, ptr noundef nonnull %774, ptr noundef nonnull %776, ptr noundef nonnull %778, ptr noundef nonnull %66, ptr noundef nonnull %67, ptr noundef nonnull %68)
          to label %781 unwind label %786

781:                                              ; preds = %779
  %.not410 = icmp eq i32 %780, 9
  br i1 %.not410, label %788, label %795

782:                                              ; preds = %765
  %783 = landingpad { ptr, i32 }
          cleanup
  br label %804

784:                                              ; preds = %766
  %785 = landingpad { ptr, i32 }
          cleanup
  br label %803

786:                                              ; preds = %779, %777, %775, %773, %771, %769, %767
  %787 = landingpad { ptr, i32 }
          cleanup
  br label %802

788:                                              ; preds = %781
  %789 = invoke noalias noundef nonnull dereferenceable(128) ptr @_Znwm(i64 noundef 128) #15
          to label %790 unwind label %798

790:                                              ; preds = %788
  %791 = load double, ptr %66, align 8, !tbaa !14
  %792 = load double, ptr %67, align 8, !tbaa !14
  %793 = load double, ptr %68, align 8, !tbaa !14
  invoke void @_ZN12R3PointLightC1ERK7R3PointRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(128) %789, ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %64, double noundef 1.000000e+00, i32 noundef 1, double noundef %791, double noundef %792, double noundef %793)
          to label %794 unwind label %800

794:                                              ; preds = %790
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %789)
          to label %.thread498 unwind label %798

.thread498:                                       ; preds = %794
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #13
  br label %.loopexit

795:                                              ; preds = %781
  %796 = load ptr, ptr @stderr, align 8, !tbaa !5
  %797 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %796, ptr noundef nonnull @.str.81, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #13
  br label %1032

798:                                              ; preds = %794, %788
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %802

800:                                              ; preds = %790
  %801 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %789, i64 noundef 128) #16
  br label %802

802:                                              ; preds = %798, %800, %786
  %.pn411.pn = phi { ptr, i32 } [ %787, %786 ], [ %799, %798 ], [ %801, %800 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #13
  br label %803

803:                                              ; preds = %802, %784
  %.pn411.pn.pn = phi { ptr, i32 } [ %.pn411.pn, %802 ], [ %785, %784 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #13
  br label %804

804:                                              ; preds = %803, %782
  %.pn411.pn.pn.pn = phi { ptr, i32 } [ %.pn411.pn.pn, %803 ], [ %783, %782 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #13
  br label %1033

805:                                              ; preds = %763
  %806 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.82) #14
  %.not416 = icmp eq i32 %806, 0
  br i1 %.not416, label %807, label %860

807:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %69)
          to label %808 unwind label %831

808:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %70) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %70)
          to label %809 unwind label %833

809:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #13
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %810 unwind label %835

810:                                              ; preds = %809
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #13
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %69, i32 noundef 0)
          to label %812 unwind label %837

812:                                              ; preds = %810
  %813 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %69, i32 noundef 1)
          to label %814 unwind label %837

814:                                              ; preds = %812
  %815 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %69, i32 noundef 2)
          to label %816 unwind label %837

816:                                              ; preds = %814
  %817 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %70, i32 noundef 0)
          to label %818 unwind label %837

818:                                              ; preds = %816
  %819 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %70, i32 noundef 1)
          to label %820 unwind label %837

820:                                              ; preds = %818
  %821 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %70, i32 noundef 2)
          to label %822 unwind label %837

822:                                              ; preds = %820
  %823 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %71, i32 noundef 0)
          to label %824 unwind label %837

824:                                              ; preds = %822
  %825 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %71, i32 noundef 1)
          to label %826 unwind label %837

826:                                              ; preds = %824
  %827 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %71, i32 noundef 2)
          to label %828 unwind label %837

828:                                              ; preds = %826
  %829 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.83, ptr noundef nonnull %811, ptr noundef nonnull %813, ptr noundef nonnull %815, ptr noundef nonnull %817, ptr noundef nonnull %819, ptr noundef nonnull %821, ptr noundef nonnull %823, ptr noundef nonnull %825, ptr noundef nonnull %827, ptr noundef nonnull %72, ptr noundef nonnull %73, ptr noundef nonnull %74, ptr noundef nonnull %75, ptr noundef nonnull %76)
          to label %830 unwind label %837

830:                                              ; preds = %828
  %.not417 = icmp eq i32 %829, 14
  br i1 %.not417, label %839, label %849

831:                                              ; preds = %807
  %832 = landingpad { ptr, i32 }
          cleanup
  br label %859

833:                                              ; preds = %808
  %834 = landingpad { ptr, i32 }
          cleanup
  br label %858

835:                                              ; preds = %809
  %836 = landingpad { ptr, i32 }
          cleanup
  br label %857

837:                                              ; preds = %839, %828, %826, %824, %822, %820, %818, %816, %814, %812, %810
  %838 = landingpad { ptr, i32 }
          cleanup
  br label %856

839:                                              ; preds = %830
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %840 unwind label %837

840:                                              ; preds = %839
  %841 = invoke noalias noundef nonnull dereferenceable(168) ptr @_Znwm(i64 noundef 168) #15
          to label %842 unwind label %852

842:                                              ; preds = %840
  %843 = load double, ptr %76, align 8, !tbaa !14
  %844 = load double, ptr %75, align 8, !tbaa !14
  %845 = load double, ptr %72, align 8, !tbaa !14
  %846 = load double, ptr %73, align 8, !tbaa !14
  %847 = load double, ptr %74, align 8, !tbaa !14
  invoke void @_ZN11R3SpotLightC1ERK7R3PointRK8R3VectorRK5RNRgbdddiddd(ptr noundef nonnull align 8 dereferenceable(168) %841, ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(24) %69, double noundef %843, double noundef %844, double noundef 1.000000e+00, i32 noundef 1, double noundef %845, double noundef %846, double noundef %847)
          to label %848 unwind label %854

848:                                              ; preds = %842
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %841)
          to label %.thread499 unwind label %852

.thread499:                                       ; preds = %848
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #13
  br label %.loopexit

849:                                              ; preds = %830
  %850 = load ptr, ptr @stderr, align 8, !tbaa !5
  %851 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %850, ptr noundef nonnull @.str.81, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #13
  br label %1032

852:                                              ; preds = %848, %840
  %853 = landingpad { ptr, i32 }
          cleanup
  br label %856

854:                                              ; preds = %842
  %855 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %841, i64 noundef 168) #16
  br label %856

856:                                              ; preds = %852, %854, %837
  %.pn418.pn = phi { ptr, i32 } [ %838, %837 ], [ %853, %852 ], [ %855, %854 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #13
  br label %857

857:                                              ; preds = %856, %835
  %.pn418.pn.pn = phi { ptr, i32 } [ %.pn418.pn, %856 ], [ %836, %835 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #13
  br label %858

858:                                              ; preds = %857, %833
  %.pn418.pn.pn.pn = phi { ptr, i32 } [ %.pn418.pn.pn, %857 ], [ %834, %833 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #13
  br label %859

859:                                              ; preds = %858, %831
  %.pn418.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn418.pn.pn.pn, %858 ], [ %832, %831 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #13
  br label %1033

860:                                              ; preds = %805
  %861 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.84) #14
  %.not424 = icmp eq i32 %861, 0
  br i1 %.not424, label %862, label %914

862:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %77) #13
  invoke void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %77)
          to label %863 unwind label %886

863:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %78) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %864 unwind label %888

864:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %79) #13
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %865 unwind label %890

865:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #13
  %866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %77, i32 noundef 0)
          to label %867 unwind label %892

867:                                              ; preds = %865
  %868 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %77, i32 noundef 1)
          to label %869 unwind label %892

869:                                              ; preds = %867
  %870 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5RNRgbixEi(ptr noundef nonnull align 8 dereferenceable(24) %77, i32 noundef 2)
          to label %871 unwind label %892

871:                                              ; preds = %869
  %872 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %78, i32 noundef 0)
          to label %873 unwind label %892

873:                                              ; preds = %871
  %874 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %78, i32 noundef 1)
          to label %875 unwind label %892

875:                                              ; preds = %873
  %876 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %78, i32 noundef 2)
          to label %877 unwind label %892

877:                                              ; preds = %875
  %878 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 0)
          to label %879 unwind label %892

879:                                              ; preds = %877
  %880 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 1)
          to label %881 unwind label %892

881:                                              ; preds = %879
  %882 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 2)
          to label %883 unwind label %892

883:                                              ; preds = %881
  %884 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.85, ptr noundef nonnull %866, ptr noundef nonnull %868, ptr noundef nonnull %870, ptr noundef nonnull %872, ptr noundef nonnull %874, ptr noundef nonnull %876, ptr noundef nonnull %878, ptr noundef nonnull %880, ptr noundef nonnull %882, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83)
          to label %885 unwind label %892

885:                                              ; preds = %883
  %.not425 = icmp eq i32 %884, 13
  br i1 %.not425, label %894, label %903

886:                                              ; preds = %862
  %887 = landingpad { ptr, i32 }
          cleanup
  br label %913

888:                                              ; preds = %863
  %889 = landingpad { ptr, i32 }
          cleanup
  br label %912

890:                                              ; preds = %864
  %891 = landingpad { ptr, i32 }
          cleanup
  br label %911

892:                                              ; preds = %894, %883, %881, %879, %877, %875, %873, %871, %869, %867, %865
  %893 = landingpad { ptr, i32 }
          cleanup
  br label %910

894:                                              ; preds = %885
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %895 unwind label %892

895:                                              ; preds = %894
  %896 = invoke noalias noundef nonnull dereferenceable(176) ptr @_Znwm(i64 noundef 176) #15
          to label %897 unwind label %906

897:                                              ; preds = %895
  %898 = load double, ptr %80, align 8, !tbaa !14
  %899 = load double, ptr %81, align 8, !tbaa !14
  %900 = load double, ptr %82, align 8, !tbaa !14
  %901 = load double, ptr %83, align 8, !tbaa !14
  invoke void @_ZN11R3AreaLightC1ERK7R3PointdRK8R3VectorRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(176) %896, ptr noundef nonnull align 8 dereferenceable(24) %78, double noundef %898, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %77, double noundef 1.000000e+00, i32 noundef 1, double noundef %899, double noundef %900, double noundef %901)
          to label %902 unwind label %908

902:                                              ; preds = %897
  invoke void @_ZN7R3Scene11InsertLightEP7R3Light(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %896)
          to label %.thread500 unwind label %906

.thread500:                                       ; preds = %902
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) #13
  br label %.loopexit

903:                                              ; preds = %885
  %904 = load ptr, ptr @stderr, align 8, !tbaa !5
  %905 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %904, ptr noundef nonnull @.str.86, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) #13
  br label %1032

906:                                              ; preds = %902, %895
  %907 = landingpad { ptr, i32 }
          cleanup
  br label %910

908:                                              ; preds = %897
  %909 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %896, i64 noundef 176) #16
  br label %910

910:                                              ; preds = %906, %908, %892
  %.pn426.pn = phi { ptr, i32 } [ %893, %892 ], [ %907, %906 ], [ %909, %908 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #13
  br label %911

911:                                              ; preds = %910, %890
  %.pn426.pn.pn = phi { ptr, i32 } [ %.pn426.pn, %910 ], [ %891, %890 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #13
  br label %912

912:                                              ; preds = %911, %888
  %.pn426.pn.pn.pn = phi { ptr, i32 } [ %.pn426.pn.pn, %911 ], [ %889, %888 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) #13
  br label %913

913:                                              ; preds = %912, %886
  %.pn426.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn426.pn.pn.pn, %912 ], [ %887, %886 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) #13
  br label %1033

914:                                              ; preds = %860
  %915 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.87) #14
  %.not432 = icmp eq i32 %915, 0
  br i1 %.not432, label %916, label %962

916:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %84) #13
  invoke void @_ZN7R3PointC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %917 unwind label %940

917:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %85) #13
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %85)
          to label %918 unwind label %942

918:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %86) #13
  invoke void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %86)
          to label %919 unwind label %944

919:                                              ; preds = %918
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #13
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef 0)
          to label %921 unwind label %946

921:                                              ; preds = %919
  %922 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef 1)
          to label %923 unwind label %946

923:                                              ; preds = %921
  %924 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN7R3PointixEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef 2)
          to label %925 unwind label %946

925:                                              ; preds = %923
  %926 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %85, i32 noundef 0)
          to label %927 unwind label %946

927:                                              ; preds = %925
  %928 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %85, i32 noundef 1)
          to label %929 unwind label %946

929:                                              ; preds = %927
  %930 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %85, i32 noundef 2)
          to label %931 unwind label %946

931:                                              ; preds = %929
  %932 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %86, i32 noundef 0)
          to label %933 unwind label %946

933:                                              ; preds = %931
  %934 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %86, i32 noundef 1)
          to label %935 unwind label %946

935:                                              ; preds = %933
  %936 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %86, i32 noundef 2)
          to label %937 unwind label %946

937:                                              ; preds = %935
  %938 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.88, ptr noundef nonnull %920, ptr noundef nonnull %922, ptr noundef nonnull %924, ptr noundef nonnull %926, ptr noundef nonnull %928, ptr noundef nonnull %930, ptr noundef nonnull %932, ptr noundef nonnull %934, ptr noundef nonnull %936, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89)
          to label %939 unwind label %946

939:                                              ; preds = %937
  %.not433 = icmp eq i32 %938, 12
  br i1 %.not433, label %948, label %953

940:                                              ; preds = %916
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %961

942:                                              ; preds = %917
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %960

944:                                              ; preds = %918
  %945 = landingpad { ptr, i32 }
          cleanup
  br label %959

946:                                              ; preds = %937, %935, %933, %931, %929, %927, %925, %923, %921, %919
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %958

948:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %90) #13
  %949 = load double, ptr %87, align 8, !tbaa !14
  %950 = load double, ptr %88, align 8, !tbaa !14
  %951 = load double, ptr %89, align 8, !tbaa !14
  invoke void @_ZN8R3CameraC1ERK7R3PointRK8R3VectorS5_dddd(ptr noundef nonnull align 8 dereferenceable(144) %90, ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(24) %86, double noundef %949, double noundef %949, double noundef %950, double noundef %951)
          to label %952 unwind label %956

952:                                              ; preds = %948
  invoke void @_ZN7R3Scene9SetCameraERK8R3Camera(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(144) %90)
          to label %.thread501 unwind label %956

.thread501:                                       ; preds = %952
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %90) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %86) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #13
  br label %.loopexit

953:                                              ; preds = %939
  %954 = load ptr, ptr @stderr, align 8, !tbaa !5
  %955 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %954, ptr noundef nonnull @.str.89, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %86) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #13
  br label %1032

956:                                              ; preds = %952, %948
  %957 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %90) #13
  br label %958

958:                                              ; preds = %956, %946
  %.pn434 = phi { ptr, i32 } [ %957, %956 ], [ %947, %946 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #13
  br label %959

959:                                              ; preds = %958, %944
  %.pn434.pn = phi { ptr, i32 } [ %.pn434, %958 ], [ %945, %944 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %86) #13
  br label %960

960:                                              ; preds = %959, %942
  %.pn434.pn.pn = phi { ptr, i32 } [ %.pn434.pn, %959 ], [ %943, %942 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #13
  br label %961

961:                                              ; preds = %960, %940
  %.pn434.pn.pn.pn = phi { ptr, i32 } [ %.pn434.pn.pn, %960 ], [ %941, %940 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #13
  br label %1033

962:                                              ; preds = %914
  %963 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.90) #14
  %.not439 = icmp eq i32 %963, 0
  br i1 %.not439, label %964, label %990

964:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %91) #13
  %965 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.44, ptr noundef nonnull %91)
          to label %966 unwind label %969

966:                                              ; preds = %964
  %.not440 = icmp eq i32 %965, 1
  br i1 %.not440, label %971, label %.thread502

.thread502:                                       ; preds = %966
  %967 = load ptr, ptr @stderr, align 8, !tbaa !5
  %968 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %967, ptr noundef nonnull @.str.91, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #13
  br label %1032

969:                                              ; preds = %964
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %989

971:                                              ; preds = %966
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %92) #13
  %972 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %92, ptr noundef nonnull dereferenceable(1) %1) #13
  %973 = call noundef ptr @strrchr(ptr noundef nonnull dereferenceable(1) %92, i32 noundef 47) #14
  %.not441 = icmp eq ptr %973, null
  br i1 %.not441, label %976, label %974

974:                                              ; preds = %971
  %975 = getelementptr inbounds i8, ptr %973, i64 1
  store i8 0, ptr %975, align 1, !tbaa !9
  br label %977

976:                                              ; preds = %971
  store i8 0, ptr %92, align 16, !tbaa !9
  br label %977

977:                                              ; preds = %976, %974
  %978 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %92, ptr noundef nonnull dereferenceable(1) %91) #13
  %979 = sext i32 %.0206 to i64
  %980 = getelementptr inbounds [1024 x ptr], ptr %7, i64 0, i64 %979
  %981 = load ptr, ptr %980, align 8, !tbaa !5
  %982 = invoke noundef i32 @_ZN7R3Scene8ReadFileEPKcP11R3SceneNode(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %92, ptr noundef %981)
          to label %983 unwind label %984

983:                                              ; preds = %977
  %.not444 = icmp eq i32 %982, 0
  br i1 %.not444, label %986, label %.thread505

.thread505:                                       ; preds = %983
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %92) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #13
  br label %.loopexit

984:                                              ; preds = %977
  %985 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %92) #13
  br label %989

986:                                              ; preds = %983
  %987 = load ptr, ptr @stderr, align 8, !tbaa !5
  %988 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %987, ptr noundef nonnull @.str.92, ptr noundef nonnull %92) #12
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %92) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #13
  br label %1032

989:                                              ; preds = %984, %969
  %.pn442 = phi { ptr, i32 } [ %985, %984 ], [ %970, %969 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #13
  br label %1033

990:                                              ; preds = %962
  %991 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.93) #14
  %.not445 = icmp eq i32 %991, 0
  br i1 %.not445, label %992, label %1008

992:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #13
  %993 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.94, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %95)
          to label %994 unwind label %995

994:                                              ; preds = %992
  %.not446 = icmp eq i32 %993, 3
  br i1 %.not446, label %997, label %1002

995:                                              ; preds = %992
  %996 = landingpad { ptr, i32 }
          cleanup
  br label %1007

997:                                              ; preds = %994
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %96) #13
  %998 = load double, ptr %93, align 8, !tbaa !14
  %999 = load double, ptr %94, align 8, !tbaa !14
  %1000 = load double, ptr %95, align 8, !tbaa !14
  invoke void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %96, double noundef %998, double noundef %999, double noundef %1000)
          to label %1001 unwind label %1005

1001:                                             ; preds = %997
  invoke void @_ZN7R3Scene13SetBackgroundERK5RNRgb(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(24) %96)
          to label %.thread508 unwind label %1005

.thread508:                                       ; preds = %1001
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #13
  br label %.loopexit

1002:                                             ; preds = %994
  %1003 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1004 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1003, ptr noundef nonnull @.str.95, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #13
  br label %1032

1005:                                             ; preds = %1001, %997
  %1006 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #13
  br label %1007

1007:                                             ; preds = %1005, %995
  %.pn447 = phi { ptr, i32 } [ %1006, %1005 ], [ %996, %995 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #13
  br label %1033

1008:                                             ; preds = %990
  %1009 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %9, ptr noundef nonnull dereferenceable(1) @.str.96) #14
  %.not449 = icmp eq i32 %1009, 0
  br i1 %.not449, label %1010, label %1026

1010:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #13
  %1011 = invoke i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %102, ptr noundef nonnull @.str.94, ptr noundef nonnull %97, ptr noundef nonnull %98, ptr noundef nonnull %99)
          to label %1012 unwind label %1013

1012:                                             ; preds = %1010
  %.not450 = icmp eq i32 %1011, 3
  br i1 %.not450, label %1015, label %1020

1013:                                             ; preds = %1010
  %1014 = landingpad { ptr, i32 }
          cleanup
  br label %1025

1015:                                             ; preds = %1012
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %100) #13
  %1016 = load double, ptr %97, align 8, !tbaa !14
  %1017 = load double, ptr %98, align 8, !tbaa !14
  %1018 = load double, ptr %99, align 8, !tbaa !14
  invoke void @_ZN5RNRgbC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %100, double noundef %1016, double noundef %1017, double noundef %1018)
          to label %1019 unwind label %1023

1019:                                             ; preds = %1015
  invoke void @_ZN7R3Scene10SetAmbientERK5RNRgb(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull align 8 dereferenceable(24) %100)
          to label %.thread509 unwind label %1023

.thread509:                                       ; preds = %1019
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #13
  br label %.loopexit

1020:                                             ; preds = %1012
  %1021 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1022 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1021, ptr noundef nonnull @.str.97, i32 noundef %.0209, ptr noundef %1) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #13
  br label %1032

1023:                                             ; preds = %1019, %1015
  %1024 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %100) #13
  br label %1025

1025:                                             ; preds = %1023, %1013
  %.pn451 = phi { ptr, i32 } [ %1024, %1023 ], [ %1014, %1013 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #13
  br label %1033

1026:                                             ; preds = %1008
  %1027 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1028 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1027, ptr noundef nonnull @.str.98, i32 noundef %.0209, ptr noundef %1, ptr noundef nonnull %9) #12
  br label %1032

.loopexit:                                        ; preds = %.preheader, %.thread509, %.thread508, %.thread505, %.thread501, %.thread500, %.thread499, %.thread498, %.thread497, %715, %.thread489, %.thread486, %503, %.thread473, %.thread467, %356, %317, %208, %613
  %.2208 = phi i32 [ %.0206, %715 ], [ %614, %613 ], [ %.0206, %503 ], [ %.0206, %356 ], [ %.0206, %317 ], [ %.0206, %208 ], [ %.0206, %.thread467 ], [ %.0206, %.thread473 ], [ %.0206, %.thread486 ], [ %592, %.thread489 ], [ %.0206, %.thread497 ], [ %.0206, %.thread498 ], [ %.0206, %.thread499 ], [ %.0206, %.thread500 ], [ %.0206, %.thread501 ], [ %.0206, %.thread505 ], [ %.0206, %.thread508 ], [ %.0206, %.thread509 ], [ %.0206, %.preheader ]
  %1029 = add nuw nsw i32 %.0209, 1
  br label %122, !llvm.loop !16

1030:                                             ; preds = %124
  %1031 = call i32 @fclose(ptr noundef %102)
  br label %1032

1032:                                             ; preds = %1020, %1002, %986, %.thread502, %953, %903, %849, %795, %754, %.thread494, %597, %544, %.thread483, %.thread480, %.thread476, %462, %.thread470, %407, %.thread464, %.thread461, %.thread457, %.thread, %1030, %1026, %610
  %.30 = phi i32 [ 0, %1026 ], [ 0, %1020 ], [ 0, %1002 ], [ 0, %986 ], [ 0, %953 ], [ 0, %903 ], [ 0, %849 ], [ 0, %795 ], [ 0, %754 ], [ 0, %610 ], [ 0, %597 ], [ 0, %544 ], [ 0, %462 ], [ 0, %407 ], [ 1, %1030 ], [ 0, %.thread ], [ 0, %.thread457 ], [ 0, %.thread461 ], [ 0, %.thread464 ], [ 0, %.thread470 ], [ 0, %.thread476 ], [ 0, %.thread480 ], [ 0, %.thread483 ], [ 0, %.thread494 ], [ 0, %.thread502 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #13
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #13
  br label %1034

1033:                                             ; preds = %1025, %1007, %989, %961, %913, %859, %804, %762, %725, %605, %549, %504, %468, %413, %358, %319, %211, %134
  %.pn451.pn = phi { ptr, i32 } [ %.pn451, %1025 ], [ %.pn447, %1007 ], [ %.pn442, %989 ], [ %.pn434.pn.pn.pn, %961 ], [ %.pn426.pn.pn.pn.pn, %913 ], [ %.pn418.pn.pn.pn.pn, %859 ], [ %.pn411.pn.pn.pn, %804 ], [ %.pn405.pn.pn, %762 ], [ %.pn393.pn.pn.pn.pn.pn.pn.pn.pn, %725 ], [ %.pn382.pn, %605 ], [ %.pn370.pn.pn.pn, %549 ], [ %.pn365, %504 ], [ %.pn354.pn.pn.pn.pn, %468 ], [ %.pn345.pn.pn.pn.pn, %413 ], [ %.pn338.pn.pn, %358 ], [ %.pn331.pn.pn, %319 ], [ %.pn.pn.pn.pn.pn.pn.pn, %211 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 8192, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #13
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #13
  resume { ptr, i32 } %.pn451.pn

1034:                                             ; preds = %1032, %103
  %.31 = phi i32 [ %.30, %1032 ], [ 0, %103 ]
  ret i32 %.31
}

declare void @_ZN8R3CameraC1ERK7R3PointRK8R3VectorS5_dddd(ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN16R3TriangleVertexC1ERK7R3Point(ptr noundef nonnull align 8 dereferenceable(100), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare void @_ZN10R3TriangleC1EP16R3TriangleVertexS1_S1_(ptr noundef nonnull align 8 dereferenceable(132), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

declare void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) local_unnamed_addr #1

declare void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) local_unnamed_addr #1

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

declare void @_ZN14R3SceneElement11InsertShapeEP7R3Shape(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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

; Function Attrs: nofree nounwind
declare noundef i32 @fgetc(ptr nocapture noundef) local_unnamed_addr #7

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

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

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

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

declare void @_ZN8R3SphereC1ERK7R3Pointd(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

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

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

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

declare void @_ZN10R3CylinderC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(232), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

declare void @_ZN6R3ConeC1ERK7R3PointS2_d(ptr noundef nonnull align 8 dereferenceable(160), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef) unnamed_addr #1

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

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

declare void @_ZN7R3PointC1Eddd(ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef) unnamed_addr #1

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

declare void @_ZN8R4MatrixC1EPKd(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef) unnamed_addr #1

declare void @_ZN8R3AffineC1ERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) unnamed_addr #1

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

declare void @_ZN5RNRgbC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

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

declare void @_ZN6R3BrdfC1ERK5RNRgbS2_S2_S2_S2_ddPKc(ptr noundef nonnull align 8 dereferenceable(180), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, ptr noundef) unnamed_addr #1

declare void @_ZN7R2ImageC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

declare noundef i32 @_ZN7R2Image4ReadEPKc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #1

declare void @_ZN9R2TextureC1EPK7R2Image13R2TextureWrapS3_15R2TextureFilterS4_14R2TextureBlendPKc(ptr noundef nonnull align 8 dereferenceable(76), ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) unnamed_addr #1

declare void @_ZN10R3MaterialC1EPK6R3BrdfPK9R2TexturePKc(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #1

declare void @_ZN8R3VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1

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

declare void @_ZN12R3PointLightC1ERK7R3PointRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN11R3SpotLightC1ERK7R3PointRK8R3VectorRK5RNRgbdddiddd(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

declare void @_ZN11R3AreaLightC1ERK7R3PointdRK8R3VectorRK5RNRgbdiddd(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(24), double noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), double noundef, i32 noundef, double noundef, double noundef, double noundef) unnamed_addr #1

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nounwind
declare void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #11

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { 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 #12 = { cold nounwind }
attributes #13 = { nounwind }
attributes #14 = { nounwind willreturn memory(read) }
attributes #15 = { builtin allocsize(0) }
attributes #16 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !11}


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