; LLVM IR from zeux/meshoptimizer :: gltf/gltfpack.ll (Z8gltfpackPKcS0_S0_8Settings)

; 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"

%struct.Settings = type { i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, float, i8, i8, i8, float, i32, i8, i8, i8, i8, i8, [4 x float], [4 x i32], [4 x i32], [4 x i32], i32, i8, i8, i8, i8, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl" }
%"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl" }
%"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl" = type { %"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl_data" = type { ptr, ptr, 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.std::allocator" = type { i8 }
%struct.cgltf_data = type { i32, ptr, %struct.cgltf_asset, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, i64, ptr, ptr, i64, ptr, i64, %struct.cgltf_extras, i64, ptr, ptr, i64, ptr, i64, ptr, i64, ptr, i64, %struct.cgltf_memory_options, %struct.cgltf_file_options }
%struct.cgltf_asset = type { ptr, ptr, ptr, ptr, %struct.cgltf_extras, i64, ptr }
%struct.cgltf_extras = type { i64, i64, ptr }
%struct.cgltf_memory_options = type { ptr, ptr, ptr }
%struct.cgltf_file_options = type { ptr, ptr, ptr }
%struct.cgltf_image = type { ptr, ptr, ptr, ptr, %struct.cgltf_extras, i64, ptr }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@stderr = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [61 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z8gltfpackPKcS0_S0_8Settings(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef byval(%struct.Settings) align 8 %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector.3", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca i1, align 1
  %18 = alloca i1, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i64, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef %48)
          to label %49 unwind label %80

49:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = icmp ne ptr %50, null
  store i1 false, ptr %17, align 1
  store i1 false, ptr %18, align 1
  br i1 %51, label %52, label %55

52:                                               ; preds = %49
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef %53)
          to label %54 unwind label %84

54:                                               ; preds = %52
  br label %57

55:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  store i1 true, ptr %17, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  store i1 true, ptr %18, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %56 unwind label %88

56:                                               ; preds = %55
  br label %57

57:                                               ; preds = %56, %54
  %58 = load i1, ptr %18, align 1
  br i1 %58, label %59, label %60

59:                                               ; preds = %57
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  br label %60

60:                                               ; preds = %59, %57
  %61 = load i1, ptr %17, align 1
  br i1 %61, label %62, label %63

62:                                               ; preds = %60
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %63

63:                                               ; preds = %62, %60
  %64 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.2)
          to label %65 unwind label %98

65:                                               ; preds = %63
  br i1 %64, label %69, label %66

66:                                               ; preds = %65
  %67 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.3)
          to label %68 unwind label %98

68:                                               ; preds = %66
  br i1 %67, label %69, label %110

69:                                               ; preds = %68, %65
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store ptr null, ptr %19, align 8, !tbaa !5
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = invoke noundef ptr @_Z9parseGltfPKcRSt6vectorI4MeshSaIS2_EERS1_I9AnimationSaIS6_EEPS0_(ptr noundef %70, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef %19)
          to label %72 unwind label %102

72:                                               ; preds = %69
  store ptr %71, ptr %9, align 8, !tbaa !5
  %73 = load ptr, ptr %19, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %75, label %106

75:                                               ; preds = %72
  %76 = load ptr, ptr @stderr, align 8, !tbaa !5
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = load ptr, ptr %19, align 8, !tbaa !5
  %79 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %76, ptr noundef @.str.4, ptr noundef %77, ptr noundef %78) #7
  store i32 2, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %107

80:                                               ; preds = %4
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %13, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %14, align 4
  br label %650

84:                                               ; preds = %52
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %13, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %14, align 4
  br label %649

88:                                               ; preds = %55
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %13, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %14, align 4
  %92 = load i1, ptr %18, align 1
  br i1 %92, label %93, label %94

93:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  br label %94

94:                                               ; preds = %93, %88
  %95 = load i1, ptr %17, align 1
  br i1 %95, label %96, label %97

96:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %97

97:                                               ; preds = %96, %94
  br label %649

98:                                               ; preds = %149, %110, %66, %63
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %13, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %14, align 4
  br label %648

102:                                              ; preds = %69
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %13, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %648

106:                                              ; preds = %72
  store i32 0, ptr %20, align 4
  br label %107

107:                                              ; preds = %106, %75
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  %108 = load i32, ptr %20, align 4
  switch i32 %108, label %646 [
    i32 0, label %109
  ]

109:                                              ; preds = %107
  br label %137

110:                                              ; preds = %68
  %111 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.5)
          to label %112 unwind label %98

112:                                              ; preds = %110
  br i1 %111, label %113, label %132

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store ptr null, ptr %21, align 8, !tbaa !5
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = invoke noundef ptr @_Z8parseObjPKcRSt6vectorI4MeshSaIS2_EEPS0_(ptr noundef %114, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %21)
          to label %116 unwind label %124

116:                                              ; preds = %113
  store ptr %115, ptr %9, align 8, !tbaa !5
  %117 = load ptr, ptr %9, align 8, !tbaa !5
  %118 = icmp ne ptr %117, null
  br i1 %118, label %128, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr @stderr, align 8, !tbaa !5
  %121 = load ptr, ptr %6, align 8, !tbaa !5
  %122 = load ptr, ptr %21, align 8, !tbaa !5
  %123 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %120, ptr noundef @.str.4, ptr noundef %121, ptr noundef %122) #7
  store i32 2, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %129

124:                                              ; preds = %113
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %13, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %648

128:                                              ; preds = %116
  store i32 0, ptr %20, align 4
  br label %129

129:                                              ; preds = %128, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %130 = load i32, ptr %20, align 4
  switch i32 %130, label %646 [
    i32 0, label %131
  ]

131:                                              ; preds = %129
  br label %136

132:                                              ; preds = %112
  %133 = load ptr, ptr @stderr, align 8, !tbaa !5
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %133, ptr noundef @.str.6, ptr noundef %134) #7
  store i32 2, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %646

136:                                              ; preds = %131
  br label %137

137:                                              ; preds = %136, %109
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.cgltf_data, ptr %138, i32 0, i32 14
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %149

142:                                              ; preds = %137
  %143 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 27
  %144 = load i8, ptr %143, align 8, !tbaa !17, !range !22, !noundef !23
  %145 = trunc i8 %144 to i1
  br i1 %145, label %146, label %149

146:                                              ; preds = %142
  %147 = load ptr, ptr @stderr, align 8, !tbaa !5
  %148 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %147, ptr noundef @.str.7) #7
  store i32 3, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %646

149:                                              ; preds = %142, %137
  %150 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.3)
          to label %151 unwind label %98

151:                                              ; preds = %149
  br i1 %150, label %152, label %154

152:                                              ; preds = %151
  %153 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 28
  store i8 1, ptr %153, align 1, !tbaa !24
  br label %154

154:                                              ; preds = %152, %151
  %155 = load ptr, ptr %9, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.cgltf_data, ptr %155, i32 0, i32 14
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %159, label %250

159:                                              ; preds = %154
  %160 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 29
  %161 = load i8, ptr %160, align 2, !tbaa !25, !range !22, !noundef !23
  %162 = trunc i8 %161 to i1
  br i1 %162, label %250, label %163

163:                                              ; preds = %159
  %164 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 28
  %165 = load i8, ptr %164, align 1, !tbaa !24, !range !22, !noundef !23
  %166 = trunc i8 %165 to i1
  br i1 %166, label %250, label %167

167:                                              ; preds = %163
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store i64 0, ptr %22, align 8, !tbaa !26
  br label %168

168:                                              ; preds = %246, %167
  %169 = load i64, ptr %22, align 8, !tbaa !26
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.cgltf_data, ptr %170, i32 0, i32 14
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp ult i64 %169, %172
  br i1 %173, label %175, label %174

174:                                              ; preds = %168
  store i32 2, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %249

175:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.cgltf_data, ptr %176, i32 0, i32 13
  %178 = load ptr, ptr %177, align 8, !tbaa !27
  %179 = load i64, ptr %22, align 8, !tbaa !26
  %180 = getelementptr inbounds %struct.cgltf_image, ptr %178, i64 %179
  %181 = getelementptr inbounds %struct.cgltf_image, ptr %180, i32 0, i32 1
  %182 = load ptr, ptr %181, align 8, !tbaa !28
  store ptr %182, ptr %23, align 8, !tbaa !5
  %183 = load ptr, ptr %23, align 8, !tbaa !5
  %184 = icmp ne ptr %183, null
  br i1 %184, label %185, label %189

185:                                              ; preds = %175
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = call i32 @strncmp(ptr noundef %186, ptr noundef @.str.8, i64 noundef 5) #8
  %188 = icmp eq i32 %187, 0
  br i1 %188, label %189, label %190

189:                                              ; preds = %185, %175
  store i32 4, ptr %20, align 4
  br label %243

190:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store i64 0, ptr %24, align 8, !tbaa !26
  br label %191

191:                                              ; preds = %238, %190
  %192 = load i64, ptr %24, align 8, !tbaa !26
  %193 = load i64, ptr %22, align 8, !tbaa !26
  %194 = icmp ult i64 %192, %193
  br i1 %194, label %196, label %195

195:                                              ; preds = %191
  store i32 5, ptr %20, align 4
  br label %241

196:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %197 = load ptr, ptr %9, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.cgltf_data, ptr %197, i32 0, i32 13
  %199 = load ptr, ptr %198, align 8, !tbaa !27
  %200 = load i64, ptr %24, align 8, !tbaa !26
  %201 = getelementptr inbounds %struct.cgltf_image, ptr %199, i64 %200
  %202 = getelementptr inbounds %struct.cgltf_image, ptr %201, i32 0, i32 1
  %203 = load ptr, ptr %202, align 8, !tbaa !28
  store ptr %203, ptr %25, align 8, !tbaa !5
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = icmp ne ptr %204, null
  br i1 %205, label %206, label %210

206:                                              ; preds = %196
  %207 = load ptr, ptr %25, align 8, !tbaa !5
  %208 = call i32 @strncmp(ptr noundef %207, ptr noundef @.str.8, i64 noundef 5) #8
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %211

210:                                              ; preds = %206, %196
  store i32 7, ptr %20, align 4
  br label %235

211:                                              ; preds = %206
  %212 = load ptr, ptr %23, align 8, !tbaa !5
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = call i32 @strcmp(ptr noundef %212, ptr noundef %213) #8
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %234

216:                                              ; preds = %211
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %217)
          to label %219 unwind label %230

219:                                              ; preds = %216
  %220 = load ptr, ptr %25, align 8, !tbaa !5
  %221 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %220)
          to label %222 unwind label %230

222:                                              ; preds = %219
  %223 = call i32 @strcmp(ptr noundef %218, ptr noundef %221) #8
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %234

225:                                              ; preds = %222
  %226 = load ptr, ptr @stderr, align 8, !tbaa !5
  %227 = load ptr, ptr %23, align 8, !tbaa !5
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %226, ptr noundef @.str.9, ptr noundef %227, ptr noundef %228) #7
  store i32 5, ptr %20, align 4
  br label %235

230:                                              ; preds = %219, %216
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %13, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %648

234:                                              ; preds = %222, %211
  store i32 0, ptr %20, align 4
  br label %235

235:                                              ; preds = %234, %225, %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  %236 = load i32, ptr %20, align 4
  switch i32 %236, label %241 [
    i32 0, label %237
    i32 7, label %238
  ]

237:                                              ; preds = %235
  br label %238

238:                                              ; preds = %237, %235
  %239 = load i64, ptr %24, align 8, !tbaa !26
  %240 = add i64 %239, 1
  store i64 %240, ptr %24, align 8, !tbaa !26
  br label %191, !llvm.loop !30

241:                                              ; preds = %235, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %242

242:                                              ; preds = %241
  store i32 0, ptr %20, align 4
  br label %243

243:                                              ; preds = %242, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  %244 = load i32, ptr %20, align 4
  switch i32 %244, label %656 [
    i32 0, label %245
    i32 4, label %246
  ]

245:                                              ; preds = %243
  br label %246

246:                                              ; preds = %245, %243
  %247 = load i64, ptr %22, align 8, !tbaa !26
  %248 = add i64 %247, 1
  store i64 %248, ptr %22, align 8, !tbaa !26
  br label %168, !llvm.loop !32

249:                                              ; preds = %174
  br label %250

250:                                              ; preds = %249, %163, %159, %154
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !26
  %251 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext 123)
          to label %252 unwind label %266

252:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %253 = load ptr, ptr %9, align 8, !tbaa !5
  %254 = load ptr, ptr %6, align 8, !tbaa !5
  %255 = load ptr, ptr %7, align 8, !tbaa !5
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = invoke noundef i64 @_ZL7processP10cgltf_dataPKcS2_S2_RSt6vectorI4MeshSaIS4_EERS3_I9AnimationSaIS8_EERK8SettingsRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESL_SL_Rm(ptr noundef %253, ptr noundef %254, ptr noundef %255, ptr noundef %256, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(148) %3, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %258 unwind label %270

258:                                              ; preds = %252
  store i64 %257, ptr %30, align 8, !tbaa !26
  %259 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext 125)
          to label %260 unwind label %270

260:                                              ; preds = %258
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @cgltf_free(ptr noundef %261)
          to label %262 unwind label %270

262:                                              ; preds = %260
  %263 = load ptr, ptr %7, align 8, !tbaa !5
  %264 = icmp ne ptr %263, null
  br i1 %264, label %274, label %265

265:                                              ; preds = %262
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %643

266:                                              ; preds = %250
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %13, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %14, align 4
  br label %645

270:                                              ; preds = %454, %274, %260, %258, %252
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %13, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %14, align 4
  br label %644

274:                                              ; preds = %262
  %275 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.2)
          to label %276 unwind label %270

276:                                              ; preds = %274
  br i1 %275, label %277, label %454

277:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %278, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %279 unwind label %322

279:                                              ; preds = %277
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  %280 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  %281 = sub i64 %280, 5
  %282 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %31, i64 noundef %281, i64 noundef 5, ptr noundef @.str.10)
          to label %283 unwind label %326

283:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #7
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef %284, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %285 unwind label %330

285:                                              ; preds = %283
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  %286 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  %287 = sub i64 %286, 5
  %288 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %33, i64 noundef %287, i64 noundef 5, ptr noundef @.str.11)
          to label %289 unwind label %334

289:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %290 = load ptr, ptr %7, align 8, !tbaa !5
  %291 = invoke noalias ptr @fopen(ptr noundef %290, ptr noundef @.str.12)
          to label %292 unwind label %338

292:                                              ; preds = %289
  store ptr %291, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %293 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  %294 = invoke noalias ptr @fopen(ptr noundef %293, ptr noundef @.str.12)
          to label %295 unwind label %342

295:                                              ; preds = %292
  store ptr %294, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %296 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %297 = load i8, ptr %296, align 1, !tbaa !33, !range !22, !noundef !23
  %298 = trunc i8 %297 to i1
  br i1 %298, label %299, label %303

299:                                              ; preds = %295
  %300 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  %301 = invoke noalias ptr @fopen(ptr noundef %300, ptr noundef @.str.12)
          to label %302 unwind label %346

302:                                              ; preds = %299
  br label %304

303:                                              ; preds = %295
  br label %304

304:                                              ; preds = %303, %302
  %305 = phi ptr [ %301, %302 ], [ null, %303 ]
  store ptr %305, ptr %37, align 8, !tbaa !5
  %306 = load ptr, ptr %35, align 8, !tbaa !5
  %307 = icmp ne ptr %306, null
  br i1 %307, label %308, label %318

308:                                              ; preds = %304
  %309 = load ptr, ptr %36, align 8, !tbaa !5
  %310 = icmp ne ptr %309, null
  br i1 %310, label %311, label %318

311:                                              ; preds = %308
  %312 = load ptr, ptr %37, align 8, !tbaa !5
  %313 = icmp ne ptr %312, null
  br i1 %313, label %350, label %314

314:                                              ; preds = %311
  %315 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %316 = load i8, ptr %315, align 1, !tbaa !33, !range !22, !noundef !23
  %317 = trunc i8 %316 to i1
  br i1 %317, label %318, label %350

318:                                              ; preds = %314, %308, %304
  %319 = load ptr, ptr @stderr, align 8, !tbaa !5
  %320 = load ptr, ptr %7, align 8, !tbaa !5
  %321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %319, ptr noundef @.str.13, ptr noundef %320) #7
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %442

322:                                              ; preds = %277
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %13, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %453

326:                                              ; preds = %279
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %13, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %14, align 4
  br label %452

330:                                              ; preds = %283
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %13, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  br label %451

334:                                              ; preds = %285
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %13, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %14, align 4
  br label %450

338:                                              ; preds = %289
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %13, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %14, align 4
  br label %449

342:                                              ; preds = %292
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %13, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %14, align 4
  br label %448

346:                                              ; preds = %299
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %13, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %14, align 4
  br label %447

350:                                              ; preds = %314, %311
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  %351 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  %352 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %351)
          to label %353 unwind label %393

353:                                              ; preds = %350
  %354 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %355 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %356 = load i8, ptr %355, align 1, !tbaa !33, !range !22, !noundef !23
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %362

358:                                              ; preds = %353
  %359 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  %360 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %359)
          to label %361 unwind label %393

361:                                              ; preds = %358
  br label %363

362:                                              ; preds = %353
  br label %363

363:                                              ; preds = %362, %361
  %364 = phi ptr [ %360, %361 ], [ null, %362 ]
  %365 = load i64, ptr %29, align 8, !tbaa !26
  %366 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 38
  %367 = load i8, ptr %366, align 1, !tbaa !34, !range !22, !noundef !23
  %368 = trunc i8 %367 to i1
  invoke void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef %352, i64 noundef %354, ptr noundef %364, i64 noundef %365, i1 noundef zeroext %368)
          to label %369 unwind label %393

369:                                              ; preds = %363
  %370 = load i64, ptr %30, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %371 unwind label %397

371:                                              ; preds = %369
  %372 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef %370, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %373 unwind label %401

373:                                              ; preds = %371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  %374 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %375 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %376 = load ptr, ptr %35, align 8, !tbaa !5
  %377 = invoke i64 @fwrite(ptr noundef %374, i64 noundef %375, i64 noundef 1, ptr noundef %376)
          to label %378 unwind label %406

378:                                              ; preds = %373
  %379 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %380 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %381 = load ptr, ptr %36, align 8, !tbaa !5
  %382 = invoke i64 @fwrite(ptr noundef %379, i64 noundef %380, i64 noundef 1, ptr noundef %381)
          to label %383 unwind label %406

383:                                              ; preds = %378
  %384 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %385 = load i8, ptr %384, align 1, !tbaa !33, !range !22, !noundef !23
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %410

387:                                              ; preds = %383
  %388 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  %389 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  %390 = load ptr, ptr %37, align 8, !tbaa !5
  %391 = invoke i64 @fwrite(ptr noundef %388, i64 noundef %389, i64 noundef 1, ptr noundef %390)
          to label %392 unwind label %406

392:                                              ; preds = %387
  br label %410

393:                                              ; preds = %363, %358, %350
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %13, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %14, align 4
  br label %446

397:                                              ; preds = %369
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %13, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %14, align 4
  br label %405

401:                                              ; preds = %371
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %13, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %405

405:                                              ; preds = %401, %397
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %445

406:                                              ; preds = %387, %378, %373
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %13, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %14, align 4
  br label %445

410:                                              ; preds = %392, %383
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 0, ptr %40, align 4, !tbaa !35
  %411 = load ptr, ptr %35, align 8, !tbaa !5
  %412 = invoke i32 @fclose(ptr noundef %411)
          to label %413 unwind label %429

413:                                              ; preds = %410
  %414 = load i32, ptr %40, align 4, !tbaa !35
  %415 = or i32 %414, %412
  store i32 %415, ptr %40, align 4, !tbaa !35
  %416 = load ptr, ptr %36, align 8, !tbaa !5
  %417 = invoke i32 @fclose(ptr noundef %416)
          to label %418 unwind label %429

418:                                              ; preds = %413
  %419 = load i32, ptr %40, align 4, !tbaa !35
  %420 = or i32 %419, %417
  store i32 %420, ptr %40, align 4, !tbaa !35
  %421 = load ptr, ptr %37, align 8, !tbaa !5
  %422 = icmp ne ptr %421, null
  br i1 %422, label %423, label %433

423:                                              ; preds = %418
  %424 = load ptr, ptr %37, align 8, !tbaa !5
  %425 = invoke i32 @fclose(ptr noundef %424)
          to label %426 unwind label %429

426:                                              ; preds = %423
  %427 = load i32, ptr %40, align 4, !tbaa !35
  %428 = or i32 %427, %425
  store i32 %428, ptr %40, align 4, !tbaa !35
  br label %433

429:                                              ; preds = %423, %413, %410
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %13, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %445

433:                                              ; preds = %426, %418
  %434 = load i32, ptr %40, align 4, !tbaa !35
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %436, label %440

436:                                              ; preds = %433
  %437 = load ptr, ptr @stderr, align 8, !tbaa !5
  %438 = load ptr, ptr %7, align 8, !tbaa !5
  %439 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %437, ptr noundef @.str.13, ptr noundef %438) #7
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %441

440:                                              ; preds = %433
  store i32 0, ptr %20, align 4
  br label %441

441:                                              ; preds = %440, %436
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %442

442:                                              ; preds = %441, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  %443 = load i32, ptr %20, align 4
  switch i32 %443, label %643 [
    i32 0, label %444
  ]

444:                                              ; preds = %442
  br label %642

445:                                              ; preds = %429, %406, %405
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %446

446:                                              ; preds = %445, %393
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  br label %447

447:                                              ; preds = %446, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %448

448:                                              ; preds = %447, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %449

449:                                              ; preds = %448, %338
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %450

450:                                              ; preds = %449, %334
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %451

451:                                              ; preds = %450, %330
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #7
  br label %452

452:                                              ; preds = %451, %326
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %453

453:                                              ; preds = %452, %322
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %644

454:                                              ; preds = %276
  %455 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.3)
          to label %456 unwind label %270

456:                                              ; preds = %454
  br i1 %455, label %457, label %637

457:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  %458 = load ptr, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef %458, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %459 unwind label %490

459:                                              ; preds = %457
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  %460 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  %461 = sub i64 %460, 4
  %462 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %41, i64 noundef %461, i64 noundef 4, ptr noundef @.str.11)
          to label %463 unwind label %494

463:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %464 = load ptr, ptr %7, align 8, !tbaa !5
  %465 = invoke noalias ptr @fopen(ptr noundef %464, ptr noundef @.str.12)
          to label %466 unwind label %498

466:                                              ; preds = %463
  store ptr %465, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %467 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %468 = load i8, ptr %467, align 1, !tbaa !33, !range !22, !noundef !23
  %469 = trunc i8 %468 to i1
  br i1 %469, label %470, label %474

470:                                              ; preds = %466
  %471 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  %472 = invoke noalias ptr @fopen(ptr noundef %471, ptr noundef @.str.12)
          to label %473 unwind label %502

473:                                              ; preds = %470
  br label %475

474:                                              ; preds = %466
  br label %475

475:                                              ; preds = %474, %473
  %476 = phi ptr [ %472, %473 ], [ null, %474 ]
  store ptr %476, ptr %44, align 8, !tbaa !5
  %477 = load ptr, ptr %43, align 8, !tbaa !5
  %478 = icmp ne ptr %477, null
  br i1 %478, label %479, label %486

479:                                              ; preds = %475
  %480 = load ptr, ptr %44, align 8, !tbaa !5
  %481 = icmp ne ptr %480, null
  br i1 %481, label %506, label %482

482:                                              ; preds = %479
  %483 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %484 = load i8, ptr %483, align 1, !tbaa !33, !range !22, !noundef !23
  %485 = trunc i8 %484 to i1
  br i1 %485, label %486, label %506

486:                                              ; preds = %482, %475
  %487 = load ptr, ptr @stderr, align 8, !tbaa !5
  %488 = load ptr, ptr %7, align 8, !tbaa !5
  %489 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %487, ptr noundef @.str.13, ptr noundef %488) #7
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %628

490:                                              ; preds = %457
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %13, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  br label %636

494:                                              ; preds = %459
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %13, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %14, align 4
  br label %635

498:                                              ; preds = %463
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %13, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %14, align 4
  br label %634

502:                                              ; preds = %470
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %13, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %14, align 4
  br label %633

506:                                              ; preds = %482, %479
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  %507 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %508 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %509 = load i8, ptr %508, align 1, !tbaa !33, !range !22, !noundef !23
  %510 = trunc i8 %509 to i1
  br i1 %510, label %511, label %515

511:                                              ; preds = %506
  %512 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  %513 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %512)
          to label %514 unwind label %533

514:                                              ; preds = %511
  br label %516

515:                                              ; preds = %506
  br label %516

516:                                              ; preds = %515, %514
  %517 = phi ptr [ %513, %514 ], [ null, %515 ]
  %518 = load i64, ptr %29, align 8, !tbaa !26
  %519 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 38
  %520 = load i8, ptr %519, align 1, !tbaa !34, !range !22, !noundef !23
  %521 = trunc i8 %520 to i1
  invoke void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef null, i64 noundef %507, ptr noundef %517, i64 noundef %518, i1 noundef zeroext %521)
          to label %522 unwind label %533

522:                                              ; preds = %516
  %523 = load i64, ptr %30, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, ptr noundef @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %524 unwind label %537

524:                                              ; preds = %522
  %525 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef %523, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %526 unwind label %541

526:                                              ; preds = %524
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %527

527:                                              ; preds = %532, %526
  %528 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %529 = urem i64 %528, 4
  %530 = icmp ne i64 %529, 0
  br i1 %530, label %531, label %550

531:                                              ; preds = %527
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext 32)
          to label %532 unwind label %546

532:                                              ; preds = %531
  br label %527, !llvm.loop !36

533:                                              ; preds = %516, %511
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %13, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %14, align 4
  br label %632

537:                                              ; preds = %522
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %13, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %14, align 4
  br label %545

541:                                              ; preds = %524
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %13, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %545

545:                                              ; preds = %541, %537
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #7
  br label %631

546:                                              ; preds = %595, %586, %584, %580, %575, %573, %569, %561, %559, %557, %555, %531
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %13, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %14, align 4
  br label %631

550:                                              ; preds = %527
  br label %551

551:                                              ; preds = %556, %550
  %552 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %553 = urem i64 %552, 4
  %554 = icmp ne i64 %553, 0
  br i1 %554, label %555, label %557

555:                                              ; preds = %551
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %27, i8 noundef signext 0)
          to label %556 unwind label %546

556:                                              ; preds = %555
  br label %551, !llvm.loop !37

557:                                              ; preds = %551
  %558 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %558, i32 noundef 1179937895)
          to label %559 unwind label %546

559:                                              ; preds = %557
  %560 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %560, i32 noundef 2)
          to label %561 unwind label %546

561:                                              ; preds = %559
  %562 = load ptr, ptr %43, align 8, !tbaa !5
  %563 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %564 = add i64 20, %563
  %565 = add i64 %564, 8
  %566 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %567 = add i64 %565, %566
  %568 = trunc i64 %567 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %562, i32 noundef %568)
          to label %569 unwind label %546

569:                                              ; preds = %561
  %570 = load ptr, ptr %43, align 8, !tbaa !5
  %571 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %572 = trunc i64 %571 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %570, i32 noundef %572)
          to label %573 unwind label %546

573:                                              ; preds = %569
  %574 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %574, i32 noundef 1313821514)
          to label %575 unwind label %546

575:                                              ; preds = %573
  %576 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %577 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  %578 = load ptr, ptr %43, align 8, !tbaa !5
  %579 = invoke i64 @fwrite(ptr noundef %576, i64 noundef %577, i64 noundef 1, ptr noundef %578)
          to label %580 unwind label %546

580:                                              ; preds = %575
  %581 = load ptr, ptr %43, align 8, !tbaa !5
  %582 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %583 = trunc i64 %582 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %581, i32 noundef %583)
          to label %584 unwind label %546

584:                                              ; preds = %580
  %585 = load ptr, ptr %43, align 8, !tbaa !5
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef %585, i32 noundef 5130562)
          to label %586 unwind label %546

586:                                              ; preds = %584
  %587 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %588 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  %589 = load ptr, ptr %43, align 8, !tbaa !5
  %590 = invoke i64 @fwrite(ptr noundef %587, i64 noundef %588, i64 noundef 1, ptr noundef %589)
          to label %591 unwind label %546

591:                                              ; preds = %586
  %592 = getelementptr inbounds %struct.Settings, ptr %3, i32 0, i32 40
  %593 = load i8, ptr %592, align 1, !tbaa !33, !range !22, !noundef !23
  %594 = trunc i8 %593 to i1
  br i1 %594, label %595, label %601

595:                                              ; preds = %591
  %596 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  %597 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  %598 = load ptr, ptr %44, align 8, !tbaa !5
  %599 = invoke i64 @fwrite(ptr noundef %596, i64 noundef %597, i64 noundef 1, ptr noundef %598)
          to label %600 unwind label %546

600:                                              ; preds = %595
  br label %601

601:                                              ; preds = %600, %591
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  store i32 0, ptr %47, align 4, !tbaa !35
  %602 = load ptr, ptr %43, align 8, !tbaa !5
  %603 = invoke i32 @fclose(ptr noundef %602)
          to label %604 unwind label %615

604:                                              ; preds = %601
  %605 = load i32, ptr %47, align 4, !tbaa !35
  %606 = or i32 %605, %603
  store i32 %606, ptr %47, align 4, !tbaa !35
  %607 = load ptr, ptr %44, align 8, !tbaa !5
  %608 = icmp ne ptr %607, null
  br i1 %608, label %609, label %619

609:                                              ; preds = %604
  %610 = load ptr, ptr %44, align 8, !tbaa !5
  %611 = invoke i32 @fclose(ptr noundef %610)
          to label %612 unwind label %615

612:                                              ; preds = %609
  %613 = load i32, ptr %47, align 4, !tbaa !35
  %614 = or i32 %613, %611
  store i32 %614, ptr %47, align 4, !tbaa !35
  br label %619

615:                                              ; preds = %609, %601
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %13, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %631

619:                                              ; preds = %612, %604
  %620 = load i32, ptr %47, align 4, !tbaa !35
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %622, label %626

622:                                              ; preds = %619
  %623 = load ptr, ptr @stderr, align 8, !tbaa !5
  %624 = load ptr, ptr %7, align 8, !tbaa !5
  %625 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %623, ptr noundef @.str.13, ptr noundef %624) #7
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %627

626:                                              ; preds = %619
  store i32 0, ptr %20, align 4
  br label %627

627:                                              ; preds = %626, %622
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %628

628:                                              ; preds = %627, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  %629 = load i32, ptr %20, align 4
  switch i32 %629, label %643 [
    i32 0, label %630
  ]

630:                                              ; preds = %628
  br label %641

631:                                              ; preds = %615, %546, %545
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #7
  br label %632

632:                                              ; preds = %631, %533
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  br label %633

633:                                              ; preds = %632, %502
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  br label %634

634:                                              ; preds = %633, %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %635

635:                                              ; preds = %634, %494
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %636

636:                                              ; preds = %635, %490
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  br label %644

637:                                              ; preds = %456
  %638 = load ptr, ptr @stderr, align 8, !tbaa !5
  %639 = load ptr, ptr %7, align 8, !tbaa !5
  %640 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %638, ptr noundef @.str.15, ptr noundef %639) #7
  store i32 4, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %643

641:                                              ; preds = %630
  br label %642

642:                                              ; preds = %641, %444
  store i32 0, ptr %5, align 4
  store i32 1, ptr %20, align 4
  br label %643

643:                                              ; preds = %642, %637, %628, %442, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %646

644:                                              ; preds = %636, %453, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %645

645:                                              ; preds = %644, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #7
  br label %648

646:                                              ; preds = %643, %146, %132, %129, %107
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  %647 = load i32, ptr %5, align 4
  ret i32 %647

648:                                              ; preds = %645, %230, %124, %102, %98
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %649

649:                                              ; preds = %648, %97, %84
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %650

650:                                              ; preds = %649, %80
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  br label %651

651:                                              ; preds = %650
  %652 = load ptr, ptr %13, align 8
  %653 = load i32, ptr %14, align 4
  %654 = insertvalue { ptr, i32 } poison, ptr %652, 0
  %655 = insertvalue { ptr, i32 } %654, i32 %653, 1
  resume { ptr, i32 } %655

656:                                              ; preds = %243
  unreachable
}

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

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

declare void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4

declare noundef ptr @_Z9parseGltfPKcRSt6vectorI4MeshSaIS2_EERS1_I9AnimationSaIS6_EEPS0_(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #3

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

declare noundef ptr @_Z8parseObjPKcRSt6vectorI4MeshSaIS2_EEPS0_(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL11getBaseNamePKc(ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL7processP10cgltf_dataPKcS2_S2_RSt6vectorI4MeshSaIS4_EERS3_I9AnimationSaIS8_EERK8SettingsRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESL_SL_Rm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #2

declare void @cgltf_free(ptr noundef) #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i1 noundef zeroext) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #2

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

declare i64 @fwrite(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3

declare i32 @fclose(ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8writeU32P8_IO_FILEj(ptr noundef, i32 noundef) #2

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { 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, !14, i64 176}
!10 = !{!"_ZTS10cgltf_data", !11, i64 0, !6, i64 8, !12, i64 16, !6, i64 88, !14, i64 96, !6, i64 104, !14, i64 112, !6, i64 120, !14, i64 128, !6, i64 136, !14, i64 144, !6, i64 152, !14, i64 160, !6, i64 168, !14, i64 176, !6, i64 184, !14, i64 192, !6, i64 200, !14, i64 208, !6, i64 216, !14, i64 224, !6, i64 232, !14, i64 240, !6, i64 248, !14, i64 256, !6, i64 264, !14, i64 272, !6, i64 280, !14, i64 288, !6, i64 296, !6, i64 304, !14, i64 312, !6, i64 320, !14, i64 328, !13, i64 336, !14, i64 360, !6, i64 368, !6, i64 376, !14, i64 384, !6, i64 392, !14, i64 400, !6, i64 408, !14, i64 416, !6, i64 424, !14, i64 432, !15, i64 440, !16, i64 464}
!11 = !{!"_ZTS15cgltf_file_type", !7, i64 0}
!12 = !{!"_ZTS11cgltf_asset", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !14, i64 56, !6, i64 64}
!13 = !{!"_ZTS12cgltf_extras", !14, i64 0, !14, i64 8, !6, i64 16}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTS20cgltf_memory_options", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTS18cgltf_file_options", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!18, !20, i64 64}
!18 = !{!"_ZTS8Settings", !19, i64 0, !19, i64 4, !19, i64 8, !19, i64 12, !20, i64 16, !20, i64 17, !20, i64 18, !20, i64 19, !19, i64 20, !19, i64 24, !19, i64 28, !19, i64 32, !20, i64 36, !20, i64 37, !20, i64 38, !20, i64 39, !20, i64 40, !20, i64 41, !20, i64 42, !20, i64 43, !21, i64 44, !21, i64 48, !20, i64 52, !20, i64 53, !20, i64 54, !21, i64 56, !19, i64 60, !20, i64 64, !20, i64 65, !20, i64 66, !20, i64 67, !20, i64 68, !7, i64 72, !7, i64 88, !7, i64 104, !7, i64 120, !19, i64 136, !20, i64 140, !20, i64 141, !20, i64 142, !20, i64 143, !19, i64 144}
!19 = !{!"int", !7, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!18, !20, i64 65}
!25 = !{!18, !20, i64 66}
!26 = !{!14, !14, i64 0}
!27 = !{!10, !6, i64 168}
!28 = !{!29, !6, i64 8}
!29 = !{!"_ZTS11cgltf_image", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !14, i64 56, !6, i64 64}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = !{!18, !20, i64 143}
!34 = !{!18, !20, i64 141}
!35 = !{!19, !19, i64 0}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}


; 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"

%struct.Settings = type { i32, i32, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, float, i8, i8, i8, float, i32, i8, i8, i8, i8, i8, [4 x float], [4 x i32], [4 x i32], [4 x i32], i32, i8, i8, i8, i8, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl" }
%"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl" = type { %"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Mesh, std::allocator<Mesh>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl" }
%"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl" = type { %"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Animation, std::allocator<Animation>>::_Vector_impl_data" = type { ptr, ptr, 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.std::allocator" = type { i8 }
%struct.cgltf_image = type { ptr, ptr, ptr, ptr, %struct.cgltf_extras, i64, ptr }
%struct.cgltf_extras = type { i64, i64, ptr }

@.str.1 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@stderr = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [61 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 5) i32 @_Z8gltfpackPKcS0_S0_8Settings(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef byval(%struct.Settings) align 8 %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca %"class.std::vector.3", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca i64, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", 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 %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  invoke void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef %0)
          to label %26 unwind label %40

26:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %28, label %27

27:                                               ; preds = %26
  invoke void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull %1)
          to label %.critedge unwind label %42

28:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.1, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %29 unwind label %44

29:                                               ; preds = %28
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  br label %.critedge

.critedge:                                        ; preds = %27, %29
  %30 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.2)
  br i1 %30, label %33, label %31

31:                                               ; preds = %.critedge
  %32 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.3)
  br i1 %32, label %33, label %48

33:                                               ; preds = %31, %.critedge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  store ptr null, ptr %10, align 8, !tbaa !5
  %34 = invoke noundef ptr @_Z9parseGltfPKcRSt6vectorI4MeshSaIS2_EERS1_I9AnimationSaIS6_EEPS0_(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull %10)
          to label %35 unwind label %46

35:                                               ; preds = %33
  %36 = load ptr, ptr %10, align 8, !tbaa !5
  %.not145 = icmp eq ptr %36, null
  br i1 %.not145, label %.critedge177, label %37

37:                                               ; preds = %35
  %38 = load ptr, ptr @stderr, align 8, !tbaa !5
  %39 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %38, ptr noundef nonnull @.str.4, ptr noundef %0, ptr noundef nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %327

40:                                               ; preds = %4
  %41 = landingpad { ptr, i32 }
          cleanup
  br label %330

42:                                               ; preds = %27
  %43 = landingpad { ptr, i32 }
          cleanup
  br label %329

44:                                               ; preds = %28
  %45 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  br label %329

46:                                               ; preds = %33
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %328

48:                                               ; preds = %31
  %49 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.5)
  br i1 %49, label %50, label %59

50:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store ptr null, ptr %11, align 8, !tbaa !5
  %51 = invoke noundef ptr @_Z8parseObjPKcRSt6vectorI4MeshSaIS2_EEPS0_(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull %11)
          to label %52 unwind label %57

52:                                               ; preds = %50
  %.not144.not = icmp eq ptr %51, null
  br i1 %.not144.not, label %53, label %.critedge179

53:                                               ; preds = %52
  %54 = load ptr, ptr @stderr, align 8, !tbaa !5
  %55 = load ptr, ptr %11, align 8, !tbaa !5
  %56 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %54, ptr noundef nonnull @.str.4, ptr noundef %0, ptr noundef %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %327

57:                                               ; preds = %50
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %328

59:                                               ; preds = %48
  %60 = load ptr, ptr @stderr, align 8, !tbaa !5
  %61 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %60, ptr noundef nonnull @.str.6, ptr noundef %0) #8
  br label %327

.critedge177:                                     ; preds = %35
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %62

.critedge179:                                     ; preds = %52
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %62

62:                                               ; preds = %.critedge179, %.critedge177
  %.097 = phi ptr [ %34, %.critedge177 ], [ %51, %.critedge179 ]
  %63 = getelementptr inbounds i8, ptr %.097, i64 176
  %64 = load i64, ptr %63, align 8, !tbaa !9
  %.not146 = icmp eq i64 %64, 0
  br i1 %.not146, label %72, label %65

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %3, i64 64
  %67 = load i8, ptr %66, align 8, !tbaa !17, !range !22, !noundef !23
  %68 = trunc nuw i8 %67 to i1
  br i1 %68, label %69, label %72

69:                                               ; preds = %65
  %70 = load ptr, ptr @stderr, align 8, !tbaa !5
  %71 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %70, ptr noundef nonnull @.str.7) #8
  br label %327

72:                                               ; preds = %65, %62
  %73 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.3)
  br i1 %73, label %74, label %76

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %3, i64 65
  store i8 1, ptr %75, align 1, !tbaa !24
  br label %76

76:                                               ; preds = %74, %72
  %77 = load i64, ptr %63, align 8, !tbaa !9
  %.not147 = icmp eq i64 %77, 0
  br i1 %.not147, label %.loopexit203, label %78

78:                                               ; preds = %76
  %79 = getelementptr inbounds i8, ptr %3, i64 66
  %80 = load i8, ptr %79, align 2, !tbaa !25, !range !22, !noundef !23
  %81 = trunc nuw i8 %80 to i1
  br i1 %81, label %.loopexit203, label %82

82:                                               ; preds = %78
  %83 = getelementptr inbounds i8, ptr %3, i64 65
  %84 = load i8, ptr %83, align 1, !tbaa !24, !range !22, !noundef !23
  %85 = trunc nuw i8 %84 to i1
  br i1 %85, label %.loopexit203, label %.lr.ph208

.lr.ph208:                                        ; preds = %82
  %86 = getelementptr inbounds i8, ptr %.097, i64 168
  br label %87

87:                                               ; preds = %.lr.ph208, %.loopexit201
  %.0134206 = phi i64 [ 0, %.lr.ph208 ], [ %117, %.loopexit201 ]
  %88 = load ptr, ptr %86, align 8, !tbaa !26
  %89 = getelementptr inbounds %struct.cgltf_image, ptr %88, i64 %.0134206, i32 1
  %90 = load ptr, ptr %89, align 8, !tbaa !27
  %.not148 = icmp eq ptr %90, null
  br i1 %.not148, label %.loopexit201, label %91

91:                                               ; preds = %87
  %92 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %90, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 5) #9
  %93 = icmp ne i32 %92, 0
  %94 = icmp ne i64 %.0134206, 0
  %or.cond209 = and i1 %93, %94
  br i1 %or.cond209, label %.lr.ph, label %.loopexit201

.lr.ph:                                           ; preds = %91, %115
  %.0133205 = phi i64 [ %116, %115 ], [ 0, %91 ]
  %95 = load ptr, ptr %86, align 8, !tbaa !26
  %96 = getelementptr inbounds %struct.cgltf_image, ptr %95, i64 %.0133205, i32 1
  %97 = load ptr, ptr %96, align 8, !tbaa !27
  %.not149 = icmp eq ptr %97, null
  br i1 %.not149, label %115, label %98

98:                                               ; preds = %.lr.ph
  %99 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %97, ptr noundef nonnull dereferenceable(1) @.str.8, i64 noundef 5) #9
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %115, label %101

101:                                              ; preds = %98
  %102 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %90, ptr noundef nonnull dereferenceable(1) %97) #9
  %.not150 = icmp eq i32 %102, 0
  br i1 %.not150, label %115, label %103

103:                                              ; preds = %101
  %104 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef nonnull %90)
          to label %105 unwind label %110

105:                                              ; preds = %103
  %106 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef nonnull %97)
          to label %107 unwind label %110

107:                                              ; preds = %105
  %108 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %104, ptr noundef nonnull dereferenceable(1) %106) #9
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %112, label %115

110:                                              ; preds = %105, %103
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %328

112:                                              ; preds = %107
  %113 = load ptr, ptr @stderr, align 8, !tbaa !5
  %114 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %113, ptr noundef nonnull @.str.9, ptr noundef nonnull %90, ptr noundef nonnull %97) #8
  br label %.loopexit201

115:                                              ; preds = %98, %.lr.ph, %107, %101
  %116 = add nuw i64 %.0133205, 1
  %exitcond.not = icmp eq i64 %116, %.0134206
  br i1 %exitcond.not, label %.loopexit201, label %.lr.ph, !llvm.loop !29

.loopexit201:                                     ; preds = %115, %112, %87, %91
  %117 = add nuw i64 %.0134206, 1
  %118 = load i64, ptr %63, align 8, !tbaa !9
  %119 = icmp ult i64 %117, %118
  br i1 %119, label %87, label %.loopexit203, !llvm.loop !31

.loopexit203:                                     ; preds = %.loopexit201, %82, %78, %76
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  store i64 0, ptr %15, align 8, !tbaa !32
  %120 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 noundef signext 123)
          to label %121 unwind label %127

121:                                              ; preds = %.loopexit203
  %122 = invoke noundef i64 @_ZL7processP10cgltf_dataPKcS2_S2_RSt6vectorI4MeshSaIS4_EERS3_I9AnimationSaIS8_EERK8SettingsRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESL_SL_Rm(ptr noundef nonnull %.097, ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(148) %3, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %123 unwind label %129

123:                                              ; preds = %121
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 noundef signext 125)
          to label %125 unwind label %129

125:                                              ; preds = %123
  invoke void @cgltf_free(ptr noundef nonnull %.097)
          to label %126 unwind label %129

126:                                              ; preds = %125
  br i1 %.not, label %325, label %131

127:                                              ; preds = %.loopexit203
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %326

129:                                              ; preds = %125, %123, %121
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %326

131:                                              ; preds = %126
  %132 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.2)
  br i1 %132, label %133, label %226

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull %1, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %134 unwind label %161

134:                                              ; preds = %133
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  %135 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  %136 = add i64 %135, -5
  %137 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %16, i64 noundef %136, i64 noundef 5, ptr noundef nonnull @.str.10)
          to label %138 unwind label %163

138:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull %1, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %139 unwind label %165

139:                                              ; preds = %138
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  %140 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  %141 = add i64 %140, -5
  %142 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef %141, i64 noundef 5, ptr noundef nonnull @.str.11)
          to label %143 unwind label %167

143:                                              ; preds = %139
  %144 = call noalias ptr @fopen(ptr noundef nonnull %1, ptr noundef nonnull @.str.12)
  %145 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  %146 = call noalias ptr @fopen(ptr noundef %145, ptr noundef nonnull @.str.12)
  %147 = getelementptr inbounds i8, ptr %3, i64 143
  %148 = load i8, ptr %147, align 1, !tbaa !33, !range !22, !noundef !23
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %150, label %.thread182

150:                                              ; preds = %143
  %151 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  %152 = call noalias ptr @fopen(ptr noundef %151, ptr noundef nonnull @.str.12)
  %153 = icmp ne ptr %144, null
  %154 = icmp ne ptr %146, null
  %or.cond = and i1 %153, %154
  br i1 %or.cond, label %157, label %158

.thread182:                                       ; preds = %143
  %155 = icmp ne ptr %144, null
  %156 = icmp ne ptr %146, null
  %or.cond183 = and i1 %155, %156
  br i1 %or.cond183, label %.thread184.thread, label %158

157:                                              ; preds = %150
  %.not162 = icmp eq ptr %152, null
  br i1 %.not162, label %.thread184, label %.thread184.thread

.thread184:                                       ; preds = %157
  %.pre213 = load i8, ptr %147, align 1, !tbaa !33, !range !22
  %.pre214 = trunc nuw i8 %.pre213 to i1
  br i1 %.pre214, label %158, label %.thread184.thread

158:                                              ; preds = %.thread182, %.thread184, %150
  %159 = load ptr, ptr @stderr, align 8, !tbaa !5
  %160 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %159, ptr noundef nonnull @.str.13, ptr noundef nonnull %1) #8
  br label %220

161:                                              ; preds = %133
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  br label %225

163:                                              ; preds = %134
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %224

165:                                              ; preds = %138
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  br label %223

167:                                              ; preds = %139
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %222

.thread184.thread:                                ; preds = %.thread182, %.thread184, %157
  %.not162186 = phi i1 [ true, %.thread184 ], [ false, %157 ], [ true, %.thread182 ]
  %169 = phi ptr [ null, %.thread184 ], [ %152, %157 ], [ null, %.thread182 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  %170 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  %171 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %170)
          to label %172 unwind label %201

172:                                              ; preds = %.thread184.thread
  %173 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %174 = load i8, ptr %147, align 1, !tbaa !33, !range !22, !noundef !23
  %175 = trunc nuw i8 %174 to i1
  br i1 %175, label %176, label %179

176:                                              ; preds = %172
  %177 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  %178 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %177)
          to label %179 unwind label %201

179:                                              ; preds = %172, %176
  %180 = phi ptr [ %178, %176 ], [ null, %172 ]
  %181 = load i64, ptr %15, align 8, !tbaa !32
  %182 = getelementptr inbounds i8, ptr %3, i64 141
  %183 = load i8, ptr %182, align 1, !tbaa !34, !range !22, !noundef !23
  %184 = trunc nuw i8 %183 to i1
  invoke void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef %171, i64 noundef %173, ptr noundef %180, i64 noundef %181, i1 noundef zeroext %184)
          to label %185 unwind label %201

185:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %186 unwind label %203

186:                                              ; preds = %185
  %187 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %122, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %188 unwind label %205

188:                                              ; preds = %186
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  %189 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %190 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %191 = call i64 @fwrite(ptr noundef %189, i64 noundef %190, i64 noundef 1, ptr noundef nonnull %144)
  %192 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %193 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %194 = call i64 @fwrite(ptr noundef %192, i64 noundef %193, i64 noundef 1, ptr noundef nonnull %146)
  %195 = load i8, ptr %147, align 1, !tbaa !33, !range !22, !noundef !23
  %196 = trunc nuw i8 %195 to i1
  br i1 %196, label %197, label %208

197:                                              ; preds = %188
  %198 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %199 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %200 = call i64 @fwrite(ptr noundef %198, i64 noundef %199, i64 noundef 1, ptr noundef %169)
  br label %208

201:                                              ; preds = %179, %176, %.thread184.thread
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %221

203:                                              ; preds = %185
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %207

205:                                              ; preds = %186
  %206 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %207

207:                                              ; preds = %205, %203
  %.pn163 = phi { ptr, i32 } [ %206, %205 ], [ %204, %203 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %221

208:                                              ; preds = %197, %188
  %209 = call i32 @fclose(ptr noundef nonnull %144)
  %210 = call i32 @fclose(ptr noundef nonnull %146)
  %211 = or i32 %210, %209
  br i1 %.not162186, label %215, label %212

212:                                              ; preds = %208
  %213 = call i32 @fclose(ptr noundef nonnull %169)
  %214 = or i32 %213, %211
  br label %215

215:                                              ; preds = %212, %208
  %.098 = phi i32 [ %214, %212 ], [ %211, %208 ]
  %.not175 = icmp eq i32 %.098, 0
  br i1 %.not175, label %219, label %216

216:                                              ; preds = %215
  %217 = load ptr, ptr @stderr, align 8, !tbaa !5
  %218 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef nonnull @.str.13, ptr noundef nonnull %1) #8
  br label %219

219:                                              ; preds = %215, %216
  %.3 = phi i32 [ 4, %216 ], [ 2, %215 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %220

220:                                              ; preds = %219, %158
  %.4130 = phi i1 [ %.not175, %219 ], [ false, %158 ]
  %.4 = phi i32 [ %.3, %219 ], [ 4, %158 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br i1 %.4130, label %324, label %325

221:                                              ; preds = %207, %201
  %.pn163.pn = phi { ptr, i32 } [ %.pn163, %207 ], [ %202, %201 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %222

222:                                              ; preds = %221, %167
  %.pn163.pn.pn = phi { ptr, i32 } [ %.pn163.pn, %221 ], [ %168, %167 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %223

223:                                              ; preds = %222, %165
  %.pn163.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn, %222 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #7
  br label %224

224:                                              ; preds = %223, %163
  %.pn163.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn, %223 ], [ %164, %163 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %225

225:                                              ; preds = %224, %161
  %.pn163.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn, %224 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  br label %326

226:                                              ; preds = %131
  %227 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.3)
  br i1 %227, label %228, label %321

228:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull %1, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %229 unwind label %244

229:                                              ; preds = %228
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  %230 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  %231 = add i64 %230, -4
  %232 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef %231, i64 noundef 4, ptr noundef nonnull @.str.11)
          to label %233 unwind label %246

233:                                              ; preds = %229
  %234 = call noalias ptr @fopen(ptr noundef nonnull %1, ptr noundef nonnull @.str.12)
  %235 = getelementptr inbounds i8, ptr %3, i64 143
  %236 = load i8, ptr %235, align 1, !tbaa !33, !range !22, !noundef !23
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %.thread188

238:                                              ; preds = %233
  %239 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  %240 = call noalias ptr @fopen(ptr noundef %239, ptr noundef nonnull @.str.12)
  %.not151 = icmp eq ptr %234, null
  br i1 %.not151, label %.thread194, label %241

.thread188:                                       ; preds = %233
  %.not151189 = icmp eq ptr %234, null
  br i1 %.not151189, label %.thread194, label %.thread190.thread

241:                                              ; preds = %238
  %.not152 = icmp eq ptr %240, null
  br i1 %.not152, label %.thread190, label %.thread190.thread

.thread190:                                       ; preds = %241
  %.pre = load i8, ptr %235, align 1, !tbaa !33, !range !22
  %.pre215 = trunc nuw i8 %.pre to i1
  br i1 %.pre215, label %.thread194, label %.thread190.thread

.thread194:                                       ; preds = %238, %.thread190, %.thread188
  %242 = load ptr, ptr @stderr, align 8, !tbaa !5
  %243 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull @.str.13, ptr noundef nonnull %1) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %325

244:                                              ; preds = %228
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  br label %320

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

.thread190.thread:                                ; preds = %.thread188, %.thread190, %241
  %.not152192 = phi i1 [ true, %.thread190 ], [ false, %241 ], [ true, %.thread188 ]
  %248 = phi ptr [ null, %.thread190 ], [ %240, %241 ], [ null, %.thread188 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  %249 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %250 = load i8, ptr %235, align 1, !tbaa !33, !range !22, !noundef !23
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %255

252:                                              ; preds = %.thread190.thread
  %253 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  %254 = invoke noundef ptr @_ZL11getBaseNamePKc(ptr noundef %253)
          to label %255 unwind label %269

255:                                              ; preds = %.thread190.thread, %252
  %256 = phi ptr [ %254, %252 ], [ null, %.thread190.thread ]
  %257 = load i64, ptr %15, align 8, !tbaa !32
  %258 = getelementptr inbounds i8, ptr %3, i64 141
  %259 = load i8, ptr %258, align 1, !tbaa !34, !range !22, !noundef !23
  %260 = trunc nuw i8 %259 to i1
  invoke void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef null, i64 noundef %249, ptr noundef %256, i64 noundef %257, i1 noundef zeroext %260)
          to label %261 unwind label %269

261:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull @.str.14, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %262 unwind label %271

262:                                              ; preds = %261
  %263 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef %122, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %264 unwind label %273

264:                                              ; preds = %262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %265

265:                                              ; preds = %268, %264
  %266 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %267 = and i64 %266, 3
  %.not154 = icmp eq i64 %267, 0
  br i1 %.not154, label %.preheader, label %268

268:                                              ; preds = %265
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 noundef signext 32)
          to label %265 unwind label %.loopexit.split-lp.loopexit, !llvm.loop !35

269:                                              ; preds = %255, %252
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %318

271:                                              ; preds = %261
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %275

273:                                              ; preds = %262
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %275

275:                                              ; preds = %273, %271
  %.pn = phi { ptr, i32 } [ %274, %273 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %.loopexit.split-lp

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

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

.loopexit.split-lp.loopexit.split-lp:             ; preds = %297, %291, %290, %287, %281, %280, %279
  %lpad.loopexit.split-lp198 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.preheader:                                       ; preds = %265, %278
  %276 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %277 = and i64 %276, 3
  %.not155 = icmp eq i64 %277, 0
  br i1 %.not155, label %279, label %278

278:                                              ; preds = %.preheader
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 noundef signext 0)
          to label %.preheader unwind label %.loopexit, !llvm.loop !36

279:                                              ; preds = %.preheader
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef 1179937895)
          to label %280 unwind label %.loopexit.split-lp.loopexit.split-lp

280:                                              ; preds = %279
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef 2)
          to label %281 unwind label %.loopexit.split-lp.loopexit.split-lp

281:                                              ; preds = %280
  %282 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %283 = add i64 %282, 28
  %284 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %285 = add i64 %283, %284
  %286 = trunc i64 %285 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef %286)
          to label %287 unwind label %.loopexit.split-lp.loopexit.split-lp

287:                                              ; preds = %281
  %288 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %289 = trunc i64 %288 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef %289)
          to label %290 unwind label %.loopexit.split-lp.loopexit.split-lp

290:                                              ; preds = %287
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef 1313821514)
          to label %291 unwind label %.loopexit.split-lp.loopexit.split-lp

291:                                              ; preds = %290
  %292 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %293 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  %294 = call i64 @fwrite(ptr noundef %292, i64 noundef %293, i64 noundef 1, ptr noundef nonnull %234)
  %295 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %296 = trunc i64 %295 to i32
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef %296)
          to label %297 unwind label %.loopexit.split-lp.loopexit.split-lp

297:                                              ; preds = %291
  invoke void @_ZL8writeU32P8_IO_FILEj(ptr noundef nonnull %234, i32 noundef 5130562)
          to label %298 unwind label %.loopexit.split-lp.loopexit.split-lp

298:                                              ; preds = %297
  %299 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %300 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  %301 = call i64 @fwrite(ptr noundef %299, i64 noundef %300, i64 noundef 1, ptr noundef nonnull %234)
  %302 = load i8, ptr %235, align 1, !tbaa !33, !range !22, !noundef !23
  %303 = trunc nuw i8 %302 to i1
  br i1 %303, label %304, label %308

304:                                              ; preds = %298
  %305 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %306 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %307 = call i64 @fwrite(ptr noundef %305, i64 noundef %306, i64 noundef 1, ptr noundef %248)
  br label %308

308:                                              ; preds = %304, %298
  %309 = call i32 @fclose(ptr noundef nonnull %234)
  br i1 %.not152192, label %313, label %310

310:                                              ; preds = %308
  %311 = call i32 @fclose(ptr noundef nonnull %248)
  %312 = or i32 %311, %309
  br label %313

313:                                              ; preds = %310, %308
  %.0 = phi i32 [ %312, %310 ], [ %309, %308 ]
  %.not156 = icmp eq i32 %.0, 0
  br i1 %.not156, label %317, label %314

314:                                              ; preds = %313
  %315 = load ptr, ptr @stderr, align 8, !tbaa !5
  %316 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %315, ptr noundef nonnull @.str.13, ptr noundef nonnull %1) #8
  br label %317

317:                                              ; preds = %314, %313
  %.5 = phi i32 [ 4, %314 ], [ 2, %313 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br i1 %.not156, label %324, label %325

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %275
  %.pn157 = phi { ptr, i32 } [ %.pn, %275 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit197, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp198, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %318

318:                                              ; preds = %.loopexit.split-lp, %269
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %.loopexit.split-lp ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %319

319:                                              ; preds = %318, %246
  %.pn157.pn.pn = phi { ptr, i32 } [ %.pn157.pn, %318 ], [ %247, %246 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %320

320:                                              ; preds = %319, %244
  %.pn157.pn.pn.pn = phi { ptr, i32 } [ %.pn157.pn.pn, %319 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #7
  br label %326

321:                                              ; preds = %226
  %322 = load ptr, ptr @stderr, align 8, !tbaa !5
  %323 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %322, ptr noundef nonnull @.str.15, ptr noundef nonnull %1) #8
  br label %325

324:                                              ; preds = %317, %220
  br label %325

325:                                              ; preds = %.thread194, %126, %220, %317, %324, %321
  %.7 = phi i32 [ 0, %324 ], [ %.4, %220 ], [ %.5, %317 ], [ 4, %321 ], [ 0, %126 ], [ 4, %.thread194 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %327

326:                                              ; preds = %129, %225, %320, %127
  %.pn163.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %128, %127 ], [ %.pn163.pn.pn.pn.pn.pn, %225 ], [ %.pn157.pn.pn.pn, %320 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #7
  br label %328

327:                                              ; preds = %53, %37, %325, %69, %59
  %.8 = phi i32 [ 3, %69 ], [ %.7, %325 ], [ 2, %37 ], [ 2, %53 ], [ 2, %59 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  ret i32 %.8

328:                                              ; preds = %326, %110, %57, %46
  %.pn163.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn.pn.pn.pn, %326 ], [ %111, %110 ], [ %47, %46 ], [ %58, %57 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %329

329:                                              ; preds = %44, %328, %42
  %.pn163.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn.pn.pn.pn.pn, %328 ], [ %43, %42 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %330

330:                                              ; preds = %329, %40
  %.pn163.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn163.pn.pn.pn.pn.pn.pn.pn.pn.pn, %329 ], [ %41, %40 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  call void @_ZNSt6vectorI9AnimationSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt6vectorI4MeshSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn163.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

declare void @_Z12getExtensionB5cxx11PKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #4

declare noundef ptr @_Z9parseGltfPKcRSt6vectorI4MeshSaIS2_EERS1_I9AnimationSaIS6_EEPS0_(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #3

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

declare noundef ptr @_Z8parseObjPKcRSt6vectorI4MeshSaIS2_EEPS0_(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL11getBaseNamePKc(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL7processP10cgltf_dataPKcS2_S2_RSt6vectorI4MeshSaIS4_EERS3_I9AnimationSaIS8_EERK8SettingsRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESL_SL_Rm(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(148), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

declare void @cgltf_free(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13getBufferSpecB5cxx11PKcmS0_mb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i1 noundef zeroext) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

; Function Attrs: nofree nounwind
declare noundef i64 @fwrite(ptr nocapture noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8writeU32P8_IO_FILEj(ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !14, i64 176}
!10 = !{!"_ZTS10cgltf_data", !11, i64 0, !6, i64 8, !12, i64 16, !6, i64 88, !14, i64 96, !6, i64 104, !14, i64 112, !6, i64 120, !14, i64 128, !6, i64 136, !14, i64 144, !6, i64 152, !14, i64 160, !6, i64 168, !14, i64 176, !6, i64 184, !14, i64 192, !6, i64 200, !14, i64 208, !6, i64 216, !14, i64 224, !6, i64 232, !14, i64 240, !6, i64 248, !14, i64 256, !6, i64 264, !14, i64 272, !6, i64 280, !14, i64 288, !6, i64 296, !6, i64 304, !14, i64 312, !6, i64 320, !14, i64 328, !13, i64 336, !14, i64 360, !6, i64 368, !6, i64 376, !14, i64 384, !6, i64 392, !14, i64 400, !6, i64 408, !14, i64 416, !6, i64 424, !14, i64 432, !15, i64 440, !16, i64 464}
!11 = !{!"_ZTS15cgltf_file_type", !7, i64 0}
!12 = !{!"_ZTS11cgltf_asset", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !14, i64 56, !6, i64 64}
!13 = !{!"_ZTS12cgltf_extras", !14, i64 0, !14, i64 8, !6, i64 16}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTS20cgltf_memory_options", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTS18cgltf_file_options", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!18, !20, i64 64}
!18 = !{!"_ZTS8Settings", !19, i64 0, !19, i64 4, !19, i64 8, !19, i64 12, !20, i64 16, !20, i64 17, !20, i64 18, !20, i64 19, !19, i64 20, !19, i64 24, !19, i64 28, !19, i64 32, !20, i64 36, !20, i64 37, !20, i64 38, !20, i64 39, !20, i64 40, !20, i64 41, !20, i64 42, !20, i64 43, !21, i64 44, !21, i64 48, !20, i64 52, !20, i64 53, !20, i64 54, !21, i64 56, !19, i64 60, !20, i64 64, !20, i64 65, !20, i64 66, !20, i64 67, !20, i64 68, !7, i64 72, !7, i64 88, !7, i64 104, !7, i64 120, !19, i64 136, !20, i64 140, !20, i64 141, !20, i64 142, !20, i64 143, !19, i64 144}
!19 = !{!"int", !7, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!18, !20, i64 65}
!25 = !{!18, !20, i64 66}
!26 = !{!10, !6, i64 168}
!27 = !{!28, !6, i64 8}
!28 = !{!"_ZTS11cgltf_image", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !14, i64 56, !6, i64 64}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = !{!14, !14, i64 0}
!33 = !{!18, !20, i64 143}
!34 = !{!18, !20, i64 141}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !30}


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