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

; 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.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.RNSymbolTable.18 = type { %class.RNMap.19 }
%class.RNMap.19 = type { ptr }
%class.RNSymbolTable.20 = type { %class.RNMap.21 }
%class.RNMap.21 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Json::Value" = type { %"union.Json::Value::ValueHolder", i16, ptr, i64, i64 }
%"union.Json::Value::ValueHolder" = type { i64 }
%"class.Json::Reader" = type <{ %"class.std::stack", %"class.std::deque.25", %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, ptr, %"class.std::__cxx11::basic_string", %"class.Json::Features", i8, [3 x i8] }>
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl" }
%"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl" = type { %"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.25" = type { %"class.std::_Deque_base.26" }
%"class.std::_Deque_base.26" = type { %"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl" }
%"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl" = type { %"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl_data" }
%"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.30", %"struct.std::_Deque_iterator.30" }
%"struct.std::_Deque_iterator.30" = type { ptr, ptr, ptr, ptr }
%"class.Json::Features" = type { i8, i8, i8, i8 }
%class.R3Vector = type { [3 x double] }
%"class.std::allocator" = type { i8 }
%class.RNArray.1 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }
%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.R3Camera = type { %class.R3CoordSystem, double, double, double, double, double, ptr }
%class.R3CoordSystem = type { %class.R3Point, %class.R3Triad }
%class.R3Point = type { [3 x double] }
%class.R3Triad = type { [3 x %class.R3Vector] }
%class.R2Viewport = type { i32, i32, i32, i32 }
%class.RNRgb = type { [3 x double] }

@R3identity_affine = external global %class.R3Affine, align 8
@stderr = external global ptr, align 8
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [6 x i8], align 1
@R4identity_matrix = external global %class.R4Matrix, align 8
@.str.171 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [4 x i8], align 1
@__const._ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode.box_dimensions = external hidden unnamed_addr constant [3 x double], align 16
@.str.188 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [12 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

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

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

; 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: mustprogress uwtable
declare dso_local void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #7

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode(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 %class.RNSymbolTable.18, align 8
  %10 = alloca %class.RNSymbolTable.20, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i64, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca %"class.Json::Value", align 8
  %20 = alloca %"class.Json::Reader", align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca [1024 x i8], align 16
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca [1024 x i8], align 16
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %class.R3Vector, align 8
  %29 = alloca %class.R3Vector, align 8
  %30 = alloca double, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %class.R3Affine, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca [1024 x i8], align 16
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca [1024 x i8], align 16
  %50 = alloca [1024 x i8], align 16
  %51 = alloca [1024 x i8], align 16
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::allocator", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::__cxx11::basic_string", align 8
  %64 = alloca %"class.std::__cxx11::basic_string", align 8
  %65 = alloca %"class.std::allocator", align 1
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  %72 = alloca %"class.std::__cxx11::basic_string", align 8
  %73 = alloca %"class.std::__cxx11::basic_string", align 8
  %74 = alloca %"class.std::allocator", align 1
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator", align 1
  %78 = alloca %class.R3Affine, align 8
  %79 = alloca %class.R4Matrix, align 8
  %80 = alloca i32, align 4
  %81 = alloca [4096 x i8], align 16
  %82 = alloca [4096 x i8], align 16
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca %class.RNArray.1, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"class.std::__cxx11::basic_string", align 8
  %95 = alloca %"class.std::allocator", align 1
  %96 = alloca %"class.std::__cxx11::basic_string", align 8
  %97 = alloca %"class.std::allocator", align 1
  %98 = alloca %class.RNArray.1, align 8
  %99 = alloca ptr, align 8
  %100 = alloca [3 x double], align 16
  %101 = alloca %class.RNArray.1, align 8
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca ptr, 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
  %109 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #14
  store ptr @.str.146, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #14
  call void @_ZN13RNSymbolTableIP9R2TextureEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #14
  invoke void @_ZN13RNSymbolTableIP7R3SceneEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %110 unwind label %116

110:                                              ; preds = %3
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = icmp ne ptr %111, null
  br i1 %112, label %120, label %113

113:                                              ; preds = %110
  %114 = getelementptr inbounds %class.R3Scene, ptr %109, i32 0, i32 0
  %115 = load ptr, ptr %114, align 8, !tbaa !9
  store ptr %115, ptr %7, align 8, !tbaa !5
  br label %120

116:                                              ; preds = %3
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %11, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %12, align 4
  br label %1711

120:                                              ; preds = %113, %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #14
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = invoke noalias ptr @fopen(ptr noundef %121, ptr noundef @.str.147)
          to label %123 unwind label %130

123:                                              ; preds = %120
  store ptr %122, ptr %13, align 8, !tbaa !5
  %124 = load ptr, ptr %13, align 8, !tbaa !5
  %125 = icmp ne ptr %124, null
  br i1 %125, label %134, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr @stderr, align 8, !tbaa !5
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %127, ptr noundef @.str.148, ptr noundef %128) #14
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1708

130:                                              ; preds = %120
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %11, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %12, align 4
  br label %1710

134:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #14
  %135 = load ptr, ptr %13, align 8, !tbaa !5
  %136 = invoke i32 @fseek(ptr noundef %135, i64 noundef 0, i32 noundef 2)
          to label %137 unwind label %160

137:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #14
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = invoke i64 @ftell(ptr noundef %138)
          to label %140 unwind label %164

140:                                              ; preds = %137
  store i64 %139, ptr %16, align 8, !tbaa !29
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = invoke i32 @fseek(ptr noundef %141, i64 noundef 0, i32 noundef 0)
          to label %143 unwind label %164

143:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #14
  %144 = load i64, ptr %16, align 8, !tbaa !29
  %145 = add nsw i64 %144, 1
  %146 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %145) #15
          to label %147 unwind label %168

147:                                              ; preds = %143
  store ptr %146, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #14
  %148 = load i64, ptr %16, align 8, !tbaa !29
  store i64 %148, ptr %18, align 8, !tbaa !29
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = load i64, ptr %18, align 8, !tbaa !29
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = invoke i64 @fread(ptr noundef %149, i64 noundef 1, i64 noundef %150, ptr noundef %151)
          to label %153 unwind label %172

153:                                              ; preds = %147
  %154 = load i64, ptr %18, align 8, !tbaa !29
  %155 = icmp ne i64 %152, %154
  br i1 %155, label %156, label %176

156:                                              ; preds = %153
  %157 = load ptr, ptr @stderr, align 8, !tbaa !5
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %157, ptr noundef @.str.149, ptr noundef %158) #14
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1703

160:                                              ; preds = %134
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %11, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %12, align 4
  br label %1707

164:                                              ; preds = %140, %137
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %11, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %12, align 4
  br label %1706

168:                                              ; preds = %143
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %11, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %12, align 4
  br label %1705

172:                                              ; preds = %187, %176, %147
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %11, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %12, align 4
  br label %1704

176:                                              ; preds = %153
  %177 = load ptr, ptr %17, align 8, !tbaa !5
  %178 = load i64, ptr %16, align 8, !tbaa !29
  %179 = getelementptr inbounds i8, ptr %177, i64 %178
  store i8 0, ptr %179, align 1, !tbaa !31
  %180 = load ptr, ptr %17, align 8, !tbaa !5
  %181 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %180)
          to label %182 unwind label %172

182:                                              ; preds = %176
  br label %183

183:                                              ; preds = %182
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = icmp eq ptr %184, null
  br i1 %185, label %187, label %186

186:                                              ; preds = %183
  call void @_ZdaPv(ptr noundef %184) #16
  br label %187

187:                                              ; preds = %186, %183
  %188 = load ptr, ptr %13, align 8, !tbaa !5
  %189 = invoke i32 @fclose(ptr noundef %188)
          to label %190 unwind label %172

190:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 40, ptr %19) #14
  invoke void @_ZN4Json5ValueC1ENS_9ValueTypeE(ptr noundef nonnull align 8 dereferenceable(40) %19, i32 noundef 0)
          to label %191 unwind label %199

191:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 272, ptr %20) #14
  invoke void @_ZN4Json6ReaderC1Ev(ptr noundef nonnull align 8 dereferenceable(269) %20)
          to label %192 unwind label %203

192:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #14
  %193 = invoke noundef zeroext i1 @_ZN4Json6Reader5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5ValueEb(ptr noundef nonnull align 8 dereferenceable(269) %20, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(40) %19, i1 noundef zeroext false)
          to label %194 unwind label %207

194:                                              ; preds = %192
  br i1 %193, label %211, label %195

195:                                              ; preds = %194
  %196 = load ptr, ptr @stderr, align 8, !tbaa !5
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %196, ptr noundef @.str.150, ptr noundef %197) #14
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1699

199:                                              ; preds = %190
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %11, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %12, align 4
  br label %1702

203:                                              ; preds = %191
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %11, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %12, align 4
  br label %1701

207:                                              ; preds = %192
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %11, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %12, align 4
  br label %1700

211:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 1024, ptr %24) #14
  %212 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  %213 = call ptr @strncpy(ptr noundef %212, ptr noundef @.str.151, i64 noundef 1024) #14
  %214 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %19, ptr noundef @.str.152, i32 noundef 4)
          to label %215 unwind label %231

215:                                              ; preds = %211
  %216 = icmp ne i32 %214, 0
  br i1 %216, label %217, label %240

217:                                              ; preds = %215
  %218 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #14
  %219 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(40) %219)
          to label %220 unwind label %235

220:                                              ; preds = %217
  %221 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #14
  %222 = call ptr @strncpy(ptr noundef %218, ptr noundef %221, i64 noundef 1024) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #14
  %223 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  %224 = call i32 @strcmp(ptr noundef %223, ptr noundef @.str.151) #17
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %239

226:                                              ; preds = %220
  %227 = load ptr, ptr @stderr, align 8, !tbaa !5
  %228 = getelementptr inbounds [1024 x i8], ptr %24, i64 0, i64 0
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %227, ptr noundef @.str.153, ptr noundef %228, ptr noundef %229) #14
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1697

231:                                              ; preds = %211
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %11, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %12, align 4
  br label %1698

235:                                              ; preds = %217
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %11, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #14
  br label %1698

239:                                              ; preds = %220
  br label %240

240:                                              ; preds = %239, %215
  call void @llvm.lifetime.start.p0(i64 1024, ptr %26) #14
  %241 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  %242 = call ptr @strncpy(ptr noundef %241, ptr noundef @.str.154, i64 noundef 1024) #14
  %243 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %19, ptr noundef @.str.155, i32 noundef 4)
          to label %244 unwind label %252

244:                                              ; preds = %240
  %245 = icmp ne i32 %243, 0
  br i1 %245, label %246, label %260

246:                                              ; preds = %244
  %247 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #14
  %248 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(40) %248)
          to label %249 unwind label %256

249:                                              ; preds = %246
  %250 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #14
  %251 = call ptr @strncpy(ptr noundef %247, ptr noundef %250, i64 noundef 1024) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #14
  br label %260

252:                                              ; preds = %240
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %11, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %12, align 4
  br label %1696

256:                                              ; preds = %246
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %11, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #14
  br label %1696

260:                                              ; preds = %249, %244
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #14
  invoke void @_ZN8R3VectorC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %28, double noundef 0.000000e+00, double noundef 1.000000e+00, double noundef 0.000000e+00)
          to label %261 unwind label %281

261:                                              ; preds = %260
  %262 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %19, ptr noundef @.str.156, i32 noundef 6)
          to label %263 unwind label %281

263:                                              ; preds = %261
  %264 = icmp ne i32 %262, 0
  br i1 %264, label %265, label %310

265:                                              ; preds = %263
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %266)
          to label %268 unwind label %281

268:                                              ; preds = %265
  %269 = icmp uge i32 %267, 3
  br i1 %269, label %270, label %309

270:                                              ; preds = %268
  %271 = load ptr, ptr %21, align 8, !tbaa !5
  %272 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %271, i32 noundef 0, i32 noundef -1)
          to label %273 unwind label %281

273:                                              ; preds = %270
  %274 = icmp ne i32 %272, 0
  br i1 %274, label %275, label %285

275:                                              ; preds = %273
  %276 = load ptr, ptr %22, align 8, !tbaa !5
  %277 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %276)
          to label %278 unwind label %281

278:                                              ; preds = %275
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %28, i32 noundef 0)
          to label %280 unwind label %281

280:                                              ; preds = %278
  store double %277, ptr %279, align 8, !tbaa !32
  br label %285

281:                                              ; preds = %307, %304, %301, %296, %293, %290, %285, %278, %275, %270, %265, %261, %260
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %11, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %12, align 4
  br label %1695

285:                                              ; preds = %280, %273
  %286 = load ptr, ptr %21, align 8, !tbaa !5
  %287 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %286, i32 noundef 1, i32 noundef -1)
          to label %288 unwind label %281

288:                                              ; preds = %285
  %289 = icmp ne i32 %287, 0
  br i1 %289, label %290, label %296

290:                                              ; preds = %288
  %291 = load ptr, ptr %22, align 8, !tbaa !5
  %292 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %291)
          to label %293 unwind label %281

293:                                              ; preds = %290
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %28, i32 noundef 1)
          to label %295 unwind label %281

295:                                              ; preds = %293
  store double %292, ptr %294, align 8, !tbaa !32
  br label %296

296:                                              ; preds = %295, %288
  %297 = load ptr, ptr %21, align 8, !tbaa !5
  %298 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %297, i32 noundef 2, i32 noundef -1)
          to label %299 unwind label %281

299:                                              ; preds = %296
  %300 = icmp ne i32 %298, 0
  br i1 %300, label %301, label %307

301:                                              ; preds = %299
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %302)
          to label %304 unwind label %281

304:                                              ; preds = %301
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %28, i32 noundef 2)
          to label %306 unwind label %281

306:                                              ; preds = %304
  store double %303, ptr %305, align 8, !tbaa !32
  br label %307

307:                                              ; preds = %306, %299
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %308 unwind label %281

308:                                              ; preds = %307
  br label %309

309:                                              ; preds = %308, %268
  br label %310

310:                                              ; preds = %309, %263
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #14
  invoke void @_ZN8R3VectorC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %29, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e+00)
          to label %311 unwind label %331

311:                                              ; preds = %310
  %312 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %19, ptr noundef @.str.157, i32 noundef 6)
          to label %313 unwind label %331

313:                                              ; preds = %311
  %314 = icmp ne i32 %312, 0
  br i1 %314, label %315, label %360

315:                                              ; preds = %313
  %316 = load ptr, ptr %21, align 8, !tbaa !5
  %317 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %316)
          to label %318 unwind label %331

318:                                              ; preds = %315
  %319 = icmp uge i32 %317, 3
  br i1 %319, label %320, label %359

320:                                              ; preds = %318
  %321 = load ptr, ptr %21, align 8, !tbaa !5
  %322 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %321, i32 noundef 0, i32 noundef -1)
          to label %323 unwind label %331

323:                                              ; preds = %320
  %324 = icmp ne i32 %322, 0
  br i1 %324, label %325, label %335

325:                                              ; preds = %323
  %326 = load ptr, ptr %22, align 8, !tbaa !5
  %327 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %326)
          to label %328 unwind label %331

328:                                              ; preds = %325
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 0)
          to label %330 unwind label %331

330:                                              ; preds = %328
  store double %327, ptr %329, align 8, !tbaa !32
  br label %335

331:                                              ; preds = %357, %354, %351, %346, %343, %340, %335, %328, %325, %320, %315, %311, %310
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %11, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %12, align 4
  br label %1694

335:                                              ; preds = %330, %323
  %336 = load ptr, ptr %21, align 8, !tbaa !5
  %337 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %336, i32 noundef 1, i32 noundef -1)
          to label %338 unwind label %331

338:                                              ; preds = %335
  %339 = icmp ne i32 %337, 0
  br i1 %339, label %340, label %346

340:                                              ; preds = %338
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %341)
          to label %343 unwind label %331

343:                                              ; preds = %340
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 1)
          to label %345 unwind label %331

345:                                              ; preds = %343
  store double %342, ptr %344, align 8, !tbaa !32
  br label %346

346:                                              ; preds = %345, %338
  %347 = load ptr, ptr %21, align 8, !tbaa !5
  %348 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %347, i32 noundef 2, i32 noundef -1)
          to label %349 unwind label %331

349:                                              ; preds = %346
  %350 = icmp ne i32 %348, 0
  br i1 %350, label %351, label %357

351:                                              ; preds = %349
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %352)
          to label %354 unwind label %331

354:                                              ; preds = %351
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %29, i32 noundef 2)
          to label %356 unwind label %331

356:                                              ; preds = %354
  store double %353, ptr %355, align 8, !tbaa !32
  br label %357

357:                                              ; preds = %356, %349
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %358 unwind label %331

358:                                              ; preds = %357
  br label %359

359:                                              ; preds = %358, %318
  br label %360

360:                                              ; preds = %359, %313
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  store double 1.000000e+00, ptr %30, align 8, !tbaa !32
  %361 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %19, ptr noundef @.str.158, i32 noundef 0)
          to label %362 unwind label %368

362:                                              ; preds = %360
  %363 = icmp ne i32 %361, 0
  br i1 %363, label %364, label %372

364:                                              ; preds = %362
  %365 = load ptr, ptr %23, align 8, !tbaa !5
  %366 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %365)
          to label %367 unwind label %368

367:                                              ; preds = %364
  store double %366, ptr %30, align 8, !tbaa !32
  br label %372

368:                                              ; preds = %364, %360
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %11, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %12, align 4
  br label %1693

372:                                              ; preds = %367, %362
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %373, ptr %31, align 8, !tbaa !5
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  %375 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %374, ptr noundef %375)
          to label %376 unwind label %386

376:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 272, ptr %32) #14
  invoke void @_ZN8R3AffineC2ERKS_(ptr noundef nonnull align 8 dereferenceable(272) %32, ptr noundef nonnull align 8 dereferenceable(272) @R3identity_affine)
          to label %377 unwind label %390

377:                                              ; preds = %376
  %378 = load double, ptr %30, align 8, !tbaa !32
  invoke void @_ZN8R3Affine5ScaleEd(ptr noundef nonnull align 8 dereferenceable(272) %32, double noundef %378)
          to label %379 unwind label %394

379:                                              ; preds = %377
  %380 = load ptr, ptr %31, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %380, ptr noundef nonnull align 8 dereferenceable(272) %32)
          to label %381 unwind label %394

381:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #14
  %382 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef %19, ptr noundef @.str.159, i32 noundef 6)
          to label %383 unwind label %398

383:                                              ; preds = %381
  %384 = icmp ne i32 %382, 0
  br i1 %384, label %402, label %385

385:                                              ; preds = %383
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1688

386:                                              ; preds = %372
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %11, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %12, align 4
  br label %1692

390:                                              ; preds = %376
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %11, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %12, align 4
  br label %1691

394:                                              ; preds = %379, %377
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %11, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %12, align 4
  br label %1690

398:                                              ; preds = %381
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %11, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %12, align 4
  br label %1689

402:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #14
  store i32 0, ptr %35, align 4, !tbaa !33
  br label %403

403:                                              ; preds = %1678, %402
  %404 = load i32, ptr %35, align 4, !tbaa !33
  %405 = load ptr, ptr %33, align 8, !tbaa !5
  %406 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %405)
          to label %407 unwind label %410

407:                                              ; preds = %403
  %408 = icmp ult i32 %404, %406
  br i1 %408, label %414, label %409

409:                                              ; preds = %407
  store i32 2, ptr %14, align 4
  br label %1684

410:                                              ; preds = %421, %414, %403
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %11, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %12, align 4
  br label %1686

414:                                              ; preds = %407
  %415 = load ptr, ptr %33, align 8, !tbaa !5
  %416 = load i32, ptr %35, align 4, !tbaa !33
  %417 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef %415, i32 noundef %416, i32 noundef -1)
          to label %418 unwind label %410

418:                                              ; preds = %414
  %419 = icmp ne i32 %417, 0
  br i1 %419, label %421, label %420

420:                                              ; preds = %418
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1684

421:                                              ; preds = %418
  %422 = load ptr, ptr %34, align 8, !tbaa !5
  %423 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %422)
          to label %424 unwind label %410

424:                                              ; preds = %421
  %425 = icmp ne i32 %423, 7
  br i1 %425, label %426, label %427

426:                                              ; preds = %424
  br label %1678

427:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #14
  %428 = load i32, ptr %35, align 4, !tbaa !33
  store i32 %428, ptr %36, align 4, !tbaa !33
  %429 = load ptr, ptr %34, align 8, !tbaa !5
  %430 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %429, ptr noundef @.str.160, i32 noundef 0)
          to label %431 unwind label %442

431:                                              ; preds = %427
  %432 = icmp ne i32 %430, 0
  br i1 %432, label %433, label %461

433:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #14
  %434 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(40) %434)
          to label %435 unwind label %446

435:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %436 unwind label %450

436:                                              ; preds = %435
  %437 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %438 unwind label %454

438:                                              ; preds = %436
  %439 = icmp ne i32 %437, 0
  %440 = xor i1 %439, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #14
  br i1 %440, label %441, label %460

441:                                              ; preds = %438
  store i32 4, ptr %14, align 4
  br label %1675

442:                                              ; preds = %461, %427
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %11, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %12, align 4
  br label %1683

446:                                              ; preds = %433
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  br label %459

450:                                              ; preds = %435
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %458

454:                                              ; preds = %436
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #14
  br label %458

458:                                              ; preds = %454, %450
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #14
  br label %459

459:                                              ; preds = %458, %446
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #14
  br label %1683

460:                                              ; preds = %438
  br label %461

461:                                              ; preds = %460, %431
  %462 = load ptr, ptr %34, align 8, !tbaa !5
  %463 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %462, ptr noundef @.str.155, i32 noundef 0)
          to label %464 unwind label %442

464:                                              ; preds = %461
  %465 = icmp ne i32 %463, 0
  br i1 %465, label %466, label %475

466:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #14
  %467 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, ptr noundef nonnull align 8 dereferenceable(40) %467)
          to label %468 unwind label %471

468:                                              ; preds = %466
  %469 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %40) #14
  %470 = call i32 @atoi(ptr noundef %469) #17
  store i32 %470, ptr %36, align 4, !tbaa !33
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #14
  br label %475

471:                                              ; preds = %466
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %11, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #14
  br label %1683

475:                                              ; preds = %468, %464
  call void @llvm.lifetime.start.p0(i64 1024, ptr %41) #14
  %476 = getelementptr inbounds [1024 x i8], ptr %41, i64 0, i64 0
  %477 = load i32, ptr %36, align 4, !tbaa !33
  %478 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %476, ptr noundef @.str.161, i32 noundef %477) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #14
  %479 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %480 unwind label %498

480:                                              ; preds = %475
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %479, ptr noundef %109)
          to label %481 unwind label %502

481:                                              ; preds = %480
  store ptr %479, ptr %42, align 8, !tbaa !5
  %482 = load ptr, ptr %42, align 8, !tbaa !5
  %483 = getelementptr inbounds [1024 x i8], ptr %41, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %482, ptr noundef %483)
          to label %484 unwind label %498

484:                                              ; preds = %481
  %485 = load ptr, ptr %31, align 8, !tbaa !5
  %486 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %485, ptr noundef %486)
          to label %487 unwind label %498

487:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #14
  %488 = load ptr, ptr %34, align 8, !tbaa !5
  %489 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef %488, ptr noundef @.str.162, i32 noundef 6)
          to label %490 unwind label %506

490:                                              ; preds = %487
  %491 = icmp ne i32 %489, 0
  br i1 %491, label %492, label %1673

492:                                              ; preds = %490
  %493 = load ptr, ptr %43, align 8, !tbaa !5
  %494 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %493)
          to label %495 unwind label %506

495:                                              ; preds = %492
  %496 = icmp eq i32 %494, 0
  br i1 %496, label %497, label %510

497:                                              ; preds = %495
  store i32 4, ptr %14, align 4
  br label %1674

498:                                              ; preds = %484, %481, %475
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %11, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %12, align 4
  br label %1682

502:                                              ; preds = %480
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %11, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %479, i64 noundef 432) #16
  br label %1682

506:                                              ; preds = %492, %487
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %11, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %12, align 4
  br label %1681

510:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #14
  %511 = load ptr, ptr %43, align 8, !tbaa !5
  %512 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %511)
          to label %513 unwind label %528

513:                                              ; preds = %510
  %514 = zext i32 %512 to i64
  %515 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %514, i64 8)
  %516 = extractvalue { i64, i1 } %515, 1
  %517 = extractvalue { i64, i1 } %515, 0
  %518 = select i1 %516, i64 -1, i64 %517
  %519 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %518) #15
          to label %520 unwind label %528

520:                                              ; preds = %513
  store ptr %519, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #14
  store i32 0, ptr %47, align 4, !tbaa !33
  br label %521

521:                                              ; preds = %541, %520
  %522 = load i32, ptr %47, align 4, !tbaa !33
  %523 = load ptr, ptr %43, align 8, !tbaa !5
  %524 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %523)
          to label %525 unwind label %532

525:                                              ; preds = %521
  %526 = icmp ult i32 %522, %524
  br i1 %526, label %536, label %527

527:                                              ; preds = %525
  store i32 5, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #14
  br label %544

528:                                              ; preds = %513, %510
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %11, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %12, align 4
  br label %1672

532:                                              ; preds = %521
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %11, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #14
  br label %1672

536:                                              ; preds = %525
  %537 = load ptr, ptr %46, align 8, !tbaa !5
  %538 = load i32, ptr %47, align 4, !tbaa !33
  %539 = zext i32 %538 to i64
  %540 = getelementptr inbounds ptr, ptr %537, i64 %539
  store ptr null, ptr %540, align 8, !tbaa !5
  br label %541

541:                                              ; preds = %536
  %542 = load i32, ptr %47, align 4, !tbaa !33
  %543 = add i32 %542, 1
  store i32 %543, ptr %47, align 4, !tbaa !33
  br label %521, !llvm.loop !34

544:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #14
  store i32 0, ptr %48, align 4, !tbaa !33
  br label %545

545:                                              ; preds = %1521, %544
  %546 = load i32, ptr %48, align 4, !tbaa !33
  %547 = load ptr, ptr %43, align 8, !tbaa !5
  %548 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %547)
          to label %549 unwind label %552

549:                                              ; preds = %545
  %550 = icmp ult i32 %546, %548
  br i1 %550, label %556, label %551

551:                                              ; preds = %549
  store i32 8, ptr %14, align 4
  br label %1528

552:                                              ; preds = %563, %556, %545
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %11, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %12, align 4
  br label %1530

556:                                              ; preds = %549
  %557 = load ptr, ptr %43, align 8, !tbaa !5
  %558 = load i32, ptr %48, align 4, !tbaa !33
  %559 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %557, i32 noundef %558, i32 noundef -1)
          to label %560 unwind label %552

560:                                              ; preds = %556
  %561 = icmp ne i32 %559, 0
  br i1 %561, label %563, label %562

562:                                              ; preds = %560
  br label %1521

563:                                              ; preds = %560
  %564 = load ptr, ptr %44, align 8, !tbaa !5
  %565 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %564)
          to label %566 unwind label %552

566:                                              ; preds = %563
  %567 = icmp ne i32 %565, 7
  br i1 %567, label %568, label %569

568:                                              ; preds = %566
  br label %1521

569:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 1024, ptr %49) #14
  call void @llvm.memset.p0.i64(ptr align 16 %49, i8 0, i64 1024, i1 false)
  call void @llvm.lifetime.start.p0(i64 1024, ptr %50) #14
  call void @llvm.memset.p0.i64(ptr align 16 %50, i8 0, i64 1024, i1 false)
  call void @llvm.lifetime.start.p0(i64 1024, ptr %51) #14
  call void @llvm.memset.p0.i64(ptr align 16 %51, i8 0, i64 1024, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #14
  store i32 0, ptr %52, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #14
  store i32 0, ptr %53, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #14
  store i32 0, ptr %54, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #14
  store i32 0, ptr %55, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #14
  store i32 0, ptr %56, align 4, !tbaa !33
  %570 = load ptr, ptr %44, align 8, !tbaa !5
  %571 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %570, ptr noundef @.str.160, i32 noundef 0)
          to label %572 unwind label %583

572:                                              ; preds = %569
  %573 = icmp ne i32 %571, 0
  br i1 %573, label %574, label %602

574:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #14
  %575 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %57, ptr noundef nonnull align 8 dereferenceable(40) %575)
          to label %576 unwind label %587

576:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %577 unwind label %591

577:                                              ; preds = %576
  %578 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %579 unwind label %595

579:                                              ; preds = %577
  %580 = icmp ne i32 %578, 0
  %581 = xor i1 %580, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #14
  br i1 %581, label %582, label %601

582:                                              ; preds = %579
  store i32 10, ptr %14, align 4
  br label %1518

583:                                              ; preds = %763, %734, %705, %676, %647, %632, %617, %602, %569
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %11, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %12, align 4
  br label %1527

587:                                              ; preds = %574
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %11, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %12, align 4
  br label %600

591:                                              ; preds = %576
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %11, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %12, align 4
  br label %599

595:                                              ; preds = %577
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %11, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #14
  br label %599

599:                                              ; preds = %595, %591
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #14
  br label %600

600:                                              ; preds = %599, %587
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #14
  br label %1527

601:                                              ; preds = %579
  br label %602

602:                                              ; preds = %601, %572
  %603 = load ptr, ptr %44, align 8, !tbaa !5
  %604 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %603, ptr noundef @.str.155, i32 noundef 0)
          to label %605 unwind label %583

605:                                              ; preds = %602
  %606 = icmp ne i32 %604, 0
  br i1 %606, label %607, label %617

607:                                              ; preds = %605
  %608 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #14
  %609 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(40) %609)
          to label %610 unwind label %613

610:                                              ; preds = %607
  %611 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %60) #14
  %612 = call ptr @strncpy(ptr noundef %608, ptr noundef %611, i64 noundef 1024) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #14
  br label %617

613:                                              ; preds = %607
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %11, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #14
  br label %1527

617:                                              ; preds = %610, %605
  %618 = load ptr, ptr %44, align 8, !tbaa !5
  %619 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %618, ptr noundef @.str.163, i32 noundef 0)
          to label %620 unwind label %583

620:                                              ; preds = %617
  %621 = icmp ne i32 %619, 0
  br i1 %621, label %622, label %632

622:                                              ; preds = %620
  %623 = getelementptr inbounds [1024 x i8], ptr %51, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #14
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %61, ptr noundef nonnull align 8 dereferenceable(40) %624)
          to label %625 unwind label %628

625:                                              ; preds = %622
  %626 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %61) #14
  %627 = call ptr @strncpy(ptr noundef %623, ptr noundef %626, i64 noundef 1024) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #14
  br label %632

628:                                              ; preds = %622
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %11, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #14
  br label %1527

632:                                              ; preds = %625, %620
  %633 = load ptr, ptr %44, align 8, !tbaa !5
  %634 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %633, ptr noundef @.str.164, i32 noundef 0)
          to label %635 unwind label %583

635:                                              ; preds = %632
  %636 = icmp ne i32 %634, 0
  br i1 %636, label %637, label %647

637:                                              ; preds = %635
  %638 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #14
  %639 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %62, ptr noundef nonnull align 8 dereferenceable(40) %639)
          to label %640 unwind label %643

640:                                              ; preds = %637
  %641 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %62) #14
  %642 = call ptr @strncpy(ptr noundef %638, ptr noundef %641, i64 noundef 1024) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #14
  br label %647

643:                                              ; preds = %637
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %11, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #14
  br label %1527

647:                                              ; preds = %640, %635
  %648 = load ptr, ptr %44, align 8, !tbaa !5
  %649 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %648, ptr noundef @.str.165, i32 noundef 0)
          to label %650 unwind label %583

650:                                              ; preds = %647
  %651 = icmp ne i32 %649, 0
  br i1 %651, label %652, label %676

652:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #14
  %653 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %63, ptr noundef nonnull align 8 dereferenceable(40) %653)
          to label %654 unwind label %661

654:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 32, ptr %64) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %655 unwind label %665

655:                                              ; preds = %654
  %656 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %64)
          to label %657 unwind label %669

657:                                              ; preds = %655
  %658 = icmp ne i32 %656, 0
  %659 = xor i1 %658, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #14
  br i1 %659, label %660, label %675

660:                                              ; preds = %657
  store i32 1, ptr %52, align 4, !tbaa !33
  br label %675

661:                                              ; preds = %652
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %11, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %12, align 4
  br label %674

665:                                              ; preds = %654
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %11, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %12, align 4
  br label %673

669:                                              ; preds = %655
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %11, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #14
  br label %673

673:                                              ; preds = %669, %665
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %64) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #14
  br label %674

674:                                              ; preds = %673, %661
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #14
  br label %1527

675:                                              ; preds = %660, %657
  br label %676

676:                                              ; preds = %675, %650
  %677 = load ptr, ptr %44, align 8, !tbaa !5
  %678 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %677, ptr noundef @.str.167, i32 noundef 0)
          to label %679 unwind label %583

679:                                              ; preds = %676
  %680 = icmp ne i32 %678, 0
  br i1 %680, label %681, label %705

681:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #14
  %682 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(40) %682)
          to label %683 unwind label %690

683:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %684 unwind label %694

684:                                              ; preds = %683
  %685 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %686 unwind label %698

686:                                              ; preds = %684
  %687 = icmp ne i32 %685, 0
  %688 = xor i1 %687, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #14
  br i1 %688, label %689, label %704

689:                                              ; preds = %686
  store i32 1, ptr %53, align 4, !tbaa !33
  br label %704

690:                                              ; preds = %681
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %11, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %12, align 4
  br label %703

694:                                              ; preds = %683
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %11, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %12, align 4
  br label %702

698:                                              ; preds = %684
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %11, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #14
  br label %702

702:                                              ; preds = %698, %694
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #14
  br label %703

703:                                              ; preds = %702, %690
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #14
  br label %1527

704:                                              ; preds = %689, %686
  br label %705

705:                                              ; preds = %704, %679
  %706 = load ptr, ptr %44, align 8, !tbaa !5
  %707 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %706, ptr noundef @.str.168, i32 noundef 0)
          to label %708 unwind label %583

708:                                              ; preds = %705
  %709 = icmp ne i32 %707, 0
  br i1 %709, label %710, label %734

710:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #14
  %711 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(40) %711)
          to label %712 unwind label %719

712:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %713 unwind label %723

713:                                              ; preds = %712
  %714 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %715 unwind label %727

715:                                              ; preds = %713
  %716 = icmp ne i32 %714, 0
  %717 = xor i1 %716, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #14
  br i1 %717, label %718, label %733

718:                                              ; preds = %715
  store i32 1, ptr %54, align 4, !tbaa !33
  br label %733

719:                                              ; preds = %710
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %11, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %12, align 4
  br label %732

723:                                              ; preds = %712
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %11, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %12, align 4
  br label %731

727:                                              ; preds = %713
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %11, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #14
  br label %731

731:                                              ; preds = %727, %723
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #14
  br label %732

732:                                              ; preds = %731, %719
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #14
  br label %1527

733:                                              ; preds = %718, %715
  br label %734

734:                                              ; preds = %733, %708
  %735 = load ptr, ptr %44, align 8, !tbaa !5
  %736 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %735, ptr noundef @.str.169, i32 noundef 0)
          to label %737 unwind label %583

737:                                              ; preds = %734
  %738 = icmp ne i32 %736, 0
  br i1 %738, label %739, label %763

739:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 32, ptr %72) #14
  %740 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %72, ptr noundef nonnull align 8 dereferenceable(40) %740)
          to label %741 unwind label %748

741:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %742 unwind label %752

742:                                              ; preds = %741
  %743 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %744 unwind label %756

744:                                              ; preds = %742
  %745 = icmp ne i32 %743, 0
  %746 = xor i1 %745, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #14
  br i1 %746, label %747, label %762

747:                                              ; preds = %744
  store i32 1, ptr %55, align 4, !tbaa !33
  br label %762

748:                                              ; preds = %739
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %11, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %12, align 4
  br label %761

752:                                              ; preds = %741
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %11, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %12, align 4
  br label %760

756:                                              ; preds = %742
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %11, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #14
  br label %760

760:                                              ; preds = %756, %752
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %74) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #14
  br label %761

761:                                              ; preds = %760, %748
  call void @llvm.lifetime.end.p0(i64 32, ptr %72) #14
  br label %1527

762:                                              ; preds = %747, %744
  br label %763

763:                                              ; preds = %762, %737
  %764 = load ptr, ptr %44, align 8, !tbaa !5
  %765 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %764, ptr noundef @.str.170, i32 noundef 0)
          to label %766 unwind label %583

766:                                              ; preds = %763
  %767 = icmp ne i32 %765, 0
  br i1 %767, label %768, label %792

768:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #14
  %769 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(40) %769)
          to label %770 unwind label %777

770:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %771 unwind label %781

771:                                              ; preds = %770
  %772 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %773 unwind label %785

773:                                              ; preds = %771
  %774 = icmp ne i32 %772, 0
  %775 = xor i1 %774, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #14
  br i1 %775, label %776, label %791

776:                                              ; preds = %773
  store i32 1, ptr %56, align 4, !tbaa !33
  br label %791

777:                                              ; preds = %768
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %11, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %12, align 4
  br label %790

781:                                              ; preds = %770
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %11, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %12, align 4
  br label %789

785:                                              ; preds = %771
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %11, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #14
  br label %789

789:                                              ; preds = %785, %781
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #14
  br label %790

790:                                              ; preds = %789, %777
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #14
  br label %1527

791:                                              ; preds = %776, %773
  br label %792

792:                                              ; preds = %791, %766
  call void @llvm.lifetime.start.p0(i64 272, ptr %78) #14
  invoke void @_ZN8R3AffineC2ERKS_(ptr noundef nonnull align 8 dereferenceable(272) %78, ptr noundef nonnull align 8 dereferenceable(272) @R3identity_affine)
          to label %793 unwind label %812

793:                                              ; preds = %792
  %794 = load ptr, ptr %44, align 8, !tbaa !5
  %795 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %794, ptr noundef @.str.115, i32 noundef 6)
          to label %796 unwind label %816

796:                                              ; preds = %793
  %797 = icmp ne i32 %795, 0
  br i1 %797, label %798, label %855

798:                                              ; preds = %796
  %799 = load ptr, ptr %21, align 8, !tbaa !5
  %800 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %799)
          to label %801 unwind label %816

801:                                              ; preds = %798
  %802 = icmp uge i32 %800, 16
  br i1 %802, label %803, label %854

803:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 128, ptr %79) #14
  invoke void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128) %79, ptr noundef nonnull align 8 dereferenceable(128) @R4identity_matrix)
          to label %804 unwind label %820

804:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  store i32 0, ptr %80, align 4, !tbaa !33
  br label %805

805:                                              ; preds = %847, %804
  %806 = load i32, ptr %80, align 4, !tbaa !33
  %807 = load ptr, ptr %21, align 8, !tbaa !5
  %808 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %807)
          to label %809 unwind label %824

809:                                              ; preds = %805
  %810 = icmp ult i32 %806, %808
  br i1 %810, label %828, label %811

811:                                              ; preds = %809
  store i32 11, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  br label %850

812:                                              ; preds = %792
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %11, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %12, align 4
  br label %1526

816:                                              ; preds = %798, %793
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %11, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %12, align 4
  br label %1525

820:                                              ; preds = %850, %803
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %11, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %12, align 4
  br label %853

824:                                              ; preds = %838, %835, %828, %805
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %11, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  br label %853

828:                                              ; preds = %809
  %829 = load ptr, ptr %21, align 8, !tbaa !5
  %830 = load i32, ptr %80, align 4, !tbaa !33
  %831 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %829, i32 noundef %830, i32 noundef -1)
          to label %832 unwind label %824

832:                                              ; preds = %828
  %833 = icmp ne i32 %831, 0
  br i1 %833, label %835, label %834

834:                                              ; preds = %832
  br label %847

835:                                              ; preds = %832
  %836 = load ptr, ptr %22, align 8, !tbaa !5
  %837 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %836)
          to label %838 unwind label %824

838:                                              ; preds = %835
  %839 = load i32, ptr %80, align 4, !tbaa !33
  %840 = urem i32 %839, 4
  %841 = invoke noundef ptr @_ZN8R4MatrixixEi(ptr noundef nonnull align 8 dereferenceable(128) %79, i32 noundef %840)
          to label %842 unwind label %824

842:                                              ; preds = %838
  %843 = load i32, ptr %80, align 4, !tbaa !33
  %844 = udiv i32 %843, 4
  %845 = zext i32 %844 to i64
  %846 = getelementptr inbounds double, ptr %841, i64 %845
  store double %837, ptr %846, align 8, !tbaa !32
  br label %847

847:                                              ; preds = %842, %834
  %848 = load i32, ptr %80, align 4, !tbaa !33
  %849 = add i32 %848, 1
  store i32 %849, ptr %80, align 4, !tbaa !33
  br label %805, !llvm.loop !36

850:                                              ; preds = %811
  %851 = load i32, ptr %55, align 4, !tbaa !33
  invoke void @_ZN8R3Affine5ResetERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272) %78, ptr noundef nonnull align 8 dereferenceable(128) %79, i32 noundef %851)
          to label %852 unwind label %820

852:                                              ; preds = %850
  call void @llvm.lifetime.end.p0(i64 128, ptr %79) #14
  br label %854

853:                                              ; preds = %824, %820
  call void @llvm.lifetime.end.p0(i64 128, ptr %79) #14
  br label %1525

854:                                              ; preds = %852, %801
  br label %855

855:                                              ; preds = %854, %796
  call void @llvm.lifetime.start.p0(i64 4096, ptr %81) #14
  call void @llvm.lifetime.start.p0(i64 4096, ptr %82) #14
  %856 = getelementptr inbounds [1024 x i8], ptr %51, i64 0, i64 0
  %857 = call i32 @strcmp(ptr noundef %856, ptr noundef @.str.171) #17
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %954, label %859

859:                                              ; preds = %855
  %860 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %861 = load ptr, ptr %8, align 8, !tbaa !5
  %862 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  %863 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %864 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %860, ptr noundef @.str.172, ptr noundef %861, ptr noundef %862, ptr noundef %863) #14
  %865 = load i32, ptr %53, align 4, !tbaa !33
  %866 = icmp ne i32 %865, 0
  br i1 %866, label %953, label %867

867:                                              ; preds = %859
  %868 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %869 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef %868)
          to label %870 unwind label %885

870:                                              ; preds = %867
  %871 = icmp ne i32 %869, 0
  br i1 %871, label %872, label %953

872:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #14
  %873 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 352) #15
          to label %874 unwind label %889

874:                                              ; preds = %872
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %873)
          to label %875 unwind label %893

875:                                              ; preds = %874
  store ptr %873, ptr %83, align 8, !tbaa !5
  %876 = load ptr, ptr %83, align 8, !tbaa !5
  %877 = load ptr, ptr %83, align 8, !tbaa !5
  %878 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %877)
          to label %879 unwind label %889

879:                                              ; preds = %875
  %880 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %881 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef %876, ptr noundef %878, ptr noundef %880, ptr noundef null)
          to label %882 unwind label %889

882:                                              ; preds = %879
  %883 = icmp ne i32 %881, 0
  br i1 %883, label %897, label %884

884:                                              ; preds = %882
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %936

885:                                              ; preds = %867
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %11, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %12, align 4
  br label %1524

889:                                              ; preds = %910, %907, %905, %897, %879, %875, %872
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %11, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %12, align 4
  br label %952

893:                                              ; preds = %874
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %11, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %873, i64 noundef 352) #16
  br label %952

897:                                              ; preds = %882
  %898 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %899 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %900 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %898, ptr noundef @.str.173, ptr noundef %899) #14
  %901 = load ptr, ptr %83, align 8, !tbaa !5
  %902 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %901, ptr noundef %902)
  %903 = load ptr, ptr %83, align 8, !tbaa !5
  %904 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %903)
          to label %905 unwind label %889

905:                                              ; preds = %897
  %906 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %904, ptr noundef %906)
          to label %907 unwind label %889

907:                                              ; preds = %905
  %908 = load ptr, ptr %83, align 8, !tbaa !5
  %909 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  invoke void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %908, ptr noundef %909)
          to label %910 unwind label %889

910:                                              ; preds = %907
  %911 = load ptr, ptr %83, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %109, ptr noundef %911)
          to label %912 unwind label %889

912:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #14
  %913 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %914 unwind label %939

914:                                              ; preds = %912
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %913, ptr noundef %109)
          to label %915 unwind label %943

915:                                              ; preds = %914
  store ptr %913, ptr %84, align 8, !tbaa !5
  %916 = load ptr, ptr %84, align 8, !tbaa !5
  %917 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #15
          to label %918 unwind label %939

918:                                              ; preds = %915
  %919 = load ptr, ptr %83, align 8, !tbaa !5
  %920 = getelementptr inbounds %class.R3Scene, ptr %109, i32 0, i32 3
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %917, ptr noundef %919, ptr noundef nonnull align 8 dereferenceable(16) %920)
          to label %921 unwind label %947

921:                                              ; preds = %918
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %916, ptr noundef %917)
          to label %922 unwind label %939

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

925:                                              ; preds = %922
  %926 = load ptr, ptr %84, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %926, ptr noundef nonnull align 8 dereferenceable(272) %78)
          to label %927 unwind label %939

927:                                              ; preds = %925
  %928 = load ptr, ptr %42, align 8, !tbaa !5
  %929 = load ptr, ptr %84, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %928, ptr noundef %929)
          to label %930 unwind label %939

930:                                              ; preds = %927
  %931 = load ptr, ptr %84, align 8, !tbaa !5
  %932 = load ptr, ptr %46, align 8, !tbaa !5
  %933 = load i32, ptr %48, align 4, !tbaa !33
  %934 = zext i32 %933 to i64
  %935 = getelementptr inbounds ptr, ptr %932, i64 %934
  store ptr %931, ptr %935, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #14
  store i32 0, ptr %14, align 4
  br label %936

936:                                              ; preds = %930, %884
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #14
  %937 = load i32, ptr %14, align 4
  switch i32 %937, label %1517 [
    i32 0, label %938
  ]

938:                                              ; preds = %936
  br label %953

939:                                              ; preds = %927, %925, %922, %921, %915, %912
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %11, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %12, align 4
  br label %951

943:                                              ; preds = %914
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %11, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %913, i64 noundef 432) #16
  br label %951

947:                                              ; preds = %918
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %11, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %917, i64 noundef 48) #16
  br label %951

951:                                              ; preds = %947, %943, %939
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #14
  br label %952

952:                                              ; preds = %951, %893, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #14
  br label %1524

953:                                              ; preds = %938, %870, %859
  br label %1516

954:                                              ; preds = %855
  %955 = getelementptr inbounds [1024 x i8], ptr %51, i64 0, i64 0
  %956 = call i32 @strcmp(ptr noundef %955, ptr noundef @.str.174) #17
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %1245, label %958

958:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #14
  %959 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %960 unwind label %1002

960:                                              ; preds = %958
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %959, ptr noundef %109)
          to label %961 unwind label %1006

961:                                              ; preds = %960
  store ptr %959, ptr %85, align 8, !tbaa !5
  %962 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %963 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %964 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %962, ptr noundef @.str.175, ptr noundef %963) #14
  %965 = load ptr, ptr %85, align 8, !tbaa !5
  %966 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %965, ptr noundef %966)
          to label %967 unwind label %1002

967:                                              ; preds = %961
  %968 = load ptr, ptr %42, align 8, !tbaa !5
  %969 = load ptr, ptr %85, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %968, ptr noundef %969)
          to label %970 unwind label %1002

970:                                              ; preds = %967
  %971 = load ptr, ptr %85, align 8, !tbaa !5
  %972 = load ptr, ptr %46, align 8, !tbaa !5
  %973 = load i32, ptr %48, align 4, !tbaa !33
  %974 = zext i32 %973 to i64
  %975 = getelementptr inbounds ptr, ptr %972, i64 %974
  store ptr %971, ptr %975, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #14
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %976 unwind label %1010

976:                                              ; preds = %970
  %977 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  %980 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %981 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %977, ptr noundef @.str.172, ptr noundef %978, ptr noundef %979, ptr noundef %980) #14
  %982 = load i32, ptr %53, align 4, !tbaa !33
  %983 = icmp ne i32 %982, 0
  br i1 %983, label %1074, label %984

984:                                              ; preds = %976
  %985 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %986 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef %985)
          to label %987 unwind label %1014

987:                                              ; preds = %984
  %988 = icmp ne i32 %986, 0
  br i1 %988, label %989, label %1074

989:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #14
  %990 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 352) #15
          to label %991 unwind label %1018

991:                                              ; preds = %989
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %990)
          to label %992 unwind label %1022

992:                                              ; preds = %991
  store ptr %990, ptr %87, align 8, !tbaa !5
  %993 = load ptr, ptr %87, align 8, !tbaa !5
  %994 = load ptr, ptr %87, align 8, !tbaa !5
  %995 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %994)
          to label %996 unwind label %1018

996:                                              ; preds = %992
  %997 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %998 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef %993, ptr noundef %995, ptr noundef %997, ptr noundef null)
          to label %999 unwind label %1018

999:                                              ; preds = %996
  %1000 = icmp ne i32 %998, 0
  br i1 %1000, label %1026, label %1001

1001:                                             ; preds = %999
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1057

1002:                                             ; preds = %967, %961, %958
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %11, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %12, align 4
  br label %1244

1006:                                             ; preds = %960
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %11, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %959, i64 noundef 432) #16
  br label %1244

1010:                                             ; preds = %970
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %11, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %12, align 4
  br label %1243

1014:                                             ; preds = %1164, %1082, %984
  %1015 = landingpad { ptr, i32 }
          cleanup
  %1016 = extractvalue { ptr, i32 } %1015, 0
  store ptr %1016, ptr %11, align 8
  %1017 = extractvalue { ptr, i32 } %1015, 1
  store i32 %1017, ptr %12, align 4
  br label %1242

1018:                                             ; preds = %1039, %1036, %1034, %1026, %996, %992, %989
  %1019 = landingpad { ptr, i32 }
          cleanup
  %1020 = extractvalue { ptr, i32 } %1019, 0
  store ptr %1020, ptr %11, align 8
  %1021 = extractvalue { ptr, i32 } %1019, 1
  store i32 %1021, ptr %12, align 4
  br label %1073

1022:                                             ; preds = %991
  %1023 = landingpad { ptr, i32 }
          cleanup
  %1024 = extractvalue { ptr, i32 } %1023, 0
  store ptr %1024, ptr %11, align 8
  %1025 = extractvalue { ptr, i32 } %1023, 1
  store i32 %1025, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %990, i64 noundef 352) #16
  br label %1073

1026:                                             ; preds = %999
  %1027 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1028 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %1029 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1027, ptr noundef @.str.176, ptr noundef %1028) #14
  %1030 = load ptr, ptr %87, align 8, !tbaa !5
  %1031 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1030, ptr noundef %1031)
  %1032 = load ptr, ptr %87, align 8, !tbaa !5
  %1033 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1032)
          to label %1034 unwind label %1018

1034:                                             ; preds = %1026
  %1035 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1033, ptr noundef %1035)
          to label %1036 unwind label %1018

1036:                                             ; preds = %1034
  %1037 = load ptr, ptr %87, align 8, !tbaa !5
  %1038 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  invoke void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1037, ptr noundef %1038)
          to label %1039 unwind label %1018

1039:                                             ; preds = %1036
  %1040 = load ptr, ptr %87, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %109, ptr noundef %1040)
          to label %1041 unwind label %1018

1041:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #14
  %1042 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %1043 unwind label %1060

1043:                                             ; preds = %1041
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %1042, ptr noundef %109)
          to label %1044 unwind label %1064

1044:                                             ; preds = %1043
  store ptr %1042, ptr %88, align 8, !tbaa !5
  %1045 = load ptr, ptr %88, align 8, !tbaa !5
  %1046 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #15
          to label %1047 unwind label %1060

1047:                                             ; preds = %1044
  %1048 = load ptr, ptr %87, align 8, !tbaa !5
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %1046, ptr noundef %1048, ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %1049 unwind label %1068

1049:                                             ; preds = %1047
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %1045, ptr noundef %1046)
          to label %1050 unwind label %1060

1050:                                             ; preds = %1049
  %1051 = load ptr, ptr %88, align 8, !tbaa !5
  %1052 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1051, ptr noundef %1052)
          to label %1053 unwind label %1060

1053:                                             ; preds = %1050
  %1054 = load ptr, ptr %85, align 8, !tbaa !5
  %1055 = load ptr, ptr %88, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1054, ptr noundef %1055)
          to label %1056 unwind label %1060

1056:                                             ; preds = %1053
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #14
  store i32 0, ptr %14, align 4
  br label %1057

1057:                                             ; preds = %1056, %1001
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #14
  %1058 = load i32, ptr %14, align 4
  switch i32 %1058, label %1239 [
    i32 0, label %1059
  ]

1059:                                             ; preds = %1057
  br label %1074

1060:                                             ; preds = %1053, %1050, %1049, %1044, %1041
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %11, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %12, align 4
  br label %1072

1064:                                             ; preds = %1043
  %1065 = landingpad { ptr, i32 }
          cleanup
  %1066 = extractvalue { ptr, i32 } %1065, 0
  store ptr %1066, ptr %11, align 8
  %1067 = extractvalue { ptr, i32 } %1065, 1
  store i32 %1067, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1042, i64 noundef 432) #16
  br label %1072

1068:                                             ; preds = %1047
  %1069 = landingpad { ptr, i32 }
          cleanup
  %1070 = extractvalue { ptr, i32 } %1069, 0
  store ptr %1070, ptr %11, align 8
  %1071 = extractvalue { ptr, i32 } %1069, 1
  store i32 %1071, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1046, i64 noundef 48) #16
  br label %1072

1072:                                             ; preds = %1068, %1064, %1060
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #14
  br label %1073

1073:                                             ; preds = %1072, %1022, %1018
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #14
  br label %1242

1074:                                             ; preds = %1059, %987, %976
  %1075 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1076 = load ptr, ptr %8, align 8, !tbaa !5
  %1077 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  %1078 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1079 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1075, ptr noundef @.str.177, ptr noundef %1076, ptr noundef %1077, ptr noundef %1078) #14
  %1080 = load i32, ptr %52, align 4, !tbaa !33
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1156, label %1082

1082:                                             ; preds = %1074
  %1083 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1084 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef %1083)
          to label %1085 unwind label %1014

1085:                                             ; preds = %1082
  %1086 = icmp ne i32 %1084, 0
  br i1 %1086, label %1087, label %1156

1087:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #14
  %1088 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 352) #15
          to label %1089 unwind label %1100

1089:                                             ; preds = %1087
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %1088)
          to label %1090 unwind label %1104

1090:                                             ; preds = %1089
  store ptr %1088, ptr %89, align 8, !tbaa !5
  %1091 = load ptr, ptr %89, align 8, !tbaa !5
  %1092 = load ptr, ptr %89, align 8, !tbaa !5
  %1093 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1092)
          to label %1094 unwind label %1100

1094:                                             ; preds = %1090
  %1095 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1096 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef %1091, ptr noundef %1093, ptr noundef %1095, ptr noundef null)
          to label %1097 unwind label %1100

1097:                                             ; preds = %1094
  %1098 = icmp ne i32 %1096, 0
  br i1 %1098, label %1108, label %1099

1099:                                             ; preds = %1097
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1139

1100:                                             ; preds = %1121, %1118, %1116, %1108, %1094, %1090, %1087
  %1101 = landingpad { ptr, i32 }
          cleanup
  %1102 = extractvalue { ptr, i32 } %1101, 0
  store ptr %1102, ptr %11, align 8
  %1103 = extractvalue { ptr, i32 } %1101, 1
  store i32 %1103, ptr %12, align 4
  br label %1155

1104:                                             ; preds = %1089
  %1105 = landingpad { ptr, i32 }
          cleanup
  %1106 = extractvalue { ptr, i32 } %1105, 0
  store ptr %1106, ptr %11, align 8
  %1107 = extractvalue { ptr, i32 } %1105, 1
  store i32 %1107, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1088, i64 noundef 352) #16
  br label %1155

1108:                                             ; preds = %1097
  %1109 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1110 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %1111 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1109, ptr noundef @.str.178, ptr noundef %1110) #14
  %1112 = load ptr, ptr %89, align 8, !tbaa !5
  %1113 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1112, ptr noundef %1113)
  %1114 = load ptr, ptr %89, align 8, !tbaa !5
  %1115 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1114)
          to label %1116 unwind label %1100

1116:                                             ; preds = %1108
  %1117 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1115, ptr noundef %1117)
          to label %1118 unwind label %1100

1118:                                             ; preds = %1116
  %1119 = load ptr, ptr %89, align 8, !tbaa !5
  %1120 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  invoke void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1119, ptr noundef %1120)
          to label %1121 unwind label %1100

1121:                                             ; preds = %1118
  %1122 = load ptr, ptr %89, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %109, ptr noundef %1122)
          to label %1123 unwind label %1100

1123:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #14
  %1124 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %1125 unwind label %1142

1125:                                             ; preds = %1123
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %1124, ptr noundef %109)
          to label %1126 unwind label %1146

1126:                                             ; preds = %1125
  store ptr %1124, ptr %90, align 8, !tbaa !5
  %1127 = load ptr, ptr %90, align 8, !tbaa !5
  %1128 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #15
          to label %1129 unwind label %1142

1129:                                             ; preds = %1126
  %1130 = load ptr, ptr %89, align 8, !tbaa !5
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %1128, ptr noundef %1130, ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %1131 unwind label %1150

1131:                                             ; preds = %1129
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %1127, ptr noundef %1128)
          to label %1132 unwind label %1142

1132:                                             ; preds = %1131
  %1133 = load ptr, ptr %90, align 8, !tbaa !5
  %1134 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1133, ptr noundef %1134)
          to label %1135 unwind label %1142

1135:                                             ; preds = %1132
  %1136 = load ptr, ptr %85, align 8, !tbaa !5
  %1137 = load ptr, ptr %90, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1136, ptr noundef %1137)
          to label %1138 unwind label %1142

1138:                                             ; preds = %1135
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #14
  store i32 0, ptr %14, align 4
  br label %1139

1139:                                             ; preds = %1138, %1099
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #14
  %1140 = load i32, ptr %14, align 4
  switch i32 %1140, label %1239 [
    i32 0, label %1141
  ]

1141:                                             ; preds = %1139
  br label %1156

1142:                                             ; preds = %1135, %1132, %1131, %1126, %1123
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %11, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %12, align 4
  br label %1154

1146:                                             ; preds = %1125
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %11, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1124, i64 noundef 432) #16
  br label %1154

1150:                                             ; preds = %1129
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %11, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1128, i64 noundef 48) #16
  br label %1154

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

1155:                                             ; preds = %1154, %1104, %1100
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #14
  br label %1242

1156:                                             ; preds = %1141, %1085, %1074
  %1157 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1158 = load ptr, ptr %8, align 8, !tbaa !5
  %1159 = getelementptr inbounds [1024 x i8], ptr %26, i64 0, i64 0
  %1160 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1161 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1157, ptr noundef @.str.179, ptr noundef %1158, ptr noundef %1159, ptr noundef %1160) #14
  %1162 = load i32, ptr %54, align 4, !tbaa !33
  %1163 = icmp ne i32 %1162, 0
  br i1 %1163, label %1238, label %1164

1164:                                             ; preds = %1156
  %1165 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1166 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef %1165)
          to label %1167 unwind label %1014

1167:                                             ; preds = %1164
  %1168 = icmp ne i32 %1166, 0
  br i1 %1168, label %1169, label %1238

1169:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #14
  %1170 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 352) #15
          to label %1171 unwind label %1182

1171:                                             ; preds = %1169
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %1170)
          to label %1172 unwind label %1186

1172:                                             ; preds = %1171
  store ptr %1170, ptr %91, align 8, !tbaa !5
  %1173 = load ptr, ptr %91, align 8, !tbaa !5
  %1174 = load ptr, ptr %91, align 8, !tbaa !5
  %1175 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1174)
          to label %1176 unwind label %1182

1176:                                             ; preds = %1172
  %1177 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1178 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef %1173, ptr noundef %1175, ptr noundef %1177, ptr noundef null)
          to label %1179 unwind label %1182

1179:                                             ; preds = %1176
  %1180 = icmp ne i32 %1178, 0
  br i1 %1180, label %1190, label %1181

1181:                                             ; preds = %1179
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1221

1182:                                             ; preds = %1203, %1200, %1198, %1190, %1176, %1172, %1169
  %1183 = landingpad { ptr, i32 }
          cleanup
  %1184 = extractvalue { ptr, i32 } %1183, 0
  store ptr %1184, ptr %11, align 8
  %1185 = extractvalue { ptr, i32 } %1183, 1
  store i32 %1185, ptr %12, align 4
  br label %1237

1186:                                             ; preds = %1171
  %1187 = landingpad { ptr, i32 }
          cleanup
  %1188 = extractvalue { ptr, i32 } %1187, 0
  store ptr %1188, ptr %11, align 8
  %1189 = extractvalue { ptr, i32 } %1187, 1
  store i32 %1189, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1170, i64 noundef 352) #16
  br label %1237

1190:                                             ; preds = %1179
  %1191 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1192 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %1193 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1191, ptr noundef @.str.180, ptr noundef %1192) #14
  %1194 = load ptr, ptr %91, align 8, !tbaa !5
  %1195 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1194, ptr noundef %1195)
  %1196 = load ptr, ptr %91, align 8, !tbaa !5
  %1197 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1196)
          to label %1198 unwind label %1182

1198:                                             ; preds = %1190
  %1199 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1197, ptr noundef %1199)
          to label %1200 unwind label %1182

1200:                                             ; preds = %1198
  %1201 = load ptr, ptr %91, align 8, !tbaa !5
  %1202 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  invoke void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1201, ptr noundef %1202)
          to label %1203 unwind label %1182

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %109, ptr noundef %1204)
          to label %1205 unwind label %1182

1205:                                             ; preds = %1203
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #14
  %1206 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %1207 unwind label %1224

1207:                                             ; preds = %1205
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %1206, ptr noundef %109)
          to label %1208 unwind label %1228

1208:                                             ; preds = %1207
  store ptr %1206, ptr %92, align 8, !tbaa !5
  %1209 = load ptr, ptr %92, align 8, !tbaa !5
  %1210 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #15
          to label %1211 unwind label %1224

1211:                                             ; preds = %1208
  %1212 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %1210, ptr noundef %1212, ptr noundef nonnull align 8 dereferenceable(16) %86)
          to label %1213 unwind label %1232

1213:                                             ; preds = %1211
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %1209, ptr noundef %1210)
          to label %1214 unwind label %1224

1214:                                             ; preds = %1213
  %1215 = load ptr, ptr %92, align 8, !tbaa !5
  %1216 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1215, ptr noundef %1216)
          to label %1217 unwind label %1224

1217:                                             ; preds = %1214
  %1218 = load ptr, ptr %85, align 8, !tbaa !5
  %1219 = load ptr, ptr %92, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1218, ptr noundef %1219)
          to label %1220 unwind label %1224

1220:                                             ; preds = %1217
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #14
  store i32 0, ptr %14, align 4
  br label %1221

1221:                                             ; preds = %1220, %1181
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #14
  %1222 = load i32, ptr %14, align 4
  switch i32 %1222, label %1239 [
    i32 0, label %1223
  ]

1223:                                             ; preds = %1221
  br label %1238

1224:                                             ; preds = %1217, %1214, %1213, %1208, %1205
  %1225 = landingpad { ptr, i32 }
          cleanup
  %1226 = extractvalue { ptr, i32 } %1225, 0
  store ptr %1226, ptr %11, align 8
  %1227 = extractvalue { ptr, i32 } %1225, 1
  store i32 %1227, ptr %12, align 4
  br label %1236

1228:                                             ; preds = %1207
  %1229 = landingpad { ptr, i32 }
          cleanup
  %1230 = extractvalue { ptr, i32 } %1229, 0
  store ptr %1230, ptr %11, align 8
  %1231 = extractvalue { ptr, i32 } %1229, 1
  store i32 %1231, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1206, i64 noundef 432) #16
  br label %1236

1232:                                             ; preds = %1211
  %1233 = landingpad { ptr, i32 }
          cleanup
  %1234 = extractvalue { ptr, i32 } %1233, 0
  store ptr %1234, ptr %11, align 8
  %1235 = extractvalue { ptr, i32 } %1233, 1
  store i32 %1235, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1210, i64 noundef 48) #16
  br label %1236

1236:                                             ; preds = %1232, %1228, %1224
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #14
  br label %1237

1237:                                             ; preds = %1236, %1186, %1182
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #14
  br label %1242

1238:                                             ; preds = %1223, %1167, %1156
  store i32 0, ptr %14, align 4
  br label %1239

1239:                                             ; preds = %1238, %1221, %1139, %1057
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #14
  %1240 = load i32, ptr %14, align 4
  switch i32 %1240, label %1517 [
    i32 0, label %1241
  ]

1241:                                             ; preds = %1239
  br label %1515

1242:                                             ; preds = %1237, %1155, %1073, %1014
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %86) #14
  br label %1243

1243:                                             ; preds = %1242, %1010
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #14
  br label %1244

1244:                                             ; preds = %1243, %1006, %1002
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #14
  br label %1524

1245:                                             ; preds = %954
  %1246 = getelementptr inbounds [1024 x i8], ptr %51, i64 0, i64 0
  %1247 = call i32 @strcmp(ptr noundef %1246, ptr noundef @.str.181) #17
  %1248 = icmp ne i32 %1247, 0
  br i1 %1248, label %1399, label %1249

1249:                                             ; preds = %1245
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #14
  store ptr null, ptr %93, align 8, !tbaa !5
  %1250 = load i32, ptr %56, align 4, !tbaa !33
  %1251 = icmp ne i32 %1250, 0
  br i1 %1251, label %1252, label %1258

1252:                                             ; preds = %1249
  %1253 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1254 = load ptr, ptr %8, align 8, !tbaa !5
  %1255 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1256 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1257 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1253, ptr noundef @.str.182, ptr noundef %1254, ptr noundef %1255, ptr noundef %1256) #14
  br label %1264

1258:                                             ; preds = %1249
  %1259 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1260 = load ptr, ptr %8, align 8, !tbaa !5
  %1261 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1262 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1263 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1259, ptr noundef @.str.183, ptr noundef %1260, ptr noundef %1261, ptr noundef %1262) #14
  br label %1264

1264:                                             ; preds = %1258, %1252
  %1265 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %94, ptr noundef %1265, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %1266 unwind label %1284

1266:                                             ; preds = %1264
  %1267 = invoke noundef i32 @_ZNK5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneE4FindES5_PS7_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %94, ptr noundef %93)
          to label %1268 unwind label %1288

1268:                                             ; preds = %1266
  %1269 = icmp ne i32 %1267, 0
  %1270 = xor i1 %1269, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  br i1 %1270, label %1271, label %1330

1271:                                             ; preds = %1268
  %1272 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 352) #15
          to label %1273 unwind label %1293

1273:                                             ; preds = %1271
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %1272)
          to label %1274 unwind label %1297

1274:                                             ; preds = %1273
  store ptr %1272, ptr %93, align 8, !tbaa !5
  %1275 = load ptr, ptr %93, align 8, !tbaa !5
  %1276 = load ptr, ptr %93, align 8, !tbaa !5
  %1277 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1276)
          to label %1278 unwind label %1293

1278:                                             ; preds = %1274
  %1279 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  %1280 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef %1275, ptr noundef %1277, ptr noundef %1279, ptr noundef null)
          to label %1281 unwind label %1293

1281:                                             ; preds = %1278
  %1282 = icmp ne i32 %1280, 0
  br i1 %1282, label %1301, label %1283

1283:                                             ; preds = %1281
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1380

1284:                                             ; preds = %1264
  %1285 = landingpad { ptr, i32 }
          cleanup
  %1286 = extractvalue { ptr, i32 } %1285, 0
  store ptr %1286, ptr %11, align 8
  %1287 = extractvalue { ptr, i32 } %1285, 1
  store i32 %1287, ptr %12, align 4
  br label %1292

1288:                                             ; preds = %1266
  %1289 = landingpad { ptr, i32 }
          cleanup
  %1290 = extractvalue { ptr, i32 } %1289, 0
  store ptr %1290, ptr %11, align 8
  %1291 = extractvalue { ptr, i32 } %1289, 1
  store i32 %1291, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #14
  br label %1292

1292:                                             ; preds = %1288, %1284
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  br label %1398

1293:                                             ; preds = %1314, %1311, %1309, %1301, %1278, %1274, %1271
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %11, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %12, align 4
  br label %1398

1297:                                             ; preds = %1273
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %11, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1272, i64 noundef 352) #16
  br label %1398

1301:                                             ; preds = %1281
  %1302 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1303 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  %1304 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1302, ptr noundef @.str.184, ptr noundef %1303) #14
  %1305 = load ptr, ptr %93, align 8, !tbaa !5
  %1306 = getelementptr inbounds [1024 x i8], ptr %50, i64 0, i64 0
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1305, ptr noundef %1306)
  %1307 = load ptr, ptr %93, align 8, !tbaa !5
  %1308 = invoke noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %1307)
          to label %1309 unwind label %1293

1309:                                             ; preds = %1301
  %1310 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1308, ptr noundef %1310)
          to label %1311 unwind label %1293

1311:                                             ; preds = %1309
  %1312 = load ptr, ptr %93, align 8, !tbaa !5
  %1313 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  invoke void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %1312, ptr noundef %1313)
          to label %1314 unwind label %1293

1314:                                             ; preds = %1311
  %1315 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %109, ptr noundef %1315)
          to label %1316 unwind label %1293

1316:                                             ; preds = %1314
  %1317 = getelementptr inbounds [4096 x i8], ptr %81, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #14
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #14
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef %1317, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %1318 unwind label %1321

1318:                                             ; preds = %1316
  %1319 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneE6InsertES5_S7_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %96, ptr noundef %1319)
          to label %1320 unwind label %1325

1320:                                             ; preds = %1318
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #14
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  br label %1330

1321:                                             ; preds = %1316
  %1322 = landingpad { ptr, i32 }
          cleanup
  %1323 = extractvalue { ptr, i32 } %1322, 0
  store ptr %1323, ptr %11, align 8
  %1324 = extractvalue { ptr, i32 } %1322, 1
  store i32 %1324, ptr %12, align 4
  br label %1329

1325:                                             ; preds = %1318
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %11, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %12, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #14
  br label %1329

1329:                                             ; preds = %1325, %1321
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %97) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  br label %1398

1330:                                             ; preds = %1320, %1268
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #14
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1331 unwind label %1344

1331:                                             ; preds = %1330
  %1332 = load ptr, ptr %44, align 8, !tbaa !5
  %1333 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef %1332, ptr noundef @.str.185, i32 noundef 6)
          to label %1334 unwind label %1348

1334:                                             ; preds = %1331
  %1335 = icmp ne i32 %1333, 0
  br i1 %1335, label %1336, label %1353

1336:                                             ; preds = %1334
  %1337 = load ptr, ptr %93, align 8, !tbaa !5
  %1338 = getelementptr inbounds %class.R3Scene, ptr %1337, i32 0, i32 3
  %1339 = load ptr, ptr %45, align 8, !tbaa !5
  %1340 = invoke noundef i32 @_ZL19ParseSUNCGMaterialsP7R3SceneR13RNSymbolTableIP9R2TextureERK7RNArrayIP10R3MaterialERS9_PN4Json5ValueE(ptr noundef %109, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(16) %1338, ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef %1339)
          to label %1341 unwind label %1348

1341:                                             ; preds = %1336
  %1342 = icmp ne i32 %1340, 0
  br i1 %1342, label %1352, label %1343

1343:                                             ; preds = %1341
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1379

1344:                                             ; preds = %1330
  %1345 = landingpad { ptr, i32 }
          cleanup
  %1346 = extractvalue { ptr, i32 } %1345, 0
  store ptr %1346, ptr %11, align 8
  %1347 = extractvalue { ptr, i32 } %1345, 1
  store i32 %1347, ptr %12, align 4
  br label %1397

1348:                                             ; preds = %1336, %1331
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %11, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %12, align 4
  br label %1396

1352:                                             ; preds = %1341
  br label %1353

1353:                                             ; preds = %1352, %1334
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #14
  %1354 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %1355 unwind label %1383

1355:                                             ; preds = %1353
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %1354, ptr noundef %109)
          to label %1356 unwind label %1387

1356:                                             ; preds = %1355
  store ptr %1354, ptr %99, align 8, !tbaa !5
  %1357 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1358 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %1359 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1357, ptr noundef @.str.186, ptr noundef %1358) #14
  %1360 = load ptr, ptr %99, align 8, !tbaa !5
  %1361 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #15
          to label %1362 unwind label %1383

1362:                                             ; preds = %1356
  %1363 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %1361, ptr noundef %1363, ptr noundef nonnull align 8 dereferenceable(16) %98)
          to label %1364 unwind label %1391

1364:                                             ; preds = %1362
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %1360, ptr noundef %1361)
          to label %1365 unwind label %1383

1365:                                             ; preds = %1364
  %1366 = load ptr, ptr %99, align 8, !tbaa !5
  %1367 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1366, ptr noundef %1367)
          to label %1368 unwind label %1383

1368:                                             ; preds = %1365
  %1369 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %1369, ptr noundef nonnull align 8 dereferenceable(272) %78)
          to label %1370 unwind label %1383

1370:                                             ; preds = %1368
  %1371 = load ptr, ptr %42, align 8, !tbaa !5
  %1372 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1371, ptr noundef %1372)
          to label %1373 unwind label %1383

1373:                                             ; preds = %1370
  %1374 = load ptr, ptr %99, align 8, !tbaa !5
  %1375 = load ptr, ptr %46, align 8, !tbaa !5
  %1376 = load i32, ptr %48, align 4, !tbaa !33
  %1377 = zext i32 %1376 to i64
  %1378 = getelementptr inbounds ptr, ptr %1375, i64 %1377
  store ptr %1374, ptr %1378, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #14
  store i32 0, ptr %14, align 4
  br label %1379

1379:                                             ; preds = %1373, %1343
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #14
  br label %1380

1380:                                             ; preds = %1379, %1283
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #14
  %1381 = load i32, ptr %14, align 4
  switch i32 %1381, label %1517 [
    i32 0, label %1382
  ]

1382:                                             ; preds = %1380
  br label %1514

1383:                                             ; preds = %1370, %1368, %1365, %1364, %1356, %1353
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %11, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %12, align 4
  br label %1395

1387:                                             ; preds = %1355
  %1388 = landingpad { ptr, i32 }
          cleanup
  %1389 = extractvalue { ptr, i32 } %1388, 0
  store ptr %1389, ptr %11, align 8
  %1390 = extractvalue { ptr, i32 } %1388, 1
  store i32 %1390, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1354, i64 noundef 432) #16
  br label %1395

1391:                                             ; preds = %1362
  %1392 = landingpad { ptr, i32 }
          cleanup
  %1393 = extractvalue { ptr, i32 } %1392, 0
  store ptr %1393, ptr %11, align 8
  %1394 = extractvalue { ptr, i32 } %1392, 1
  store i32 %1394, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1361, i64 noundef 48) #16
  br label %1395

1395:                                             ; preds = %1391, %1387, %1383
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #14
  br label %1396

1396:                                             ; preds = %1395, %1348
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %98) #14
  br label %1397

1397:                                             ; preds = %1396, %1344
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #14
  br label %1398

1398:                                             ; preds = %1397, %1329, %1297, %1293, %1292
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #14
  br label %1524

1399:                                             ; preds = %1245
  %1400 = getelementptr inbounds [1024 x i8], ptr %51, i64 0, i64 0
  %1401 = call i32 @strcmp(ptr noundef %1400, ptr noundef @.str.187) #17
  %1402 = icmp ne i32 %1401, 0
  br i1 %1402, label %1513, label %1403

1403:                                             ; preds = %1399
  call void @llvm.lifetime.start.p0(i64 24, ptr %100) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %100, ptr align 16 @__const._ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode.box_dimensions, i64 24, i1 false)
  %1404 = load ptr, ptr %44, align 8, !tbaa !5
  %1405 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %1404, ptr noundef @.str.188, i32 noundef 6)
          to label %1406 unwind label %1423

1406:                                             ; preds = %1403
  %1407 = icmp ne i32 %1405, 0
  br i1 %1407, label %1408, label %1449

1408:                                             ; preds = %1406
  %1409 = load ptr, ptr %21, align 8, !tbaa !5
  %1410 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %1409)
          to label %1411 unwind label %1423

1411:                                             ; preds = %1408
  %1412 = icmp uge i32 %1410, 3
  br i1 %1412, label %1413, label %1448

1413:                                             ; preds = %1411
  %1414 = load ptr, ptr %21, align 8, !tbaa !5
  %1415 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %1414, i32 noundef 0, i32 noundef -1)
          to label %1416 unwind label %1423

1416:                                             ; preds = %1413
  %1417 = icmp ne i32 %1415, 0
  br i1 %1417, label %1418, label %1427

1418:                                             ; preds = %1416
  %1419 = load ptr, ptr %22, align 8, !tbaa !5
  %1420 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %1419)
          to label %1421 unwind label %1423

1421:                                             ; preds = %1418
  %1422 = getelementptr inbounds [3 x double], ptr %100, i64 0, i64 0
  store double %1420, ptr %1422, align 16, !tbaa !32
  br label %1427

1423:                                             ; preds = %1442, %1437, %1432, %1427, %1418, %1413, %1408, %1403
  %1424 = landingpad { ptr, i32 }
          cleanup
  %1425 = extractvalue { ptr, i32 } %1424, 0
  store ptr %1425, ptr %11, align 8
  %1426 = extractvalue { ptr, i32 } %1424, 1
  store i32 %1426, ptr %12, align 4
  br label %1512

1427:                                             ; preds = %1421, %1416
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %1428, i32 noundef 1, i32 noundef -1)
          to label %1430 unwind label %1423

1430:                                             ; preds = %1427
  %1431 = icmp ne i32 %1429, 0
  br i1 %1431, label %1432, label %1437

1432:                                             ; preds = %1430
  %1433 = load ptr, ptr %22, align 8, !tbaa !5
  %1434 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %1433)
          to label %1435 unwind label %1423

1435:                                             ; preds = %1432
  %1436 = getelementptr inbounds [3 x double], ptr %100, i64 0, i64 1
  store double %1434, ptr %1436, align 8, !tbaa !32
  br label %1437

1437:                                             ; preds = %1435, %1430
  %1438 = load ptr, ptr %21, align 8, !tbaa !5
  %1439 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %1438, i32 noundef 2, i32 noundef -1)
          to label %1440 unwind label %1423

1440:                                             ; preds = %1437
  %1441 = icmp ne i32 %1439, 0
  br i1 %1441, label %1442, label %1447

1442:                                             ; preds = %1440
  %1443 = load ptr, ptr %22, align 8, !tbaa !5
  %1444 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %1443)
          to label %1445 unwind label %1423

1445:                                             ; preds = %1442
  %1446 = getelementptr inbounds [3 x double], ptr %100, i64 0, i64 2
  store double %1444, ptr %1446, align 16, !tbaa !32
  br label %1447

1447:                                             ; preds = %1445, %1440
  br label %1448

1448:                                             ; preds = %1447, %1411
  br label %1449

1449:                                             ; preds = %1448, %1406
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #14
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %1450 unwind label %1461

1450:                                             ; preds = %1449
  %1451 = load ptr, ptr %44, align 8, !tbaa !5
  %1452 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef %1451, ptr noundef @.str.185, i32 noundef 6)
          to label %1453 unwind label %1465

1453:                                             ; preds = %1450
  %1454 = icmp ne i32 %1452, 0
  br i1 %1454, label %1455, label %1470

1455:                                             ; preds = %1453
  %1456 = load ptr, ptr %45, align 8, !tbaa !5
  %1457 = invoke noundef i32 @_ZL19ParseSUNCGMaterialsP7R3SceneR13RNSymbolTableIP9R2TextureERK7RNArrayIP10R3MaterialERS9_PN4Json5ValueE(ptr noundef %109, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef nonnull align 8 dereferenceable(16) %101, ptr noundef %1456)
          to label %1458 unwind label %1465

1458:                                             ; preds = %1455
  %1459 = icmp ne i32 %1457, 0
  br i1 %1459, label %1469, label %1460

1460:                                             ; preds = %1458
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1506

1461:                                             ; preds = %1449
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %11, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %12, align 4
  br label %1511

1465:                                             ; preds = %1455, %1450
  %1466 = landingpad { ptr, i32 }
          cleanup
  %1467 = extractvalue { ptr, i32 } %1466, 0
  store ptr %1467, ptr %11, align 8
  %1468 = extractvalue { ptr, i32 } %1466, 1
  store i32 %1468, ptr %12, align 4
  br label %1510

1469:                                             ; preds = %1458
  br label %1470

1470:                                             ; preds = %1469, %1453
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #14
  %1471 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 432) #15
          to label %1472 unwind label %1488

1472:                                             ; preds = %1470
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %1471, ptr noundef %109)
          to label %1473 unwind label %1492

1473:                                             ; preds = %1472
  store ptr %1471, ptr %102, align 8, !tbaa !5
  %1474 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  %1475 = getelementptr inbounds [1024 x i8], ptr %49, i64 0, i64 0
  %1476 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1474, ptr noundef @.str.189, ptr noundef %1475) #14
  %1477 = load ptr, ptr %102, align 8, !tbaa !5
  %1478 = getelementptr inbounds [4096 x i8], ptr %82, i64 0, i64 0
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %1477, ptr noundef %1478)
          to label %1479 unwind label %1488

1479:                                             ; preds = %1473
  %1480 = load ptr, ptr %102, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %1480, ptr noundef nonnull align 8 dereferenceable(272) %78)
          to label %1481 unwind label %1488

1481:                                             ; preds = %1479
  %1482 = load ptr, ptr %102, align 8, !tbaa !5
  %1483 = getelementptr inbounds [3 x double], ptr %100, i64 0, i64 0
  %1484 = invoke noundef i32 @_ZL9CreateBoxP7R3SceneP11R3SceneNodePdRK7RNArrayIP10R3MaterialE(ptr noundef %109, ptr noundef %1482, ptr noundef %1483, ptr noundef nonnull align 8 dereferenceable(16) %101)
          to label %1485 unwind label %1488

1485:                                             ; preds = %1481
  %1486 = icmp ne i32 %1484, 0
  br i1 %1486, label %1496, label %1487

1487:                                             ; preds = %1485
  store i32 0, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1505

1488:                                             ; preds = %1496, %1481, %1479, %1473, %1470
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %11, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %12, align 4
  br label %1509

1492:                                             ; preds = %1472
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %11, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %12, align 4
  call void @_ZdlPvm(ptr noundef %1471, i64 noundef 432) #16
  br label %1509

1496:                                             ; preds = %1485
  %1497 = load ptr, ptr %42, align 8, !tbaa !5
  %1498 = load ptr, ptr %102, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1497, ptr noundef %1498)
          to label %1499 unwind label %1488

1499:                                             ; preds = %1496
  %1500 = load ptr, ptr %102, align 8, !tbaa !5
  %1501 = load ptr, ptr %46, align 8, !tbaa !5
  %1502 = load i32, ptr %48, align 4, !tbaa !33
  %1503 = zext i32 %1502 to i64
  %1504 = getelementptr inbounds ptr, ptr %1501, i64 %1503
  store ptr %1500, ptr %1504, align 8, !tbaa !5
  store i32 0, ptr %14, align 4
  br label %1505

1505:                                             ; preds = %1499, %1487
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  br label %1506

1506:                                             ; preds = %1505, %1460
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #14
  %1507 = load i32, ptr %14, align 4
  switch i32 %1507, label %1517 [
    i32 0, label %1508
  ]

1508:                                             ; preds = %1506
  br label %1513

1509:                                             ; preds = %1492, %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  br label %1510

1510:                                             ; preds = %1509, %1465
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %101) #14
  br label %1511

1511:                                             ; preds = %1510, %1461
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #14
  br label %1512

1512:                                             ; preds = %1511, %1423
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #14
  br label %1524

1513:                                             ; preds = %1508, %1399
  br label %1514

1514:                                             ; preds = %1513, %1382
  br label %1515

1515:                                             ; preds = %1514, %1241
  br label %1516

1516:                                             ; preds = %1515, %953
  store i32 0, ptr %14, align 4
  br label %1517

1517:                                             ; preds = %1516, %1506, %1380, %1239, %936
  call void @llvm.lifetime.end.p0(i64 4096, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4096, ptr %81) #14
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %78) #14
  call void @llvm.lifetime.end.p0(i64 272, ptr %78) #14
  br label %1518

1518:                                             ; preds = %1517, %582
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %49) #14
  %1519 = load i32, ptr %14, align 4
  switch i32 %1519, label %1528 [
    i32 0, label %1520
    i32 10, label %1521
  ]

1520:                                             ; preds = %1518
  br label %1521

1521:                                             ; preds = %1520, %1518, %568, %562
  %1522 = load i32, ptr %48, align 4, !tbaa !33
  %1523 = add i32 %1522, 1
  store i32 %1523, ptr %48, align 4, !tbaa !33
  br label %545, !llvm.loop !37

1524:                                             ; preds = %1512, %1398, %1244, %952, %885
  call void @llvm.lifetime.end.p0(i64 4096, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4096, ptr %81) #14
  br label %1525

1525:                                             ; preds = %1524, %853, %816
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %78) #14
  br label %1526

1526:                                             ; preds = %1525, %812
  call void @llvm.lifetime.end.p0(i64 272, ptr %78) #14
  br label %1527

1527:                                             ; preds = %1526, %790, %761, %732, %703, %674, %643, %628, %613, %600, %583
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %49) #14
  br label %1530

1528:                                             ; preds = %1518, %551
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #14
  %1529 = load i32, ptr %14, align 4
  switch i32 %1529, label %1669 [
    i32 8, label %1531
  ]

1530:                                             ; preds = %1527, %552
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #14
  br label %1672

1531:                                             ; preds = %1528
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  store i32 0, ptr %103, align 4, !tbaa !33
  br label %1532

1532:                                             ; preds = %1659, %1531
  %1533 = load i32, ptr %103, align 4, !tbaa !33
  %1534 = load ptr, ptr %43, align 8, !tbaa !5
  %1535 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %1534)
          to label %1536 unwind label %1539

1536:                                             ; preds = %1532
  %1537 = icmp ult i32 %1533, %1535
  br i1 %1537, label %1543, label %1538

1538:                                             ; preds = %1536
  store i32 14, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  br label %1664

1539:                                             ; preds = %1556, %1550, %1543, %1532
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %11, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %12, align 4
  br label %1663

1543:                                             ; preds = %1536
  %1544 = load ptr, ptr %43, align 8, !tbaa !5
  %1545 = load i32, ptr %103, align 4, !tbaa !33
  %1546 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %1544, i32 noundef %1545, i32 noundef -1)
          to label %1547 unwind label %1539

1547:                                             ; preds = %1543
  %1548 = icmp ne i32 %1546, 0
  br i1 %1548, label %1550, label %1549

1549:                                             ; preds = %1547
  br label %1659

1550:                                             ; preds = %1547
  %1551 = load ptr, ptr %44, align 8, !tbaa !5
  %1552 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %1551)
          to label %1553 unwind label %1539

1553:                                             ; preds = %1550
  %1554 = icmp ne i32 %1552, 7
  br i1 %1554, label %1555, label %1556

1555:                                             ; preds = %1553
  br label %1659

1556:                                             ; preds = %1553
  %1557 = load ptr, ptr %44, align 8, !tbaa !5
  %1558 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %1557, ptr noundef @.str.163, i32 noundef 0)
          to label %1559 unwind label %1539

1559:                                             ; preds = %1556
  %1560 = icmp ne i32 %1558, 0
  br i1 %1560, label %1562, label %1561

1561:                                             ; preds = %1559
  br label %1659

1562:                                             ; preds = %1559
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #14
  %1563 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %104, ptr noundef nonnull align 8 dereferenceable(40) %1563)
          to label %1564 unwind label %1569

1564:                                             ; preds = %1562
  %1565 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %104) #14
  %1566 = call i32 @strcmp(ptr noundef %1565, ptr noundef @.str.174) #17
  %1567 = icmp ne i32 %1566, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #14
  br i1 %1567, label %1568, label %1573

1568:                                             ; preds = %1564
  br label %1659

1569:                                             ; preds = %1562
  %1570 = landingpad { ptr, i32 }
          cleanup
  %1571 = extractvalue { ptr, i32 } %1570, 0
  store ptr %1571, ptr %11, align 8
  %1572 = extractvalue { ptr, i32 } %1570, 1
  store i32 %1572, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #14
  br label %1663

1573:                                             ; preds = %1564
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #14
  %1574 = load ptr, ptr %46, align 8, !tbaa !5
  %1575 = load i32, ptr %103, align 4, !tbaa !33
  %1576 = zext i32 %1575 to i64
  %1577 = getelementptr inbounds ptr, ptr %1574, i64 %1576
  %1578 = load ptr, ptr %1577, align 8, !tbaa !5
  store ptr %1578, ptr %105, align 8, !tbaa !5
  %1579 = load ptr, ptr %105, align 8, !tbaa !5
  %1580 = icmp ne ptr %1579, null
  br i1 %1580, label %1582, label %1581

1581:                                             ; preds = %1573
  store i32 16, ptr %14, align 4
  br label %1656

1582:                                             ; preds = %1573
  %1583 = load ptr, ptr %44, align 8, !tbaa !5
  %1584 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %1583, ptr noundef @.str.190, i32 noundef 6)
          to label %1585 unwind label %1595

1585:                                             ; preds = %1582
  %1586 = icmp ne i32 %1584, 0
  br i1 %1586, label %1587, label %1655

1587:                                             ; preds = %1585
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #14
  store i32 0, ptr %106, align 4, !tbaa !33
  br label %1588

1588:                                             ; preds = %1650, %1587
  %1589 = load i32, ptr %106, align 4, !tbaa !33
  %1590 = load ptr, ptr %21, align 8, !tbaa !5
  %1591 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %1590)
          to label %1592 unwind label %1599

1592:                                             ; preds = %1588
  %1593 = icmp ult i32 %1589, %1591
  br i1 %1593, label %1603, label %1594

1594:                                             ; preds = %1592
  store i32 17, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #14
  br label %1654

1595:                                             ; preds = %1582
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %11, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %12, align 4
  br label %1662

1599:                                             ; preds = %1607, %1603, %1588
  %1600 = landingpad { ptr, i32 }
          cleanup
  %1601 = extractvalue { ptr, i32 } %1600, 0
  store ptr %1601, ptr %11, align 8
  %1602 = extractvalue { ptr, i32 } %1600, 1
  store i32 %1602, ptr %12, align 4
  br label %1653

1603:                                             ; preds = %1592
  %1604 = load ptr, ptr %21, align 8, !tbaa !5
  %1605 = load i32, ptr %106, align 4, !tbaa !33
  %1606 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %1604, i32 noundef %1605, i32 noundef -1)
          to label %1607 unwind label %1599

1607:                                             ; preds = %1603
  %1608 = load ptr, ptr %22, align 8, !tbaa !5
  %1609 = invoke noundef zeroext i1 @_ZNK4Json5Value9isNumericEv(ptr noundef nonnull align 8 dereferenceable(40) %1608)
          to label %1610 unwind label %1599

1610:                                             ; preds = %1607
  br i1 %1609, label %1611, label %1649

1611:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #14
  %1612 = load ptr, ptr %22, align 8, !tbaa !5
  %1613 = invoke noundef i32 @_ZNK4Json5Value5asIntEv(ptr noundef nonnull align 8 dereferenceable(40) %1612)
          to label %1614 unwind label %1638

1614:                                             ; preds = %1611
  store i32 %1613, ptr %107, align 4, !tbaa !33
  %1615 = load i32, ptr %107, align 4, !tbaa !33
  %1616 = icmp sge i32 %1615, 0
  br i1 %1616, label %1617, label %1647

1617:                                             ; preds = %1614
  %1618 = load i32, ptr %107, align 4, !tbaa !33
  %1619 = load ptr, ptr %43, align 8, !tbaa !5
  %1620 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %1619)
          to label %1621 unwind label %1638

1621:                                             ; preds = %1617
  %1622 = icmp ult i32 %1618, %1620
  br i1 %1622, label %1623, label %1647

1623:                                             ; preds = %1621
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #14
  %1624 = load ptr, ptr %46, align 8, !tbaa !5
  %1625 = load i32, ptr %107, align 4, !tbaa !33
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds ptr, ptr %1624, i64 %1626
  %1628 = load ptr, ptr %1627, align 8, !tbaa !5
  store ptr %1628, ptr %108, align 8, !tbaa !5
  %1629 = load ptr, ptr %108, align 8, !tbaa !5
  %1630 = icmp ne ptr %1629, null
  br i1 %1630, label %1631, label %1646

1631:                                             ; preds = %1623
  %1632 = load ptr, ptr %42, align 8, !tbaa !5
  %1633 = load ptr, ptr %108, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11RemoveChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1632, ptr noundef %1633)
          to label %1634 unwind label %1642

1634:                                             ; preds = %1631
  %1635 = load ptr, ptr %105, align 8, !tbaa !5
  %1636 = load ptr, ptr %108, align 8, !tbaa !5
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %1635, ptr noundef %1636)
          to label %1637 unwind label %1642

1637:                                             ; preds = %1634
  br label %1646

1638:                                             ; preds = %1617, %1611
  %1639 = landingpad { ptr, i32 }
          cleanup
  %1640 = extractvalue { ptr, i32 } %1639, 0
  store ptr %1640, ptr %11, align 8
  %1641 = extractvalue { ptr, i32 } %1639, 1
  store i32 %1641, ptr %12, align 4
  br label %1648

1642:                                             ; preds = %1634, %1631
  %1643 = landingpad { ptr, i32 }
          cleanup
  %1644 = extractvalue { ptr, i32 } %1643, 0
  store ptr %1644, ptr %11, align 8
  %1645 = extractvalue { ptr, i32 } %1643, 1
  store i32 %1645, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #14
  br label %1648

1646:                                             ; preds = %1637, %1623
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #14
  br label %1647

1647:                                             ; preds = %1646, %1621, %1614
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #14
  br label %1649

1648:                                             ; preds = %1642, %1638
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #14
  br label %1653

1649:                                             ; preds = %1647, %1610
  br label %1650

1650:                                             ; preds = %1649
  %1651 = load i32, ptr %106, align 4, !tbaa !33
  %1652 = add i32 %1651, 1
  store i32 %1652, ptr %106, align 4, !tbaa !33
  br label %1588, !llvm.loop !38

1653:                                             ; preds = %1648, %1599
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #14
  br label %1662

1654:                                             ; preds = %1594
  br label %1655

1655:                                             ; preds = %1654, %1585
  store i32 0, ptr %14, align 4
  br label %1656

1656:                                             ; preds = %1655, %1581
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #14
  %1657 = load i32, ptr %14, align 4
  switch i32 %1657, label %1717 [
    i32 0, label %1658
    i32 16, label %1659
  ]

1658:                                             ; preds = %1656
  br label %1659

1659:                                             ; preds = %1658, %1656, %1568, %1561, %1555, %1549
  %1660 = load i32, ptr %103, align 4, !tbaa !33
  %1661 = add i32 %1660, 1
  store i32 %1661, ptr %103, align 4, !tbaa !33
  br label %1532, !llvm.loop !39

1662:                                             ; preds = %1653, %1595
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #14
  br label %1663

1663:                                             ; preds = %1662, %1569, %1539
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  br label %1672

1664:                                             ; preds = %1538
  %1665 = load ptr, ptr %46, align 8, !tbaa !5
  %1666 = icmp eq ptr %1665, null
  br i1 %1666, label %1668, label %1667

1667:                                             ; preds = %1664
  call void @_ZdaPv(ptr noundef %1665) #16
  br label %1668

1668:                                             ; preds = %1667, %1664
  store i32 0, ptr %14, align 4
  br label %1669

1669:                                             ; preds = %1668, %1528
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #14
  %1670 = load i32, ptr %14, align 4
  switch i32 %1670, label %1674 [
    i32 0, label %1671
  ]

1671:                                             ; preds = %1669
  br label %1673

1672:                                             ; preds = %1663, %1530, %532, %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #14
  br label %1681

1673:                                             ; preds = %1671, %490
  store i32 0, ptr %14, align 4
  br label %1674

1674:                                             ; preds = %1673, %1669, %497
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %41) #14
  br label %1675

1675:                                             ; preds = %1674, %441
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  %1676 = load i32, ptr %14, align 4
  switch i32 %1676, label %1684 [
    i32 0, label %1677
    i32 4, label %1678
  ]

1677:                                             ; preds = %1675
  br label %1678

1678:                                             ; preds = %1677, %1675, %426
  %1679 = load i32, ptr %35, align 4, !tbaa !33
  %1680 = add i32 %1679, 1
  store i32 %1680, ptr %35, align 4, !tbaa !33
  br label %403, !llvm.loop !40

1681:                                             ; preds = %1672, %506
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  br label %1682

1682:                                             ; preds = %1681, %502, %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %41) #14
  br label %1683

1683:                                             ; preds = %1682, %471, %459, %442
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  br label %1686

1684:                                             ; preds = %1675, %420, %409
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #14
  %1685 = load i32, ptr %14, align 4
  switch i32 %1685, label %1688 [
    i32 2, label %1687
  ]

1686:                                             ; preds = %1683, %410
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #14
  br label %1689

1687:                                             ; preds = %1684
  store i32 1, ptr %4, align 4
  store i32 1, ptr %14, align 4
  br label %1688

1688:                                             ; preds = %1687, %1684, %385
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %32) #14
  call void @llvm.lifetime.end.p0(i64 272, ptr %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1024, ptr %26) #14
  br label %1697

1689:                                             ; preds = %1686, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  br label %1690

1690:                                             ; preds = %1689, %394
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %32) #14
  br label %1691

1691:                                             ; preds = %1690, %390
  call void @llvm.lifetime.end.p0(i64 272, ptr %32) #14
  br label %1692

1692:                                             ; preds = %1691, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  br label %1693

1693:                                             ; preds = %1692, %368
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  br label %1694

1694:                                             ; preds = %1693, %331
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #14
  br label %1695

1695:                                             ; preds = %1694, %281
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #14
  br label %1696

1696:                                             ; preds = %1695, %256, %252
  call void @llvm.lifetime.end.p0(i64 1024, ptr %26) #14
  br label %1698

1697:                                             ; preds = %1688, %226
  call void @llvm.lifetime.end.p0(i64 1024, ptr %24) #14
  br label %1699

1698:                                             ; preds = %1696, %235, %231
  call void @llvm.lifetime.end.p0(i64 1024, ptr %24) #14
  br label %1700

1699:                                             ; preds = %1697, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269) %20) #14
  call void @llvm.lifetime.end.p0(i64 272, ptr %20) #14
  call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #14
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #14
  br label %1703

1700:                                             ; preds = %1698, %207
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269) %20) #14
  br label %1701

1701:                                             ; preds = %1700, %203
  call void @llvm.lifetime.end.p0(i64 272, ptr %20) #14
  call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #14
  br label %1702

1702:                                             ; preds = %1701, %199
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #14
  br label %1704

1703:                                             ; preds = %1699, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #14
  br label %1708

1704:                                             ; preds = %1702, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %1705

1705:                                             ; preds = %1704, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #14
  br label %1706

1706:                                             ; preds = %1705, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #14
  br label %1707

1707:                                             ; preds = %1706, %160
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #14
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #14
  br label %1710

1708:                                             ; preds = %1703, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #14
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #14
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9R2TextureED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #14
  %1709 = load i32, ptr %4, align 4
  ret i32 %1709

1710:                                             ; preds = %1707, %130
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #14
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #14
  br label %1711

1711:                                             ; preds = %1710, %116
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #14
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9R2TextureED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #14
  br label %1712

1712:                                             ; preds = %1711
  %1713 = load ptr, ptr %11, align 8
  %1714 = load i32, ptr %12, align 4
  %1715 = insertvalue { ptr, i32 } poison, ptr %1713, 0
  %1716 = insertvalue { ptr, i32 } %1715, i32 %1714, 1
  resume { ptr, i32 } %1716

1717:                                             ; preds = %1656
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef) #10 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

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

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

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

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

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

declare i32 @fclose(ptr noundef) #2

declare void @_ZN11R3SceneNode11RemoveChildEPS_(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) #2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

declare i32 @fseek(ptr noundef, i64 noundef, i32 noundef) #2

declare i64 @ftell(ptr noundef) #2

declare i64 @fread(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

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

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

declare void @_ZN4Json6ReaderC1Ev(ptr noundef nonnull align 8 dereferenceable(269)) unnamed_addr #2

declare noundef zeroext i1 @_ZN4Json6Reader5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5ValueEb(ptr noundef nonnull align 8 dereferenceable(269), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) #2

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

declare void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(40)) #2

declare noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) #2

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

declare noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40)) #2

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

declare noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40)) #2

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

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

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

declare void @_ZN8R3Affine5ResetERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) #2

declare noundef i32 @_Z12RNFileExistsPKc(ptr noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352)) #10 align 2

declare void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) #2

declare void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

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

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

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

declare noundef zeroext i1 @_ZNK4Json5Value9isNumericEv(ptr noundef nonnull align 8 dereferenceable(40)) #2

declare noundef i32 @_ZNK4Json5Value5asIntEv(ptr noundef nonnull align 8 dereferenceable(40)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269)) unnamed_addr #10 align 2

; Function Attrs: nounwind
declare void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #9

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

declare void @_ZN7R3SceneC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !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 = !{!30, !30, i64 0}
!30 = !{!"long", !7, i64 0}
!31 = !{!7, !7, i64 0}
!32 = !{!26, !26, i64 0}
!33 = !{!13, !13, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = distinct !{!38, !35}
!39 = distinct !{!39, !35}
!40 = distinct !{!40, !35}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.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.RNSymbolTable.18 = type { %class.RNMap.19 }
%class.RNMap.19 = type { ptr }
%class.RNSymbolTable.20 = type { %class.RNMap.21 }
%class.RNMap.21 = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Json::Value" = type { %"union.Json::Value::ValueHolder", i16, ptr, i64, i64 }
%"union.Json::Value::ValueHolder" = type { i64 }
%"class.Json::Reader" = type <{ %"class.std::stack", %"class.std::deque.25", %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, ptr, %"class.std::__cxx11::basic_string", %"class.Json::Features", i8, [3 x i8] }>
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl" }
%"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl" = type { %"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<Json::Value *, std::allocator<Json::Value *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::deque.25" = type { %"class.std::_Deque_base.26" }
%"class.std::_Deque_base.26" = type { %"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl" }
%"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl" = type { %"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl_data" }
%"struct.std::_Deque_base<Json::Reader::ErrorInfo, std::allocator<Json::Reader::ErrorInfo>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.30", %"struct.std::_Deque_iterator.30" }
%"struct.std::_Deque_iterator.30" = type { ptr, ptr, ptr, ptr }
%"class.Json::Features" = type { i8, i8, i8, i8 }
%class.R3Vector = type { [3 x double] }
%"class.std::allocator" = type { i8 }
%class.RNArray.1 = type { %class.RNVArray }
%class.RNVArray = type { ptr, i32, i32 }

@R3identity_affine = external global %class.R3Affine, align 8
@stderr = external local_unnamed_addr global ptr, align 8
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.164 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.165 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.166 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [6 x i8], align 1
@R4identity_matrix = external global %class.R4Matrix, align 8
@.str.171 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.176 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.177 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.178 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.179 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.180 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.181 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.182 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.183 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.184 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.185 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.186 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.187 = external hidden unnamed_addr constant [4 x i8], align 1
@__const._ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode.box_dimensions = external hidden unnamed_addr constant [3 x double], align 16
@.str.188 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.189 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [12 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

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

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

; 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: mustprogress uwtable
declare dso_local void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode(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.RNSymbolTable.18, align 8
  %5 = alloca %class.RNSymbolTable.20, align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.Json::Value", align 8
  %8 = alloca %"class.Json::Reader", align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca [1024 x i8], align 16
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca [1024 x i8], align 16
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %class.R3Vector, align 8
  %17 = alloca %class.R3Vector, align 8
  %18 = alloca %class.R3Affine, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca [1024 x i8], align 16
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca [1024 x i8], align 16
  %30 = alloca [1024 x i8], align 16
  %31 = alloca [1024 x i8], align 16
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  %53 = alloca %class.R3Affine, align 8
  %54 = alloca %class.R4Matrix, align 8
  %55 = alloca [4096 x i8], align 16
  %56 = alloca [4096 x i8], align 16
  %57 = alloca %class.RNArray.1, align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::allocator", align 1
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator", align 1
  %63 = alloca %class.RNArray.1, align 8
  %64 = alloca [3 x double], align 16
  %65 = alloca %class.RNArray.1, align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #15
  call void @_ZN13RNSymbolTableIP9R2TextureEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #15
  invoke void @_ZN13RNSymbolTableIP7R3SceneEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %67 unwind label %70

67:                                               ; preds = %3
  %.not = icmp eq ptr %2, null
  %68 = load ptr, ptr %0, align 8
  %spec.select = select i1 %.not, ptr %68, ptr %2
  %69 = call noalias ptr @fopen(ptr noundef %1, ptr noundef nonnull @.str.147)
  %.not300 = icmp eq ptr %69, null
  br i1 %.not300, label %72, label %75

70:                                               ; preds = %3
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %942

72:                                               ; preds = %67
  %73 = load ptr, ptr @stderr, align 8, !tbaa !5
  %74 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %73, ptr noundef nonnull @.str.148, ptr noundef %1) #16
  br label %941

75:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #15
  %76 = call i32 @fseek(ptr noundef nonnull %69, i64 noundef 0, i32 noundef 2)
  %77 = call i64 @ftell(ptr noundef nonnull %69)
  %78 = call i32 @fseek(ptr noundef nonnull %69, i64 noundef 0, i32 noundef 0)
  %79 = add nsw i64 %77, 1
  %80 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %79) #17
          to label %81 unwind label %86

81:                                               ; preds = %75
  %82 = call i64 @fread(ptr noundef nonnull %80, i64 noundef 1, i64 noundef %77, ptr noundef nonnull %69)
  %.not301 = icmp eq i64 %82, %77
  br i1 %.not301, label %90, label %83

83:                                               ; preds = %81
  %84 = load ptr, ptr @stderr, align 8, !tbaa !5
  %85 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %84, ptr noundef nonnull @.str.149, ptr noundef %1) #16
  br label %939

86:                                               ; preds = %75
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %940

88:                                               ; preds = %90
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %940

90:                                               ; preds = %81
  %91 = getelementptr inbounds i8, ptr %80, i64 %77
  store i8 0, ptr %91, align 1, !tbaa !9
  %92 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull %80)
          to label %93 unwind label %88

93:                                               ; preds = %90
  call void @_ZdaPv(ptr noundef nonnull %80) #18
  %94 = call i32 @fclose(ptr noundef nonnull %69)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #15
  invoke void @_ZN4Json5ValueC1ENS_9ValueTypeE(ptr noundef nonnull align 8 dereferenceable(40) %7, i32 noundef 0)
          to label %95 unwind label %102

95:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %8) #15
  invoke void @_ZN4Json6ReaderC1Ev(ptr noundef nonnull align 8 dereferenceable(269) %8)
          to label %96 unwind label %104

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #15
  %97 = invoke noundef zeroext i1 @_ZN4Json6Reader5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5ValueEb(ptr noundef nonnull align 8 dereferenceable(269) %8, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext false)
          to label %98 unwind label %106

98:                                               ; preds = %96
  br i1 %97, label %108, label %99

99:                                               ; preds = %98
  %100 = load ptr, ptr @stderr, align 8, !tbaa !5
  %101 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %100, ptr noundef nonnull @.str.150, ptr noundef %1) #16
  br label %935

102:                                              ; preds = %93
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %938

104:                                              ; preds = %95
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %937

106:                                              ; preds = %96
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %936

108:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %12) #15
  %109 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.151, i64 noundef 1024) #15
  %110 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %7, ptr noundef nonnull @.str.152, i32 noundef 4)
          to label %111 unwind label %121

111:                                              ; preds = %108
  %.not302 = icmp eq i32 %110, 0
  br i1 %.not302, label %125, label %112

112:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #15
  %113 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(40) %113)
          to label %114 unwind label %123

114:                                              ; preds = %112
  %115 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #15
  %116 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) %115, i64 noundef 1024) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #15
  %117 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) @.str.151) #19
  %.not303 = icmp eq i32 %117, 0
  br i1 %.not303, label %125, label %118

118:                                              ; preds = %114
  %119 = load ptr, ptr @stderr, align 8, !tbaa !5
  %120 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %119, ptr noundef nonnull @.str.153, ptr noundef nonnull %12, ptr noundef %1) #16
  br label %933

121:                                              ; preds = %108
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %934

123:                                              ; preds = %112
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #15
  br label %934

125:                                              ; preds = %114, %111
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %14) #15
  %126 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %14, ptr noundef nonnull dereferenceable(1) @.str.154, i64 noundef 1024) #15
  %127 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %7, ptr noundef nonnull @.str.155, i32 noundef 4)
          to label %128 unwind label %134

128:                                              ; preds = %125
  %.not304 = icmp eq i32 %127, 0
  br i1 %.not304, label %138, label %129

129:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #15
  %130 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(40) %130)
          to label %131 unwind label %136

131:                                              ; preds = %129
  %132 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %15) #15
  %133 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %14, ptr noundef nonnull dereferenceable(1) %132, i64 noundef 1024) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #15
  br label %138

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

136:                                              ; preds = %129
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #15
  br label %932

138:                                              ; preds = %131, %128
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #15
  invoke void @_ZN8R3VectorC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %16, double noundef 0.000000e+00, double noundef 1.000000e+00, double noundef 0.000000e+00)
          to label %139 unwind label %157

139:                                              ; preds = %138
  %140 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %7, ptr noundef nonnull @.str.156, i32 noundef 6)
          to label %141 unwind label %157

141:                                              ; preds = %139
  %.not305 = icmp eq i32 %140, 0
  br i1 %.not305, label %180, label %142

142:                                              ; preds = %141
  %143 = load ptr, ptr %9, align 8, !tbaa !5
  %144 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %143)
          to label %145 unwind label %157

145:                                              ; preds = %142
  %146 = icmp ugt i32 %144, 2
  br i1 %146, label %147, label %180

147:                                              ; preds = %145
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  %149 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %148, i32 noundef 0, i32 noundef -1)
          to label %150 unwind label %157

150:                                              ; preds = %147
  %.not306 = icmp eq i32 %149, 0
  br i1 %.not306, label %159, label %151

151:                                              ; preds = %150
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %152)
          to label %154 unwind label %157

154:                                              ; preds = %151
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 0)
          to label %156 unwind label %157

156:                                              ; preds = %154
  store double %153, ptr %155, align 8, !tbaa !10
  br label %159

157:                                              ; preds = %179, %176, %173, %169, %166, %163, %159, %154, %151, %147, %142, %139, %138
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %931

159:                                              ; preds = %156, %150
  %160 = load ptr, ptr %9, align 8, !tbaa !5
  %161 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %160, i32 noundef 1, i32 noundef -1)
          to label %162 unwind label %157

162:                                              ; preds = %159
  %.not307 = icmp eq i32 %161, 0
  br i1 %.not307, label %169, label %163

163:                                              ; preds = %162
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %164)
          to label %166 unwind label %157

166:                                              ; preds = %163
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 1)
          to label %168 unwind label %157

168:                                              ; preds = %166
  store double %165, ptr %167, align 8, !tbaa !10
  br label %169

169:                                              ; preds = %168, %162
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %170, i32 noundef 2, i32 noundef -1)
          to label %172 unwind label %157

172:                                              ; preds = %169
  %.not308 = icmp eq i32 %171, 0
  br i1 %.not308, label %179, label %173

173:                                              ; preds = %172
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %174)
          to label %176 unwind label %157

176:                                              ; preds = %173
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 2)
          to label %178 unwind label %157

178:                                              ; preds = %176
  store double %175, ptr %177, align 8, !tbaa !10
  br label %179

179:                                              ; preds = %178, %172
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %180 unwind label %157

180:                                              ; preds = %145, %179, %141
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #15
  invoke void @_ZN8R3VectorC1Eddd(ptr noundef nonnull align 8 dereferenceable(24) %17, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef 1.000000e+00)
          to label %181 unwind label %199

181:                                              ; preds = %180
  %182 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %7, ptr noundef nonnull @.str.157, i32 noundef 6)
          to label %183 unwind label %199

183:                                              ; preds = %181
  %.not309 = icmp eq i32 %182, 0
  br i1 %.not309, label %222, label %184

184:                                              ; preds = %183
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %185)
          to label %187 unwind label %199

187:                                              ; preds = %184
  %188 = icmp ugt i32 %186, 2
  br i1 %188, label %189, label %222

189:                                              ; preds = %187
  %190 = load ptr, ptr %9, align 8, !tbaa !5
  %191 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %190, i32 noundef 0, i32 noundef -1)
          to label %192 unwind label %199

192:                                              ; preds = %189
  %.not310 = icmp eq i32 %191, 0
  br i1 %.not310, label %201, label %193

193:                                              ; preds = %192
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %194)
          to label %196 unwind label %199

196:                                              ; preds = %193
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 0)
          to label %198 unwind label %199

198:                                              ; preds = %196
  store double %195, ptr %197, align 8, !tbaa !10
  br label %201

199:                                              ; preds = %221, %218, %215, %211, %208, %205, %201, %196, %193, %189, %184, %181, %180
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %930

201:                                              ; preds = %198, %192
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %202, i32 noundef 1, i32 noundef -1)
          to label %204 unwind label %199

204:                                              ; preds = %201
  %.not311 = icmp eq i32 %203, 0
  br i1 %.not311, label %211, label %205

205:                                              ; preds = %204
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %206)
          to label %208 unwind label %199

208:                                              ; preds = %205
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 1)
          to label %210 unwind label %199

210:                                              ; preds = %208
  store double %207, ptr %209, align 8, !tbaa !10
  br label %211

211:                                              ; preds = %210, %204
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %212, i32 noundef 2, i32 noundef -1)
          to label %214 unwind label %199

214:                                              ; preds = %211
  %.not312 = icmp eq i32 %213, 0
  br i1 %.not312, label %221, label %215

215:                                              ; preds = %214
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %216)
          to label %218 unwind label %199

218:                                              ; preds = %215
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8R3VectorixEi(ptr noundef nonnull align 8 dereferenceable(24) %17, i32 noundef 2)
          to label %220 unwind label %199

220:                                              ; preds = %218
  store double %217, ptr %219, align 8, !tbaa !10
  br label %221

221:                                              ; preds = %220, %214
  invoke void @_ZN8R3Vector9NormalizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %222 unwind label %199

222:                                              ; preds = %187, %221, %183
  %223 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %7, ptr noundef nonnull @.str.158, i32 noundef 0)
          to label %224 unwind label %228

224:                                              ; preds = %222
  %.not313 = icmp eq i32 %223, 0
  br i1 %.not313, label %230, label %225

225:                                              ; preds = %224
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %226)
          to label %230 unwind label %228

228:                                              ; preds = %225, %222
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %930

230:                                              ; preds = %225, %224
  %.0283 = phi double [ 1.000000e+00, %224 ], [ %227, %225 ]
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %spec.select, ptr noundef nonnull %14)
          to label %231 unwind label %240

231:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %18) #15
  invoke void @_ZN8R3AffineC2ERKS_(ptr noundef nonnull align 8 dereferenceable(272) %18, ptr noundef nonnull align 8 dereferenceable(272) @R3identity_affine)
          to label %232 unwind label %242

232:                                              ; preds = %231
  invoke void @_ZN8R3Affine5ScaleEd(ptr noundef nonnull align 8 dereferenceable(272) %18, double noundef %.0283)
          to label %233 unwind label %244

233:                                              ; preds = %232
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %spec.select, ptr noundef nonnull align 8 dereferenceable(272) %18)
          to label %234 unwind label %244

234:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #15
  %235 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull %7, ptr noundef nonnull @.str.159, i32 noundef 6)
          to label %236 unwind label %246

236:                                              ; preds = %234
  %.not314 = icmp eq i32 %235, 0
  br i1 %.not314, label %.thread494, label %.preheader502

.preheader502:                                    ; preds = %236
  %237 = getelementptr inbounds i8, ptr %64, i64 8
  %238 = getelementptr inbounds i8, ptr %64, i64 16
  %239 = getelementptr inbounds i8, ptr %0, i64 40
  br label %248

240:                                              ; preds = %230
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %930

242:                                              ; preds = %231
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %929

244:                                              ; preds = %233, %232
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %928

246:                                              ; preds = %234
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %927

248:                                              ; preds = %.preheader502, %.thread488
  %.0284 = phi i32 [ %924, %.thread488 ], [ 0, %.preheader502 ]
  %249 = load ptr, ptr %19, align 8, !tbaa !5
  %250 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %249)
          to label %251 unwind label %253

251:                                              ; preds = %248
  %252 = icmp ult i32 %.0284, %250
  br i1 %252, label %255, label %.thread494

253:                                              ; preds = %259, %255, %248
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %927

255:                                              ; preds = %251
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef %256, i32 noundef %.0284, i32 noundef -1)
          to label %258 unwind label %253

258:                                              ; preds = %255
  %.not315 = icmp eq i32 %257, 0
  br i1 %.not315, label %.thread494, label %259

259:                                              ; preds = %258
  %260 = load ptr, ptr %20, align 8, !tbaa !5
  %261 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %260)
          to label %262 unwind label %253

262:                                              ; preds = %259
  %.not316 = icmp eq i32 %261, 7
  br i1 %.not316, label %263, label %.thread488

263:                                              ; preds = %262
  %264 = load ptr, ptr %20, align 8, !tbaa !5
  %265 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %264, ptr noundef nonnull @.str.160, i32 noundef 0)
          to label %266 unwind label %273

266:                                              ; preds = %263
  %.not317 = icmp eq i32 %265, 0
  br i1 %.not317, label %283, label %267

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #15
  %268 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(40) %268)
          to label %269 unwind label %275

269:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %270 unwind label %277

270:                                              ; preds = %269
  %271 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %272 unwind label %279

272:                                              ; preds = %270
  %.not320 = icmp eq i32 %271, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #15
  br i1 %.not320, label %.thread488, label %283

273:                                              ; preds = %283, %263
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %927

275:                                              ; preds = %267
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %282

277:                                              ; preds = %269
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %281

279:                                              ; preds = %270
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #15
  br label %281

281:                                              ; preds = %279, %277
  %.pn = phi { ptr, i32 } [ %280, %279 ], [ %278, %277 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #15
  br label %282

282:                                              ; preds = %281, %275
  %.pn.pn = phi { ptr, i32 } [ %.pn, %281 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #15
  br label %927

283:                                              ; preds = %272, %266
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %284, ptr noundef nonnull @.str.155, i32 noundef 0)
          to label %286 unwind label %273

286:                                              ; preds = %283
  %.not321 = icmp eq i32 %285, 0
  br i1 %.not321, label %294, label %287

287:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #15
  %288 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(40) %288)
          to label %289 unwind label %292

289:                                              ; preds = %287
  %290 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %24) #15
  %291 = call i32 @atoi(ptr nocapture noundef %290) #19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #15
  br label %294

292:                                              ; preds = %287
  %293 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #15
  br label %927

294:                                              ; preds = %289, %286
  %.0285 = phi i32 [ %291, %289 ], [ %.0284, %286 ]
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %25) #15
  %295 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %25, ptr noundef nonnull dereferenceable(1) @.str.161, i32 noundef %.0285) #15
  %296 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %297 unwind label %309

297:                                              ; preds = %294
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %0)
          to label %298 unwind label %311

298:                                              ; preds = %297
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %25)
          to label %299 unwind label %309

299:                                              ; preds = %298
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %spec.select, ptr noundef nonnull %296)
          to label %300 unwind label %309

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #15
  %301 = load ptr, ptr %20, align 8, !tbaa !5
  %302 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef %301, ptr noundef nonnull @.str.162, i32 noundef 6)
          to label %303 unwind label %313

303:                                              ; preds = %300
  %.not322 = icmp eq i32 %302, 0
  br i1 %.not322, label %.thread491, label %304

304:                                              ; preds = %303
  %305 = load ptr, ptr %26, align 8, !tbaa !5
  %306 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %305)
          to label %307 unwind label %313

307:                                              ; preds = %304
  %308 = icmp eq i32 %306, 0
  br i1 %308, label %.thread491, label %315

309:                                              ; preds = %299, %298, %294
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %926

311:                                              ; preds = %297
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %296, i64 noundef 432) #18
  br label %926

313:                                              ; preds = %304, %300
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %925

315:                                              ; preds = %307
  %316 = load ptr, ptr %26, align 8, !tbaa !5
  %317 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %316)
          to label %318 unwind label %327

318:                                              ; preds = %315
  %319 = zext i32 %317 to i64
  %320 = shl nuw nsw i64 %319, 3
  %321 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %320) #17
          to label %.preheader501 unwind label %327

.preheader501:                                    ; preds = %318, %331
  %indvars.iv = phi i64 [ %indvars.iv.next, %331 ], [ 0, %318 ]
  %322 = load ptr, ptr %26, align 8, !tbaa !5
  %323 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %322)
          to label %324 unwind label %329

324:                                              ; preds = %.preheader501
  %325 = zext i32 %323 to i64
  %326 = icmp ult i64 %indvars.iv, %325
  br i1 %326, label %331, label %.preheader499

327:                                              ; preds = %318, %315
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %925

329:                                              ; preds = %.preheader501
  %330 = landingpad { ptr, i32 }
          cleanup
  br label %925

331:                                              ; preds = %324
  %332 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv
  store ptr null, ptr %332, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br label %.preheader501, !llvm.loop !12

.preheader499:                                    ; preds = %324, %848
  %indvars.iv780 = phi i64 [ %indvars.iv.next781, %848 ], [ 0, %324 ]
  %333 = load ptr, ptr %26, align 8, !tbaa !5
  %334 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %333)
          to label %335 unwind label %338

335:                                              ; preds = %.preheader499
  %336 = zext i32 %334 to i64
  %337 = icmp ult i64 %indvars.iv780, %336
  br i1 %337, label %340, label %.preheader498

338:                                              ; preds = %345, %340, %.preheader499
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %925

340:                                              ; preds = %335
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = trunc nuw i64 %indvars.iv780 to i32
  %343 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef %341, i32 noundef %342, i32 noundef -1)
          to label %344 unwind label %338

344:                                              ; preds = %340
  %.not323 = icmp eq i32 %343, 0
  br i1 %.not323, label %848, label %345

345:                                              ; preds = %344
  %346 = load ptr, ptr %27, align 8, !tbaa !5
  %347 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %346)
          to label %348 unwind label %338

348:                                              ; preds = %345
  %.not324 = icmp eq i32 %347, 7
  br i1 %.not324, label %349, label %848

349:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %29) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %29, i8 0, i64 1024, i1 false)
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %30) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %30, i8 0, i64 1024, i1 false)
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %31) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %31, i8 0, i64 1024, i1 false)
  %350 = load ptr, ptr %27, align 8, !tbaa !5
  %351 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %350, ptr noundef nonnull @.str.160, i32 noundef 0)
          to label %352 unwind label %359

352:                                              ; preds = %349
  %.not325 = icmp eq i32 %351, 0
  br i1 %.not325, label %369, label %353

353:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #15
  %354 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(40) %354)
          to label %355 unwind label %361

355:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %356 unwind label %363

356:                                              ; preds = %355
  %357 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %358 unwind label %365

358:                                              ; preds = %356
  %.not329 = icmp eq i32 %357, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #15
  br i1 %.not329, label %.thread477, label %369

.thread477:                                       ; preds = %358
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %29) #15
  br label %848

359:                                              ; preds = %474, %456, %438, %420, %402, %391, %380, %369, %349
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %852

361:                                              ; preds = %353
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %368

363:                                              ; preds = %355
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %356
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #15
  br label %367

367:                                              ; preds = %365, %363
  %.pn326 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #15
  br label %368

368:                                              ; preds = %367, %361
  %.pn326.pn = phi { ptr, i32 } [ %.pn326, %367 ], [ %362, %361 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #15
  br label %852

369:                                              ; preds = %358, %352
  %370 = load ptr, ptr %27, align 8, !tbaa !5
  %371 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %370, ptr noundef nonnull @.str.155, i32 noundef 0)
          to label %372 unwind label %359

372:                                              ; preds = %369
  %.not330 = icmp eq i32 %371, 0
  br i1 %.not330, label %380, label %373

373:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #15
  %374 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(40) %374)
          to label %375 unwind label %378

375:                                              ; preds = %373
  %376 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %35) #15
  %377 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %29, ptr noundef nonnull dereferenceable(1) %376, i64 noundef 1024) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #15
  br label %380

378:                                              ; preds = %373
  %379 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #15
  br label %852

380:                                              ; preds = %375, %372
  %381 = load ptr, ptr %27, align 8, !tbaa !5
  %382 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %381, ptr noundef nonnull @.str.163, i32 noundef 0)
          to label %383 unwind label %359

383:                                              ; preds = %380
  %.not331 = icmp eq i32 %382, 0
  br i1 %.not331, label %391, label %384

384:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #15
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(40) %385)
          to label %386 unwind label %389

386:                                              ; preds = %384
  %387 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %36) #15
  %388 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) %387, i64 noundef 1024) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #15
  br label %391

389:                                              ; preds = %384
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #15
  br label %852

391:                                              ; preds = %386, %383
  %392 = load ptr, ptr %27, align 8, !tbaa !5
  %393 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %392, ptr noundef nonnull @.str.164, i32 noundef 0)
          to label %394 unwind label %359

394:                                              ; preds = %391
  %.not332 = icmp eq i32 %393, 0
  br i1 %.not332, label %402, label %395

395:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #15
  %396 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 8 dereferenceable(40) %396)
          to label %397 unwind label %400

397:                                              ; preds = %395
  %398 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %37) #15
  %399 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %30, ptr noundef nonnull dereferenceable(1) %398, i64 noundef 1024) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #15
  br label %402

400:                                              ; preds = %395
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #15
  br label %852

402:                                              ; preds = %397, %394
  %403 = load ptr, ptr %27, align 8, !tbaa !5
  %404 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %403, ptr noundef nonnull @.str.165, i32 noundef 0)
          to label %405 unwind label %359

405:                                              ; preds = %402
  %.not333 = icmp eq i32 %404, 0
  br i1 %.not333, label %420, label %406

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #15
  %407 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(40) %407)
          to label %408 unwind label %412

408:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %409 unwind label %414

409:                                              ; preds = %408
  %410 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %411 unwind label %416

411:                                              ; preds = %409
  %.not337 = icmp ne i32 %410, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #15
  br label %420

412:                                              ; preds = %406
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %419

414:                                              ; preds = %408
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %418

416:                                              ; preds = %409
  %417 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #15
  br label %418

418:                                              ; preds = %416, %414
  %.pn334 = phi { ptr, i32 } [ %417, %416 ], [ %415, %414 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #15
  br label %419

419:                                              ; preds = %418, %412
  %.pn334.pn = phi { ptr, i32 } [ %.pn334, %418 ], [ %413, %412 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #15
  br label %852

420:                                              ; preds = %411, %405
  %.not373 = phi i1 [ true, %405 ], [ %.not337, %411 ]
  %421 = load ptr, ptr %27, align 8, !tbaa !5
  %422 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %421, ptr noundef nonnull @.str.167, i32 noundef 0)
          to label %423 unwind label %359

423:                                              ; preds = %420
  %.not338 = icmp eq i32 %422, 0
  br i1 %.not338, label %438, label %424

424:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #15
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(40) %425)
          to label %426 unwind label %430

426:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %427 unwind label %432

427:                                              ; preds = %426
  %428 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %429 unwind label %434

429:                                              ; preds = %427
  %.not342 = icmp ne i32 %428, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #15
  br label %438

430:                                              ; preds = %424
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %437

432:                                              ; preds = %426
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %436

434:                                              ; preds = %427
  %435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #15
  br label %436

436:                                              ; preds = %434, %432
  %.pn339 = phi { ptr, i32 } [ %435, %434 ], [ %433, %432 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #15
  br label %437

437:                                              ; preds = %436, %430
  %.pn339.pn = phi { ptr, i32 } [ %.pn339, %436 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #15
  br label %852

438:                                              ; preds = %429, %423
  %.not360 = phi i1 [ true, %423 ], [ %.not342, %429 ]
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %439, ptr noundef nonnull @.str.168, i32 noundef 0)
          to label %441 unwind label %359

441:                                              ; preds = %438
  %.not343 = icmp eq i32 %440, 0
  br i1 %.not343, label %456, label %442

442:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #15
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 8 dereferenceable(40) %443)
          to label %444 unwind label %448

444:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %445 unwind label %450

445:                                              ; preds = %444
  %446 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %447 unwind label %452

447:                                              ; preds = %445
  %.not347 = icmp ne i32 %446, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #15
  br label %456

448:                                              ; preds = %442
  %449 = landingpad { ptr, i32 }
          cleanup
  br label %455

450:                                              ; preds = %444
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %454

452:                                              ; preds = %445
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #15
  br label %454

454:                                              ; preds = %452, %450
  %.pn344 = phi { ptr, i32 } [ %453, %452 ], [ %451, %450 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #15
  br label %455

455:                                              ; preds = %454, %448
  %.pn344.pn = phi { ptr, i32 } [ %.pn344, %454 ], [ %449, %448 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #15
  br label %852

456:                                              ; preds = %447, %441
  %.not379 = phi i1 [ true, %441 ], [ %.not347, %447 ]
  %457 = load ptr, ptr %27, align 8, !tbaa !5
  %458 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %457, ptr noundef nonnull @.str.169, i32 noundef 0)
          to label %459 unwind label %359

459:                                              ; preds = %456
  %.not348 = icmp eq i32 %458, 0
  br i1 %.not348, label %474, label %460

460:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #15
  %461 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %47, ptr noundef nonnull align 8 dereferenceable(40) %461)
          to label %462 unwind label %466

462:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %463 unwind label %468

463:                                              ; preds = %462
  %464 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %465 unwind label %470

465:                                              ; preds = %463
  %.not352 = icmp eq i32 %464, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #15
  %spec.select459 = zext i1 %.not352 to i32
  br label %474

466:                                              ; preds = %460
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %473

468:                                              ; preds = %462
  %469 = landingpad { ptr, i32 }
          cleanup
  br label %472

470:                                              ; preds = %463
  %471 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #15
  br label %472

472:                                              ; preds = %470, %468
  %.pn349 = phi { ptr, i32 } [ %471, %470 ], [ %469, %468 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #15
  br label %473

473:                                              ; preds = %472, %466
  %.pn349.pn = phi { ptr, i32 } [ %.pn349, %472 ], [ %467, %466 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #15
  br label %852

474:                                              ; preds = %465, %459
  %.0291 = phi i32 [ 0, %459 ], [ %spec.select459, %465 ]
  %475 = load ptr, ptr %27, align 8, !tbaa !5
  %476 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %475, ptr noundef nonnull @.str.170, i32 noundef 0)
          to label %477 unwind label %359

477:                                              ; preds = %474
  %.not353 = icmp eq i32 %476, 0
  br i1 %.not353, label %492, label %478

478:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #15
  %479 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(40) %479)
          to label %480 unwind label %484

480:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.166, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %481 unwind label %486

481:                                              ; preds = %480
  %482 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %483 unwind label %488

483:                                              ; preds = %481
  %.not357 = icmp ne i32 %482, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #15
  br label %492

484:                                              ; preds = %478
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %491

486:                                              ; preds = %480
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %490

488:                                              ; preds = %481
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #15
  br label %490

490:                                              ; preds = %488, %486
  %.pn354 = phi { ptr, i32 } [ %489, %488 ], [ %487, %486 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #15
  br label %491

491:                                              ; preds = %490, %484
  %.pn354.pn = phi { ptr, i32 } [ %.pn354, %490 ], [ %485, %484 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #15
  br label %852

492:                                              ; preds = %483, %477
  %.not389 = phi i1 [ true, %477 ], [ %.not357, %483 ]
  call void @llvm.lifetime.start.p0(i64 272, ptr nonnull %53) #15
  invoke void @_ZN8R3AffineC2ERKS_(ptr noundef nonnull align 8 dereferenceable(272) %53, ptr noundef nonnull align 8 dereferenceable(272) @R3identity_affine)
          to label %493 unwind label %508

493:                                              ; preds = %492
  %494 = load ptr, ptr %27, align 8, !tbaa !5
  %495 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %494, ptr noundef nonnull @.str.115, i32 noundef 6)
          to label %496 unwind label %510

496:                                              ; preds = %493
  %.not358 = icmp eq i32 %495, 0
  br i1 %.not358, label %534, label %497

497:                                              ; preds = %496
  %498 = load ptr, ptr %9, align 8, !tbaa !5
  %499 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %498)
          to label %500 unwind label %510

500:                                              ; preds = %497
  %501 = icmp ugt i32 %499, 15
  br i1 %501, label %502, label %534

502:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %54) #15
  invoke void @_ZN8R4MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(128) %54, ptr noundef nonnull align 8 dereferenceable(128) @R4identity_matrix)
          to label %.preheader497 unwind label %512

.preheader497:                                    ; preds = %502, %530
  %.0292 = phi i32 [ %531, %530 ], [ 0, %502 ]
  %503 = load ptr, ptr %9, align 8, !tbaa !5
  %504 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %503)
          to label %505 unwind label %514

505:                                              ; preds = %.preheader497
  %506 = icmp ult i32 %.0292, %504
  br i1 %506, label %516, label %507

507:                                              ; preds = %505
  invoke void @_ZN8R3Affine5ResetERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272) %53, ptr noundef nonnull align 8 dereferenceable(128) %54, i32 noundef %.0291)
          to label %532 unwind label %512

508:                                              ; preds = %492
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %851

510:                                              ; preds = %497, %493
  %511 = landingpad { ptr, i32 }
          cleanup
  br label %850

512:                                              ; preds = %507, %502
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %533

514:                                              ; preds = %523, %520, %516, %.preheader497
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %533

516:                                              ; preds = %505
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %517, i32 noundef %.0292, i32 noundef -1)
          to label %519 unwind label %514

519:                                              ; preds = %516
  %.not417 = icmp eq i32 %518, 0
  br i1 %.not417, label %530, label %520

520:                                              ; preds = %519
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  %522 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %521)
          to label %523 unwind label %514

523:                                              ; preds = %520
  %524 = and i32 %.0292, 3
  %525 = invoke noundef ptr @_ZN8R4MatrixixEi(ptr noundef nonnull align 8 dereferenceable(128) %54, i32 noundef %524)
          to label %526 unwind label %514

526:                                              ; preds = %523
  %527 = lshr i32 %.0292, 2
  %528 = zext nneg i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %525, i64 %528
  store double %522, ptr %529, align 8, !tbaa !10
  br label %530

530:                                              ; preds = %519, %526
  %531 = add nuw i32 %.0292, 1
  br label %.preheader497, !llvm.loop !14

532:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %54) #15
  br label %534

533:                                              ; preds = %514, %512
  %.pn418 = phi { ptr, i32 } [ %515, %514 ], [ %513, %512 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %54) #15
  br label %850

534:                                              ; preds = %500, %532, %496
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %55) #15
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %56) #15
  %535 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.171) #19
  %.not359 = icmp eq i32 %535, 0
  br i1 %.not359, label %536, label %576

536:                                              ; preds = %534
  %537 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %55, ptr noundef nonnull dereferenceable(1) @.str.172, ptr noundef nonnull @.str.146, ptr noundef nonnull %14, ptr noundef nonnull %30) #15
  br i1 %.not360, label %538, label %.thread480

538:                                              ; preds = %536
  %539 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef nonnull %55)
          to label %540 unwind label %548

540:                                              ; preds = %538
  %.not361 = icmp eq i32 %539, 0
  br i1 %.not361, label %.thread480, label %541

541:                                              ; preds = %540
  %542 = invoke noalias noundef nonnull dereferenceable(352) ptr @_Znwm(i64 noundef 352) #17
          to label %543 unwind label %550

543:                                              ; preds = %541
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %542)
          to label %544 unwind label %552

544:                                              ; preds = %543
  %545 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %542)
  %546 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef nonnull %542, ptr noundef %545, ptr noundef nonnull %55, ptr noundef null)
          to label %547 unwind label %550

547:                                              ; preds = %544
  %.not362.not = icmp eq i32 %546, 0
  br i1 %.not362.not, label %.loopexit500, label %554

548:                                              ; preds = %538
  %549 = landingpad { ptr, i32 }
          cleanup
  br label %849

550:                                              ; preds = %557, %554, %544, %541
  %551 = landingpad { ptr, i32 }
          cleanup
  br label %849

552:                                              ; preds = %543
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %542, i64 noundef 352) #18
  br label %849

554:                                              ; preds = %547
  %555 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.173, ptr noundef nonnull %29) #15
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %542, ptr noundef nonnull %56)
  %556 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %542)
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %556, ptr noundef nonnull %56)
          to label %557 unwind label %550

557:                                              ; preds = %554
  call void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %542, ptr noundef nonnull %55)
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %542)
          to label %558 unwind label %550

558:                                              ; preds = %557
  %559 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %560 unwind label %570

560:                                              ; preds = %558
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %559, ptr noundef nonnull %0)
          to label %561 unwind label %572

561:                                              ; preds = %560
  %562 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17
          to label %563 unwind label %570

563:                                              ; preds = %561
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %562, ptr noundef nonnull %542, ptr noundef nonnull align 8 dereferenceable(16) %239)
          to label %564 unwind label %574

564:                                              ; preds = %563
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %559, ptr noundef nonnull %562)
          to label %565 unwind label %570

565:                                              ; preds = %564
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %559, ptr noundef nonnull %56)
          to label %566 unwind label %570

566:                                              ; preds = %565
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %559, ptr noundef nonnull align 8 dereferenceable(272) %53)
          to label %567 unwind label %570

567:                                              ; preds = %566
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %559)
          to label %568 unwind label %570

568:                                              ; preds = %567
  %569 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv780
  store ptr %559, ptr %569, align 8, !tbaa !5
  br label %.thread480

570:                                              ; preds = %567, %566, %565, %564, %561, %558
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %849

572:                                              ; preds = %560
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %559, i64 noundef 432) #18
  br label %849

574:                                              ; preds = %563
  %575 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %562, i64 noundef 48) #18
  br label %849

576:                                              ; preds = %534
  %577 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.174) #19
  %.not366 = icmp eq i32 %577, 0
  br i1 %.not366, label %578, label %701

578:                                              ; preds = %576
  %579 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %580 unwind label %598

580:                                              ; preds = %578
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %579, ptr noundef nonnull %0)
          to label %581 unwind label %600

581:                                              ; preds = %580
  %582 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.175, ptr noundef nonnull %29) #15
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %579, ptr noundef nonnull %56)
          to label %583 unwind label %598

583:                                              ; preds = %581
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %579)
          to label %584 unwind label %598

584:                                              ; preds = %583
  %585 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv780
  store ptr %579, ptr %585, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #15
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %586 unwind label %602

586:                                              ; preds = %584
  %587 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %55, ptr noundef nonnull dereferenceable(1) @.str.172, ptr noundef nonnull @.str.146, ptr noundef nonnull %14, ptr noundef nonnull %30) #15
  br i1 %.not360, label %588, label %629

588:                                              ; preds = %586
  %589 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef nonnull %55)
          to label %590 unwind label %604

590:                                              ; preds = %588
  %.not368 = icmp eq i32 %589, 0
  br i1 %.not368, label %629, label %591

591:                                              ; preds = %590
  %592 = invoke noalias noundef nonnull dereferenceable(352) ptr @_Znwm(i64 noundef 352) #17
          to label %593 unwind label %606

593:                                              ; preds = %591
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %592)
          to label %594 unwind label %608

594:                                              ; preds = %593
  %595 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %592)
  %596 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef nonnull %592, ptr noundef %595, ptr noundef nonnull %55, ptr noundef null)
          to label %597 unwind label %606

597:                                              ; preds = %594
  %.not369.not = icmp eq i32 %596, 0
  br i1 %.not369.not, label %.critedge462, label %610

598:                                              ; preds = %583, %581, %578
  %599 = landingpad { ptr, i32 }
          cleanup
  br label %849

600:                                              ; preds = %580
  %601 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %579, i64 noundef 432) #18
  br label %849

602:                                              ; preds = %584
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %700

604:                                              ; preds = %666, %631, %588
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %699

606:                                              ; preds = %613, %610, %594, %591
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %699

608:                                              ; preds = %593
  %609 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %592, i64 noundef 352) #18
  br label %699

610:                                              ; preds = %597
  %611 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.176, ptr noundef nonnull %29) #15
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %592, ptr noundef nonnull %56)
  %612 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %592)
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %612, ptr noundef nonnull %56)
          to label %613 unwind label %606

613:                                              ; preds = %610
  call void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %592, ptr noundef nonnull %55)
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %592)
          to label %614 unwind label %606

614:                                              ; preds = %613
  %615 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %616 unwind label %623

616:                                              ; preds = %614
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %615, ptr noundef nonnull %0)
          to label %617 unwind label %625

617:                                              ; preds = %616
  %618 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17
          to label %619 unwind label %623

619:                                              ; preds = %617
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %618, ptr noundef nonnull %592, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %620 unwind label %627

620:                                              ; preds = %619
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %615, ptr noundef nonnull %618)
          to label %621 unwind label %623

621:                                              ; preds = %620
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %615, ptr noundef nonnull %56)
          to label %622 unwind label %623

622:                                              ; preds = %621
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %579, ptr noundef nonnull %615)
          to label %629 unwind label %623

623:                                              ; preds = %622, %621, %620, %617, %614
  %624 = landingpad { ptr, i32 }
          cleanup
  br label %699

625:                                              ; preds = %616
  %626 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %615, i64 noundef 432) #18
  br label %699

627:                                              ; preds = %619
  %628 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %618, i64 noundef 48) #18
  br label %699

629:                                              ; preds = %622, %590, %586
  %630 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %55, ptr noundef nonnull dereferenceable(1) @.str.177, ptr noundef nonnull @.str.146, ptr noundef nonnull %14, ptr noundef nonnull %30) #15
  br i1 %.not373, label %631, label %664

631:                                              ; preds = %629
  %632 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef nonnull %55)
          to label %633 unwind label %604

633:                                              ; preds = %631
  %.not374 = icmp eq i32 %632, 0
  br i1 %.not374, label %664, label %634

634:                                              ; preds = %633
  %635 = invoke noalias noundef nonnull dereferenceable(352) ptr @_Znwm(i64 noundef 352) #17
          to label %636 unwind label %641

636:                                              ; preds = %634
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %635)
          to label %637 unwind label %643

637:                                              ; preds = %636
  %638 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %635)
  %639 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef nonnull %635, ptr noundef %638, ptr noundef nonnull %55, ptr noundef null)
          to label %640 unwind label %641

640:                                              ; preds = %637
  %.not375.not = icmp eq i32 %639, 0
  br i1 %.not375.not, label %.critedge462, label %645

641:                                              ; preds = %648, %645, %637, %634
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %699

643:                                              ; preds = %636
  %644 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %635, i64 noundef 352) #18
  br label %699

645:                                              ; preds = %640
  %646 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.178, ptr noundef nonnull %29) #15
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %635, ptr noundef nonnull %56)
  %647 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %635)
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %647, ptr noundef nonnull %56)
          to label %648 unwind label %641

648:                                              ; preds = %645
  call void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %635, ptr noundef nonnull %55)
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %635)
          to label %649 unwind label %641

649:                                              ; preds = %648
  %650 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %651 unwind label %658

651:                                              ; preds = %649
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %650, ptr noundef nonnull %0)
          to label %652 unwind label %660

652:                                              ; preds = %651
  %653 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17
          to label %654 unwind label %658

654:                                              ; preds = %652
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %653, ptr noundef nonnull %635, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %655 unwind label %662

655:                                              ; preds = %654
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %650, ptr noundef nonnull %653)
          to label %656 unwind label %658

656:                                              ; preds = %655
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %650, ptr noundef nonnull %56)
          to label %657 unwind label %658

657:                                              ; preds = %656
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %579, ptr noundef nonnull %650)
          to label %664 unwind label %658

658:                                              ; preds = %657, %656, %655, %652, %649
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %699

660:                                              ; preds = %651
  %661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %650, i64 noundef 432) #18
  br label %699

662:                                              ; preds = %654
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %653, i64 noundef 48) #18
  br label %699

664:                                              ; preds = %657, %633, %629
  %665 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %55, ptr noundef nonnull dereferenceable(1) @.str.179, ptr noundef nonnull @.str.146, ptr noundef nonnull %14, ptr noundef nonnull %30) #15
  br i1 %.not379, label %666, label %.critedge467

666:                                              ; preds = %664
  %667 = invoke noundef i32 @_Z12RNFileExistsPKc(ptr noundef nonnull %55)
          to label %668 unwind label %604

668:                                              ; preds = %666
  %.not380 = icmp eq i32 %667, 0
  br i1 %.not380, label %.critedge467, label %669

669:                                              ; preds = %668
  %670 = invoke noalias noundef nonnull dereferenceable(352) ptr @_Znwm(i64 noundef 352) #17
          to label %671 unwind label %676

671:                                              ; preds = %669
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %670)
          to label %672 unwind label %678

672:                                              ; preds = %671
  %673 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %670)
  %674 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef nonnull %670, ptr noundef %673, ptr noundef nonnull %55, ptr noundef null)
          to label %675 unwind label %676

675:                                              ; preds = %672
  %.not381.not = icmp eq i32 %674, 0
  br i1 %.not381.not, label %.critedge462, label %680

676:                                              ; preds = %683, %680, %672, %669
  %677 = landingpad { ptr, i32 }
          cleanup
  br label %699

678:                                              ; preds = %671
  %679 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %670, i64 noundef 352) #18
  br label %699

680:                                              ; preds = %675
  %681 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.180, ptr noundef nonnull %29) #15
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %670, ptr noundef nonnull %56)
  %682 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %670)
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %682, ptr noundef nonnull %56)
          to label %683 unwind label %676

683:                                              ; preds = %680
  call void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %670, ptr noundef nonnull %55)
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef nonnull %670)
          to label %684 unwind label %676

684:                                              ; preds = %683
  %685 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %686 unwind label %693

686:                                              ; preds = %684
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %685, ptr noundef nonnull %0)
          to label %687 unwind label %695

687:                                              ; preds = %686
  %688 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17
          to label %689 unwind label %693

689:                                              ; preds = %687
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %688, ptr noundef nonnull %670, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %690 unwind label %697

690:                                              ; preds = %689
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %685, ptr noundef nonnull %688)
          to label %691 unwind label %693

691:                                              ; preds = %690
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %685, ptr noundef nonnull %56)
          to label %692 unwind label %693

692:                                              ; preds = %691
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %579, ptr noundef nonnull %685)
          to label %.critedge467 unwind label %693

693:                                              ; preds = %692, %691, %690, %687, %684
  %694 = landingpad { ptr, i32 }
          cleanup
  br label %699

695:                                              ; preds = %686
  %696 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %685, i64 noundef 432) #18
  br label %699

697:                                              ; preds = %689
  %698 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %688, i64 noundef 48) #18
  br label %699

.critedge467:                                     ; preds = %692, %668, %664
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #15
  br label %.thread480

.critedge462:                                     ; preds = %675, %640, %597
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #15
  br label %.loopexit500

699:                                              ; preds = %676, %678, %697, %695, %693, %641, %643, %662, %660, %658, %606, %608, %627, %625, %623, %604
  %.pn382.pn.pn = phi { ptr, i32 } [ %605, %604 ], [ %607, %606 ], [ %609, %608 ], [ %624, %623 ], [ %628, %627 ], [ %626, %625 ], [ %642, %641 ], [ %644, %643 ], [ %659, %658 ], [ %663, %662 ], [ %661, %660 ], [ %677, %676 ], [ %679, %678 ], [ %694, %693 ], [ %698, %697 ], [ %696, %695 ]
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #15
  br label %700

700:                                              ; preds = %699, %602
  %.pn382.pn.pn.pn = phi { ptr, i32 } [ %.pn382.pn.pn, %699 ], [ %603, %602 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #15
  br label %849

701:                                              ; preds = %576
  %702 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.181) #19
  %.not388 = icmp eq i32 %702, 0
  br i1 %.not388, label %703, label %779

703:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #15
  store ptr null, ptr %58, align 8, !tbaa !5
  %.str.183..str.182 = select i1 %.not389, ptr @.str.183, ptr @.str.182
  %704 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %55, ptr noundef nonnull dereferenceable(1) %.str.183..str.182, ptr noundef nonnull @.str.146, ptr noundef nonnull %30, ptr noundef nonnull %30) #15
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull %55, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %705 unwind label %715

705:                                              ; preds = %703
  %706 = invoke noundef i32 @_ZNK5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneE4FindES5_PS7_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %59, ptr noundef nonnull %58)
          to label %707 unwind label %717

707:                                              ; preds = %705
  %.not392 = icmp eq i32 %706, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #15
  br i1 %.not392, label %708, label %741

708:                                              ; preds = %707
  %709 = invoke noalias noundef nonnull dereferenceable(352) ptr @_Znwm(i64 noundef 352) #17
          to label %710 unwind label %720

710:                                              ; preds = %708
  invoke void @_ZN7R3SceneC1Ev(ptr noundef nonnull align 8 dereferenceable(352) %709)
          to label %711 unwind label %722

711:                                              ; preds = %710
  store ptr %709, ptr %58, align 8, !tbaa !5
  %712 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %709)
  %713 = invoke noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef nonnull %709, ptr noundef %712, ptr noundef nonnull %55, ptr noundef null)
          to label %714 unwind label %720

714:                                              ; preds = %711
  %.not393 = icmp eq i32 %713, 0
  br i1 %.not393, label %.thread, label %724

.thread:                                          ; preds = %714
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #15
  br label %.loopexit500

715:                                              ; preds = %703
  %716 = landingpad { ptr, i32 }
          cleanup
  br label %719

717:                                              ; preds = %705
  %718 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #15
  br label %719

719:                                              ; preds = %717, %715
  %.pn390 = phi { ptr, i32 } [ %718, %717 ], [ %716, %715 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %60) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #15
  br label %778

720:                                              ; preds = %729, %724, %711, %708
  %721 = landingpad { ptr, i32 }
          cleanup
  br label %778

722:                                              ; preds = %710
  %723 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %709, i64 noundef 352) #18
  br label %778

724:                                              ; preds = %714
  %725 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.184, ptr noundef nonnull %30) #15
  %726 = load ptr, ptr %58, align 8, !tbaa !5
  call void @_ZN7R3Scene7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %726, ptr noundef nonnull %30)
  %727 = load ptr, ptr %58, align 8, !tbaa !5
  %728 = call noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352) %727)
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %728, ptr noundef nonnull %56)
          to label %729 unwind label %720

729:                                              ; preds = %724
  %730 = load ptr, ptr %58, align 8, !tbaa !5
  call void @_ZN7R3Scene11SetFilenameEPKc(ptr noundef nonnull align 8 dereferenceable(352) %730, ptr noundef nonnull %55)
  %731 = load ptr, ptr %58, align 8, !tbaa !5
  invoke void @_ZN7R3Scene21InsertReferencedSceneEPS_(ptr noundef nonnull align 8 dereferenceable(352) %0, ptr noundef %731)
          to label %732 unwind label %720

732:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %62) #15
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #15
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull %55, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %733 unwind label %736

733:                                              ; preds = %732
  %734 = load ptr, ptr %58, align 8, !tbaa !5
  invoke void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneE6InsertES5_S7_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %61, ptr noundef %734)
          to label %735 unwind label %738

735:                                              ; preds = %733
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #15
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #15
  br label %741

736:                                              ; preds = %732
  %737 = landingpad { ptr, i32 }
          cleanup
  br label %740

738:                                              ; preds = %733
  %739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #15
  br label %740

740:                                              ; preds = %738, %736
  %.pn394 = phi { ptr, i32 } [ %739, %738 ], [ %737, %736 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #15
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %62) #15
  br label %778

741:                                              ; preds = %735, %707
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #15
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %742 unwind label %752

742:                                              ; preds = %741
  %743 = load ptr, ptr %27, align 8, !tbaa !5
  %744 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %743, ptr noundef nonnull @.str.185, i32 noundef 6)
          to label %745 unwind label %754

745:                                              ; preds = %742
  %.not396 = icmp eq i32 %744, 0
  br i1 %.not396, label %756, label %746

746:                                              ; preds = %745
  %747 = load ptr, ptr %58, align 8, !tbaa !5
  %748 = getelementptr inbounds i8, ptr %747, i64 40
  %749 = load ptr, ptr %28, align 8, !tbaa !5
  %750 = invoke noundef i32 @_ZL19ParseSUNCGMaterialsP7R3SceneR13RNSymbolTableIP9R2TextureERK7RNArrayIP10R3MaterialERS9_PN4Json5ValueE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(16) %748, ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef %749)
          to label %751 unwind label %754

751:                                              ; preds = %746
  %.not397 = icmp eq i32 %750, 0
  br i1 %.not397, label %769, label %756

752:                                              ; preds = %741
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %777

754:                                              ; preds = %746, %742
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %776

756:                                              ; preds = %751, %745
  %757 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %758 unwind label %770

758:                                              ; preds = %756
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %757, ptr noundef nonnull %0)
          to label %759 unwind label %772

759:                                              ; preds = %758
  %760 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.186, ptr noundef nonnull %29) #15
  %761 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #17
          to label %762 unwind label %770

762:                                              ; preds = %759
  %763 = load ptr, ptr %58, align 8, !tbaa !5
  invoke void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48) %761, ptr noundef %763, ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %764 unwind label %774

764:                                              ; preds = %762
  invoke void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432) %757, ptr noundef nonnull %761)
          to label %765 unwind label %770

765:                                              ; preds = %764
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %757, ptr noundef nonnull %56)
          to label %766 unwind label %770

766:                                              ; preds = %765
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %757, ptr noundef nonnull align 8 dereferenceable(272) %53)
          to label %767 unwind label %770

767:                                              ; preds = %766
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %757)
          to label %.thread471 unwind label %770

.thread471:                                       ; preds = %767
  %768 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv780
  store ptr %757, ptr %768, align 8, !tbaa !5
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #15
  br label %.thread480

769:                                              ; preds = %751
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #15
  br label %.loopexit500

770:                                              ; preds = %767, %766, %765, %764, %759, %756
  %771 = landingpad { ptr, i32 }
          cleanup
  br label %776

772:                                              ; preds = %758
  %773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %757, i64 noundef 432) #18
  br label %776

774:                                              ; preds = %762
  %775 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %761, i64 noundef 48) #18
  br label %776

776:                                              ; preds = %770, %772, %774, %754
  %.pn398.pn = phi { ptr, i32 } [ %755, %754 ], [ %771, %770 ], [ %775, %774 ], [ %773, %772 ]
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #15
  br label %777

777:                                              ; preds = %776, %752
  %.pn398.pn.pn = phi { ptr, i32 } [ %.pn398.pn, %776 ], [ %753, %752 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #15
  br label %778

778:                                              ; preds = %777, %740, %722, %720, %719
  %.pn398.pn.pn.pn = phi { ptr, i32 } [ %.pn398.pn.pn, %777 ], [ %.pn394, %740 ], [ %721, %720 ], [ %723, %722 ], [ %.pn390, %719 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #15
  br label %849

779:                                              ; preds = %701
  %780 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %31, ptr noundef nonnull dereferenceable(1) @.str.187) #19
  %.not403 = icmp eq i32 %780, 0
  br i1 %.not403, label %781, label %.thread480

781:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %64) #15
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %64, ptr noundef nonnull align 16 dereferenceable(24) @__const._ZN7R3Scene13ReadSUNCGFileEPKcP11R3SceneNode.box_dimensions, i64 24, i1 false)
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %782, ptr noundef nonnull @.str.188, i32 noundef 6)
          to label %784 unwind label %798

784:                                              ; preds = %781
  %.not404 = icmp eq i32 %783, 0
  br i1 %.not404, label %816, label %785

785:                                              ; preds = %784
  %786 = load ptr, ptr %9, align 8, !tbaa !5
  %787 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %786)
          to label %788 unwind label %798

788:                                              ; preds = %785
  %789 = icmp ugt i32 %787, 2
  br i1 %789, label %790, label %816

790:                                              ; preds = %788
  %791 = load ptr, ptr %9, align 8, !tbaa !5
  %792 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %791, i32 noundef 0, i32 noundef -1)
          to label %793 unwind label %798

793:                                              ; preds = %790
  %.not405 = icmp eq i32 %792, 0
  br i1 %.not405, label %800, label %794

794:                                              ; preds = %793
  %795 = load ptr, ptr %10, align 8, !tbaa !5
  %796 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %795)
          to label %797 unwind label %798

797:                                              ; preds = %794
  store double %796, ptr %64, align 16, !tbaa !10
  br label %800

798:                                              ; preds = %812, %808, %804, %800, %794, %790, %785, %781
  %799 = landingpad { ptr, i32 }
          cleanup
  br label %847

800:                                              ; preds = %797, %793
  %801 = load ptr, ptr %9, align 8, !tbaa !5
  %802 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %801, i32 noundef 1, i32 noundef -1)
          to label %803 unwind label %798

803:                                              ; preds = %800
  %.not406 = icmp eq i32 %802, 0
  br i1 %.not406, label %808, label %804

804:                                              ; preds = %803
  %805 = load ptr, ptr %10, align 8, !tbaa !5
  %806 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %805)
          to label %807 unwind label %798

807:                                              ; preds = %804
  store double %806, ptr %237, align 8, !tbaa !10
  br label %808

808:                                              ; preds = %807, %803
  %809 = load ptr, ptr %9, align 8, !tbaa !5
  %810 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %809, i32 noundef 2, i32 noundef -1)
          to label %811 unwind label %798

811:                                              ; preds = %808
  %.not407 = icmp eq i32 %810, 0
  br i1 %.not407, label %816, label %812

812:                                              ; preds = %811
  %813 = load ptr, ptr %10, align 8, !tbaa !5
  %814 = invoke noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40) %813)
          to label %815 unwind label %798

815:                                              ; preds = %812
  store double %814, ptr %238, align 16, !tbaa !10
  br label %816

816:                                              ; preds = %788, %815, %811, %784
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #15
  invoke void @_ZN7RNArrayIP10R3MaterialEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %817 unwind label %825

817:                                              ; preds = %816
  %818 = load ptr, ptr %27, align 8, !tbaa !5
  %819 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %818, ptr noundef nonnull @.str.185, i32 noundef 6)
          to label %820 unwind label %827

820:                                              ; preds = %817
  %.not408 = icmp eq i32 %819, 0
  br i1 %.not408, label %829, label %821

821:                                              ; preds = %820
  %822 = load ptr, ptr %28, align 8, !tbaa !5
  %823 = invoke noundef i32 @_ZL19ParseSUNCGMaterialsP7R3SceneR13RNSymbolTableIP9R2TextureERK7RNArrayIP10R3MaterialERS9_PN4Json5ValueE(ptr noundef nonnull %0, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef nonnull align 8 dereferenceable(16) %65, ptr noundef %822)
          to label %824 unwind label %827

824:                                              ; preds = %821
  %.not409 = icmp eq i32 %823, 0
  br i1 %.not409, label %.thread474, label %829

825:                                              ; preds = %816
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %846

827:                                              ; preds = %821, %817
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %845

829:                                              ; preds = %824, %820
  %830 = invoke noalias noundef nonnull dereferenceable(432) ptr @_Znwm(i64 noundef 432) #17
          to label %831 unwind label %838

831:                                              ; preds = %829
  invoke void @_ZN11R3SceneNodeC1EP7R3Scene(ptr noundef nonnull align 8 dereferenceable(432) %830, ptr noundef nonnull %0)
          to label %832 unwind label %840

832:                                              ; preds = %831
  %833 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %56, ptr noundef nonnull dereferenceable(1) @.str.189, ptr noundef nonnull %29) #15
  invoke void @_ZN11R3SceneNode7SetNameEPKc(ptr noundef nonnull align 8 dereferenceable(432) %830, ptr noundef nonnull %56)
          to label %834 unwind label %838

834:                                              ; preds = %832
  invoke void @_ZN11R3SceneNode17SetTransformationERK8R3Affine(ptr noundef nonnull align 8 dereferenceable(432) %830, ptr noundef nonnull align 8 dereferenceable(272) %53)
          to label %835 unwind label %838

835:                                              ; preds = %834
  %836 = invoke noundef i32 @_ZL9CreateBoxP7R3SceneP11R3SceneNodePdRK7RNArrayIP10R3MaterialE(ptr noundef nonnull %0, ptr noundef nonnull %830, ptr noundef nonnull %64, ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %837 unwind label %838

837:                                              ; preds = %835
  %.not410 = icmp eq i32 %836, 0
  br i1 %.not410, label %.thread474, label %842

838:                                              ; preds = %842, %835, %834, %832, %829
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %845

840:                                              ; preds = %831
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %830, i64 noundef 432) #18
  br label %845

842:                                              ; preds = %837
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %830)
          to label %843 unwind label %838

.thread474:                                       ; preds = %824, %837
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #15
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #15
  br label %.loopexit500

843:                                              ; preds = %842
  %844 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv780
  store ptr %830, ptr %844, align 8, !tbaa !5
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #15
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #15
  br label %.thread480

845:                                              ; preds = %838, %840, %827
  %.pn411.pn = phi { ptr, i32 } [ %828, %827 ], [ %839, %838 ], [ %841, %840 ]
  call void @_ZN8RNVArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #15
  br label %846

846:                                              ; preds = %845, %825
  %.pn411.pn.pn = phi { ptr, i32 } [ %.pn411.pn, %845 ], [ %826, %825 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #15
  br label %847

847:                                              ; preds = %846, %798
  %.pn411.pn.pn.pn = phi { ptr, i32 } [ %.pn411.pn.pn, %846 ], [ %799, %798 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %64) #15
  br label %849

.thread480:                                       ; preds = %843, %.thread471, %568, %.critedge467, %779, %536, %540
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %56) #15
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %55) #15
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %53) #15
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %53) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %29) #15
  br label %848

848:                                              ; preds = %.thread480, %.thread477, %348, %344
  %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1
  br label %.preheader499, !llvm.loop !15

849:                                              ; preds = %598, %600, %700, %550, %552, %574, %572, %570, %847, %778, %548
  %.pn411.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn411.pn.pn.pn, %847 ], [ %.pn398.pn.pn.pn, %778 ], [ %549, %548 ], [ %551, %550 ], [ %553, %552 ], [ %571, %570 ], [ %575, %574 ], [ %573, %572 ], [ %.pn382.pn.pn.pn, %700 ], [ %599, %598 ], [ %601, %600 ]
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %56) #15
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %55) #15
  br label %850

850:                                              ; preds = %849, %533, %510
  %.pn418.pn = phi { ptr, i32 } [ %.pn418, %533 ], [ %.pn411.pn.pn.pn.pn, %849 ], [ %511, %510 ]
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %53) #15
  br label %851

851:                                              ; preds = %850, %508
  %.pn418.pn.pn = phi { ptr, i32 } [ %.pn418.pn, %850 ], [ %509, %508 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %53) #15
  br label %852

852:                                              ; preds = %851, %491, %473, %455, %437, %419, %400, %389, %378, %368, %359
  %.pn418.pn.pn.pn = phi { ptr, i32 } [ %.pn418.pn.pn, %851 ], [ %.pn354.pn, %491 ], [ %360, %359 ], [ %.pn349.pn, %473 ], [ %.pn344.pn, %455 ], [ %.pn339.pn, %437 ], [ %.pn334.pn, %419 ], [ %401, %400 ], [ %390, %389 ], [ %379, %378 ], [ %.pn326.pn, %368 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %29) #15
  br label %925

.preheader498:                                    ; preds = %335, %.loopexit
  %indvars.iv783 = phi i64 [ %indvars.iv.next784, %.loopexit ], [ 0, %335 ]
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %853)
          to label %855 unwind label %858

855:                                              ; preds = %.preheader498
  %856 = zext i32 %854 to i64
  %857 = icmp ult i64 %indvars.iv783, %856
  br i1 %857, label %860, label %.thread485

858:                                              ; preds = %869, %865, %860, %.preheader498
  %859 = landingpad { ptr, i32 }
          cleanup
  br label %925

860:                                              ; preds = %855
  %861 = load ptr, ptr %26, align 8, !tbaa !5
  %862 = trunc nuw i64 %indvars.iv783 to i32
  %863 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef %861, i32 noundef %862, i32 noundef -1)
          to label %864 unwind label %858

864:                                              ; preds = %860
  %.not424 = icmp eq i32 %863, 0
  br i1 %.not424, label %.loopexit, label %865

865:                                              ; preds = %864
  %866 = load ptr, ptr %27, align 8, !tbaa !5
  %867 = invoke noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40) %866)
          to label %868 unwind label %858

868:                                              ; preds = %865
  %.not425 = icmp eq i32 %867, 7
  br i1 %.not425, label %869, label %.loopexit

869:                                              ; preds = %868
  %870 = load ptr, ptr %27, align 8, !tbaa !5
  %871 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef %870, ptr noundef nonnull @.str.163, i32 noundef 0)
          to label %872 unwind label %858

872:                                              ; preds = %869
  %.not426 = icmp eq i32 %871, 0
  br i1 %.not426, label %.loopexit, label %873

873:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #15
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %66, ptr noundef nonnull align 8 dereferenceable(40) %874)
          to label %875 unwind label %878

875:                                              ; preds = %873
  %876 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %66) #15
  %877 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %876, ptr noundef nonnull dereferenceable(1) @.str.174) #19
  %.not427 = icmp eq i32 %877, 0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #15
  br i1 %.not427, label %880, label %.loopexit

878:                                              ; preds = %873
  %879 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #15
  br label %925

880:                                              ; preds = %875
  %881 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv783
  %882 = load ptr, ptr %881, align 8, !tbaa !5
  %.not428 = icmp eq ptr %882, null
  br i1 %.not428, label %.loopexit, label %883

883:                                              ; preds = %880
  %884 = load ptr, ptr %27, align 8, !tbaa !5
  %885 = invoke noundef i32 @_ZL19GetJsonObjectMemberRPN4Json5ValueES1_PKci(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef %884, ptr noundef nonnull @.str.190, i32 noundef 6)
          to label %886 unwind label %891

886:                                              ; preds = %883
  %.not429 = icmp eq i32 %885, 0
  br i1 %.not429, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %886, %922
  %.0171 = phi i32 [ %923, %922 ], [ 0, %886 ]
  %887 = load ptr, ptr %9, align 8, !tbaa !5
  %888 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %887)
          to label %889 unwind label %893

889:                                              ; preds = %.preheader
  %890 = icmp ult i32 %.0171, %888
  br i1 %890, label %895, label %.loopexit

891:                                              ; preds = %883
  %892 = landingpad { ptr, i32 }
          cleanup
  br label %925

893:                                              ; preds = %898, %895, %.preheader
  %894 = landingpad { ptr, i32 }
          cleanup
  br label %925

895:                                              ; preds = %889
  %896 = load ptr, ptr %9, align 8, !tbaa !5
  %897 = invoke noundef i32 @_ZL17GetJsonArrayEntryRPN4Json5ValueES1_ji(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %896, i32 noundef %.0171, i32 noundef -1)
          to label %898 unwind label %893

898:                                              ; preds = %895
  %899 = load ptr, ptr %10, align 8, !tbaa !5
  %900 = invoke noundef zeroext i1 @_ZNK4Json5Value9isNumericEv(ptr noundef nonnull align 8 dereferenceable(40) %899)
          to label %901 unwind label %893

901:                                              ; preds = %898
  br i1 %900, label %902, label %922

902:                                              ; preds = %901
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = invoke noundef i32 @_ZNK4Json5Value5asIntEv(ptr noundef nonnull align 8 dereferenceable(40) %903)
          to label %905 unwind label %918

905:                                              ; preds = %902
  %906 = icmp sgt i32 %904, -1
  br i1 %906, label %907, label %922

907:                                              ; preds = %905
  %908 = load ptr, ptr %26, align 8, !tbaa !5
  %909 = invoke noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40) %908)
          to label %910 unwind label %918

910:                                              ; preds = %907
  %911 = icmp ult i32 %904, %909
  br i1 %911, label %912, label %922

912:                                              ; preds = %910
  %913 = zext nneg i32 %904 to i64
  %914 = getelementptr inbounds ptr, ptr %321, i64 %913
  %915 = load ptr, ptr %914, align 8, !tbaa !5
  %.not430 = icmp eq ptr %915, null
  br i1 %.not430, label %922, label %916

916:                                              ; preds = %912
  invoke void @_ZN11R3SceneNode11RemoveChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %296, ptr noundef nonnull %915)
          to label %917 unwind label %920

917:                                              ; preds = %916
  invoke void @_ZN11R3SceneNode11InsertChildEPS_(ptr noundef nonnull align 8 dereferenceable(432) %882, ptr noundef nonnull %915)
          to label %922 unwind label %920

918:                                              ; preds = %907, %902
  %919 = landingpad { ptr, i32 }
          cleanup
  br label %925

920:                                              ; preds = %917, %916
  %921 = landingpad { ptr, i32 }
          cleanup
  br label %925

922:                                              ; preds = %905, %910, %917, %912, %901
  %923 = add nuw i32 %.0171, 1
  br label %.preheader, !llvm.loop !16

.loopexit:                                        ; preds = %889, %880, %886, %875, %872, %868, %864
  %indvars.iv.next784 = add nuw nsw i64 %indvars.iv783, 1
  br label %.preheader498, !llvm.loop !17

.thread485:                                       ; preds = %855
  call void @_ZdaPv(ptr noundef nonnull %321) #18
  br label %.thread491

.thread491:                                       ; preds = %307, %.thread485, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %25) #15
  br label %.thread488

.loopexit500:                                     ; preds = %547, %.critedge462, %.thread, %769, %.thread474
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %56) #15
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %55) #15
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %53) #15
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %53) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %25) #15
  br label %.thread494

.thread488:                                       ; preds = %272, %.thread491, %262
  %924 = add i32 %.0284, 1
  br label %248, !llvm.loop !18

925:                                              ; preds = %327, %329, %852, %338, %891, %918, %920, %893, %878, %858, %313
  %.pn431.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %314, %313 ], [ %330, %329 ], [ %328, %327 ], [ %.pn418.pn.pn.pn, %852 ], [ %339, %338 ], [ %879, %878 ], [ %859, %858 ], [ %892, %891 ], [ %894, %893 ], [ %921, %920 ], [ %919, %918 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #15
  br label %926

926:                                              ; preds = %925, %311, %309
  %.pn431.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn, %925 ], [ %310, %309 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %25) #15
  br label %927

.thread494:                                       ; preds = %258, %251, %.loopexit500, %236
  %.24 = phi i32 [ 0, %236 ], [ 0, %.loopexit500 ], [ 0, %258 ], [ 1, %251 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #15
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %18) #15
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %18) #15
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #15
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #15
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %14) #15
  br label %933

927:                                              ; preds = %253, %926, %292, %282, %273, %246
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %247, %246 ], [ %254, %253 ], [ %.pn431.pn.pn.pn.pn.pn.pn, %926 ], [ %293, %292 ], [ %274, %273 ], [ %.pn.pn, %282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #15
  br label %928

928:                                              ; preds = %927, %244
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn, %927 ], [ %245, %244 ]
  call void @_ZN8R3AffineD1Ev(ptr noundef nonnull align 8 dereferenceable(272) %18) #15
  br label %929

929:                                              ; preds = %928, %242
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %928 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %18) #15
  br label %930

930:                                              ; preds = %228, %929, %240, %199
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %200, %199 ], [ %229, %228 ], [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %929 ], [ %241, %240 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #15
  br label %931

931:                                              ; preds = %930, %157
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %930 ], [ %158, %157 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #15
  br label %932

932:                                              ; preds = %931, %136, %134
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %931 ], [ %137, %136 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %14) #15
  br label %934

933:                                              ; preds = %.thread494, %118
  %.25 = phi i32 [ 0, %118 ], [ %.24, %.thread494 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %12) #15
  br label %935

934:                                              ; preds = %932, %123, %121
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %932 ], [ %124, %123 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %12) #15
  br label %936

935:                                              ; preds = %933, %99
  %.26 = phi i32 [ %.25, %933 ], [ 0, %99 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  call void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269) %8) #15
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %8) #15
  call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #15
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #15
  br label %939

936:                                              ; preds = %934, %106
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %934 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  call void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269) %8) #15
  br label %937

937:                                              ; preds = %936, %104
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %936 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 272, ptr nonnull %8) #15
  call void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #15
  br label %938

938:                                              ; preds = %937, %102
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %937 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #15
  br label %940

939:                                              ; preds = %935, %83
  %.27 = phi i32 [ 0, %83 ], [ %.26, %935 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #15
  br label %941

940:                                              ; preds = %88, %938, %86
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %87, %86 ], [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %938 ], [ %89, %88 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #15
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #15
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #15
  br label %942

941:                                              ; preds = %939, %72
  %.28 = phi i32 [ %.27, %939 ], [ 0, %72 ]
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP7R3SceneED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #15
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9R2TextureED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #15
  ret i32 %.28

942:                                              ; preds = %940, %70
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %940 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #15
  call void @_ZN5RNMapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP9R2TextureED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #15
  resume { ptr, i32 } %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL7ReadObjP7R3SceneP11R3SceneNodePKcP7RNArrayIP10R3MaterialE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #8

declare void @_ZN11R3SceneNode11RemoveChildEPS_(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @fseek(ptr nocapture noundef, i64 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: nofree nounwind
declare noundef i64 @ftell(ptr nocapture noundef) local_unnamed_addr #8

; Function Attrs: nofree nounwind
declare noundef i64 @fread(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #8

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

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

declare void @_ZN4Json6ReaderC1Ev(ptr noundef nonnull align 8 dereferenceable(269)) unnamed_addr #2

declare noundef zeroext i1 @_ZN4Json6Reader5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS_5ValueEb(ptr noundef nonnull align 8 dereferenceable(269), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) local_unnamed_addr #2

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

declare void @_ZNK4Json5Value8asStringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

declare noundef i32 @_ZNK4Json5Value4sizeEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

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

declare noundef double @_ZNK4Json5Value8asDoubleEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

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

declare noundef i32 @_ZNK4Json5Value4typeEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

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

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

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

declare void @_ZN8R3Affine5ResetERK8R4Matrixi(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef nonnull align 8 dereferenceable(128), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_Z12RNFileExistsPKc(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK7R3Scene4RootEv(ptr noundef nonnull align 8 dereferenceable(352)) local_unnamed_addr #9 align 2

declare void @_ZN11R3SceneNode15InsertReferenceEP16R3SceneReference(ptr noundef nonnull align 8 dereferenceable(432), ptr noundef) local_unnamed_addr #2

declare void @_ZN16R3SceneReferenceC1EP7R3SceneRK7RNArrayIP10R3MaterialE(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2

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

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

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

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

declare noundef zeroext i1 @_ZNK4Json5Value9isNumericEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

declare noundef i32 @_ZNK4Json5Value5asIntEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN4Json6ReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(269)) unnamed_addr #9 align 2

; Function Attrs: nounwind
declare void @_ZN4Json5ValueD1Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #11

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

declare void @_ZN7R3SceneC1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}


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