; LLVM IR from ggml-org/ggml :: src/gguf.ll (Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params)

; 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.gguf_init_params = type { i8, ptr }
%struct.gguf_reader = type { ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_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] }
%struct.gguf_tensor_info = type { %struct.ggml_tensor, i64 }
%struct.ggml_tensor = type { i32, ptr, [4 x i64], [4 x i64], i32, [16 x i32], i32, [10 x ptr], ptr, i64, ptr, [64 x i8], ptr, [8 x i8] }
%struct.ggml_init_params = type { i64, ptr, i8 }
%struct.gguf_context = type { i32, %"class.std::vector", %"class.std::vector.17", i64, i64, i64, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<gguf_kv, std::allocator<gguf_kv>>::_Vector_impl" }
%"struct.std::_Vector_base<gguf_kv, std::allocator<gguf_kv>>::_Vector_impl" = type { %"struct.std::_Vector_base<gguf_kv, std::allocator<gguf_kv>>::_Vector_impl_data" }
%"struct.std::_Vector_base<gguf_kv, std::allocator<gguf_kv>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.17" = type { %"struct.std::_Vector_base.18" }
%"struct.std::_Vector_base.18" = type { %"struct.std::_Vector_base<gguf_tensor_info, std::allocator<gguf_tensor_info>>::_Vector_impl" }
%"struct.std::_Vector_base<gguf_tensor_info, std::allocator<gguf_tensor_info>>::_Vector_impl" = type { %"struct.std::_Vector_base<gguf_tensor_info, std::allocator<gguf_tensor_info>>::_Vector_impl_data" }
%"struct.std::_Vector_base<gguf_tensor_info, std::allocator<gguf_tensor_info>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.gguf_kv = type { %"class.std::__cxx11::basic_string", i8, i32, %"class.std::vector.27", %"class.std::vector.32" }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@stderr = external global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [26 x i8], align 1
@__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@_ZTISt12length_error = external constant ptr
@_ZTISt9bad_alloc = external constant ptr
@.str.23 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [30 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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params(ptr noundef %0, i8 %1, ptr %2) #4 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca %struct.gguf_init_params, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %struct.gguf_reader, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca %"class.std::vector.22", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca i32, align 4
  %20 = alloca i8, align 1
  %21 = alloca i64, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca i64, align 8
  %27 = alloca %struct.gguf_tensor_info, align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i64, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i32, align 4
  %37 = alloca i64, align 8
  %38 = alloca ptr, align 8
  %39 = alloca i64, align 8
  %40 = alloca %struct.ggml_init_params, align 8
  %41 = alloca %struct.ggml_init_params, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i64, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = getelementptr inbounds { i8, ptr }, ptr %5, i32 0, i32 0
  store i8 %1, ptr %47, align 8
  %48 = getelementptr inbounds { i8, ptr }, ptr %5, i32 0, i32 1
  store ptr %2, ptr %48, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #11
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN11gguf_readerC2EP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %49)
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  %50 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #12
  call void @_ZN12gguf_contextC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %50) #11
  store ptr %50, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #11
  store i8 1, ptr %9, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #11
  call void @_ZNSt6vectorIcSaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  %51 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %52 = trunc i8 %51 to i1
  br i1 %52, label %53, label %56

53:                                               ; preds = %3
  %54 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readIcEEbRSt6vectorIT_SaIS2_EEm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 4)
          to label %55 unwind label %66

55:                                               ; preds = %53
  br label %56

56:                                               ; preds = %55, %3
  %57 = phi i1 [ false, %3 ], [ %54, %55 ]
  %58 = zext i1 %57 to i8
  store i8 %58, ptr %9, align 1, !tbaa !9
  %59 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %60 = trunc i8 %59 to i1
  br i1 %60, label %70, label %61

61:                                               ; preds = %56
  %62 = load ptr, ptr @stderr, align 8, !tbaa !5
  %63 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef @.str.15, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @gguf_free(ptr noundef %64)
          to label %65 unwind label %66

65:                                               ; preds = %61
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %117

66:                                               ; preds = %61, %53
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %11, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %12, align 4
  br label %134

70:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  store i32 0, ptr %14, align 4, !tbaa !13
  br label %71

71:                                               ; preds = %111, %70
  %72 = load i32, ptr %14, align 4, !tbaa !13
  %73 = zext i32 %72 to i64
  %74 = call noundef i64 @_ZNKSt6vectorIcSaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  %75 = icmp ult i64 %73, %74
  br i1 %75, label %77, label %76

76:                                               ; preds = %71
  store i32 2, ptr %13, align 4
  br label %114

77:                                               ; preds = %71
  %78 = load i32, ptr %14, align 4, !tbaa !13
  %79 = zext i32 %78 to i64
  %80 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %79) #11
  %81 = load i8, ptr %80, align 1, !tbaa !15
  %82 = sext i8 %81 to i32
  %83 = load i32, ptr %14, align 4, !tbaa !13
  %84 = zext i32 %83 to i64
  %85 = getelementptr inbounds [5 x i8], ptr @.str.16, i64 0, i64 %84
  %86 = load i8, ptr %85, align 1, !tbaa !15
  %87 = sext i8 %86 to i32
  %88 = icmp ne i32 %82, %87
  br i1 %88, label %89, label %110

89:                                               ; preds = %77
  %90 = load ptr, ptr @stderr, align 8, !tbaa !5
  %91 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0) #11
  %92 = load i8, ptr %91, align 1, !tbaa !15
  %93 = sext i8 %92 to i32
  %94 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 1) #11
  %95 = load i8, ptr %94, align 1, !tbaa !15
  %96 = sext i8 %95 to i32
  %97 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 2) #11
  %98 = load i8, ptr %97, align 1, !tbaa !15
  %99 = sext i8 %98 to i32
  %100 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 3) #11
  %101 = load i8, ptr %100, align 1, !tbaa !15
  %102 = sext i8 %101 to i32
  %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %90, ptr noundef @.str.17, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i32 noundef %93, i32 noundef %96, i32 noundef %99, i32 noundef %102) #11
  %104 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @gguf_free(ptr noundef %104)
          to label %105 unwind label %106

105:                                              ; preds = %89
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %114

106:                                              ; preds = %89
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %11, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %134

110:                                              ; preds = %77
  br label %111

111:                                              ; preds = %110
  %112 = load i32, ptr %14, align 4, !tbaa !13
  %113 = add i32 %112, 1
  store i32 %113, ptr %14, align 4, !tbaa !13
  br label %71, !llvm.loop !16

114:                                              ; preds = %105, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  %115 = load i32, ptr %13, align 4
  switch i32 %115, label %117 [
    i32 2, label %116
  ]

116:                                              ; preds = %114
  store i32 0, ptr %13, align 4
  br label %117

117:                                              ; preds = %116, %114, %65
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  %118 = load i32, ptr %13, align 4
  switch i32 %118, label %1249 [
    i32 0, label %119
  ]

119:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  store i64 0, ptr %15, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  store i64 0, ptr %16, align 8, !tbaa !18
  %120 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %121 = trunc i8 %120 to i1
  br i1 %121, label %122, label %147

122:                                              ; preds = %119
  %123 = load ptr, ptr %8, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.gguf_context, ptr %123, i32 0, i32 0
  %125 = call noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %124)
  br i1 %125, label %126, label %147

126:                                              ; preds = %122
  %127 = load ptr, ptr %8, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.gguf_context, ptr %127, i32 0, i32 0
  %129 = load i32, ptr %128, align 8, !tbaa !20
  %130 = icmp eq i32 %129, 1
  br i1 %130, label %131, label %135

131:                                              ; preds = %126
  %132 = load ptr, ptr @stderr, align 8, !tbaa !5
  %133 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %132, ptr noundef @.str.18, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %135

134:                                              ; preds = %106, %66
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  br label %1251

135:                                              ; preds = %131, %126
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.gguf_context, ptr %136, i32 0, i32 0
  %138 = load i32, ptr %137, align 8, !tbaa !20
  %139 = icmp ugt i32 %138, 3
  br i1 %139, label %140, label %146

140:                                              ; preds = %135
  %141 = load ptr, ptr @stderr, align 8, !tbaa !5
  %142 = load ptr, ptr %8, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.gguf_context, ptr %142, i32 0, i32 0
  %144 = load i32, ptr %143, align 8, !tbaa !20
  %145 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %141, ptr noundef @.str.19, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i32 noundef %144, i32 noundef 3) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %146

146:                                              ; preds = %140, %135
  br label %148

147:                                              ; preds = %122, %119
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %148

148:                                              ; preds = %147, %146
  %149 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %150 = trunc i8 %149 to i1
  br i1 %150, label %151, label %164

151:                                              ; preds = %148
  %152 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %16)
  br i1 %152, label %153, label %164

153:                                              ; preds = %151
  %154 = load i64, ptr %16, align 8, !tbaa !18
  %155 = icmp slt i64 %154, 0
  br i1 %155, label %159, label %156

156:                                              ; preds = %153
  %157 = load i64, ptr %16, align 8, !tbaa !18
  %158 = icmp sgt i64 %157, 53624256028225440
  br i1 %158, label %159, label %163

159:                                              ; preds = %156, %153
  %160 = load ptr, ptr @stderr, align 8, !tbaa !5
  %161 = load i64, ptr %16, align 8, !tbaa !18
  %162 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %160, ptr noundef @.str.20, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %161, i64 noundef 53624256028225440) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %163

163:                                              ; preds = %159, %156
  br label %165

164:                                              ; preds = %151, %148
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %165

165:                                              ; preds = %164, %163
  %166 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %167 = trunc i8 %166 to i1
  br i1 %167, label %168, label %181

168:                                              ; preds = %165
  %169 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %15)
  br i1 %169, label %170, label %181

170:                                              ; preds = %168
  %171 = load i64, ptr %15, align 8, !tbaa !18
  %172 = icmp slt i64 %171, 0
  br i1 %172, label %176, label %173

173:                                              ; preds = %170
  %174 = load i64, ptr %15, align 8, !tbaa !18
  %175 = icmp sgt i64 %174, 209622091746699450
  br i1 %175, label %176, label %180

176:                                              ; preds = %173, %170
  %177 = load ptr, ptr @stderr, align 8, !tbaa !5
  %178 = load i64, ptr %15, align 8, !tbaa !18
  %179 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %177, ptr noundef @.str.21, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %178, i64 noundef 209622091746699450) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %180

180:                                              ; preds = %176, %173
  br label %182

181:                                              ; preds = %168, %165
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %182

182:                                              ; preds = %181, %180
  %183 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %184 = trunc i8 %183 to i1
  br i1 %184, label %189, label %185

185:                                              ; preds = %182
  %186 = load ptr, ptr @stderr, align 8, !tbaa !5
  %187 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %186, ptr noundef @.str.22, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %188 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %188)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1247

189:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  store i64 0, ptr %17, align 8, !tbaa !18
  br label %190

190:                                              ; preds = %492, %189
  %191 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %192 = trunc i8 %191 to i1
  br i1 %192, label %193, label %197

193:                                              ; preds = %190
  %194 = load i64, ptr %17, align 8, !tbaa !18
  %195 = load i64, ptr %15, align 8, !tbaa !18
  %196 = icmp slt i64 %194, %195
  br label %197

197:                                              ; preds = %193, %190
  %198 = phi i1 [ false, %190 ], [ %196, %193 ]
  br i1 %198, label %200, label %199

199:                                              ; preds = %197
  store i32 5, ptr %13, align 4
  br label %496

200:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 -1, ptr %19, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #11
  store i8 0, ptr %20, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  store i64 1, ptr %21, align 8, !tbaa !18
  %201 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %202 = trunc i8 %201 to i1
  br i1 %202, label %203, label %206

203:                                              ; preds = %200
  %204 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %205 unwind label %209

205:                                              ; preds = %203
  br label %206

206:                                              ; preds = %205, %200
  %207 = phi i1 [ false, %200 ], [ %204, %205 ]
  %208 = zext i1 %207 to i8
  store i8 %208, ptr %9, align 1, !tbaa !9
  br label %224

209:                                              ; preds = %203
  %210 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12length_error
          catch ptr @_ZTISt9bad_alloc
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %11, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %12, align 4
  br label %213

213:                                              ; preds = %209
  %214 = load i32, ptr %12, align 4
  %215 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt12length_error) #11
  %216 = icmp eq i32 %214, %215
  br i1 %216, label %217, label %237

217:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %218 = load ptr, ptr %11, align 8
  %219 = call ptr @__cxa_begin_catch(ptr %218) #11
  store ptr %219, ptr %23, align 8
  %220 = load ptr, ptr @stderr, align 8, !tbaa !5
  %221 = load i64, ptr %17, align 8, !tbaa !18
  %222 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %220, ptr noundef @.str.24, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %221) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %223 unwind label %251

223:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %224

224:                                              ; preds = %246, %223, %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  store i64 0, ptr %24, align 8, !tbaa !18
  br label %225

225:                                              ; preds = %269, %224
  %226 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %227 = trunc i8 %226 to i1
  br i1 %227, label %228, label %234

228:                                              ; preds = %225
  %229 = load i64, ptr %24, align 8, !tbaa !18
  %230 = load ptr, ptr %8, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.gguf_context, ptr %230, i32 0, i32 1
  %232 = call noundef i64 @_ZNKSt6vectorI7gguf_kvSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %231) #11
  %233 = icmp ult i64 %229, %232
  br label %234

234:                                              ; preds = %228, %225
  %235 = phi i1 [ false, %225 ], [ %233, %228 ]
  br i1 %235, label %255, label %236

236:                                              ; preds = %234
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %272

237:                                              ; preds = %213
  %238 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9bad_alloc) #11
  %239 = icmp eq i32 %214, %238
  br i1 %239, label %240, label %495

240:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %241 = load ptr, ptr %11, align 8
  %242 = call ptr @__cxa_begin_catch(ptr %241) #11
  store ptr %242, ptr %22, align 8
  %243 = load ptr, ptr @stderr, align 8, !tbaa !5
  %244 = load i64, ptr %17, align 8, !tbaa !18
  %245 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %243, ptr noundef @.str.23, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %244) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %246 unwind label %247

246:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %224

247:                                              ; preds = %240
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %11, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %495

251:                                              ; preds = %217
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %11, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %495

255:                                              ; preds = %234
  %256 = load ptr, ptr %8, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.gguf_context, ptr %256, i32 0, i32 1
  %258 = load i64, ptr %24, align 8, !tbaa !18
  %259 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorI7gguf_kvSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %257, i64 noundef %258) #11
  %260 = getelementptr inbounds %struct.gguf_kv, ptr %259, i32 0, i32 0
  %261 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %260) #11
  br i1 %261, label %262, label %268

262:                                              ; preds = %255
  %263 = load ptr, ptr @stderr, align 8, !tbaa !5
  %264 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  %265 = load i64, ptr %24, align 8, !tbaa !18
  %266 = load i64, ptr %17, align 8, !tbaa !18
  %267 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %263, ptr noundef @.str.25, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %264, i64 noundef %265, i64 noundef %266) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %268

268:                                              ; preds = %262, %255
  br label %269

269:                                              ; preds = %268
  %270 = load i64, ptr %24, align 8, !tbaa !18
  %271 = add i64 %270, 1
  store i64 %271, ptr %24, align 8, !tbaa !18
  br label %225, !llvm.loop !32

272:                                              ; preds = %236
  %273 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %274 = trunc i8 %273 to i1
  br i1 %274, label %276, label %275

275:                                              ; preds = %272
  store i32 5, ptr %13, align 4
  br label %489

276:                                              ; preds = %272
  %277 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %278 = trunc i8 %277 to i1
  br i1 %278, label %279, label %282

279:                                              ; preds = %276
  %280 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %281 unwind label %304

281:                                              ; preds = %279
  br label %282

282:                                              ; preds = %281, %276
  %283 = phi i1 [ false, %276 ], [ %280, %281 ]
  %284 = zext i1 %283 to i8
  store i8 %284, ptr %9, align 1, !tbaa !9
  %285 = load i32, ptr %19, align 4, !tbaa !30
  %286 = icmp eq i32 %285, 9
  br i1 %286, label %287, label %308

287:                                              ; preds = %282
  store i8 1, ptr %20, align 1, !tbaa !9
  %288 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %289 = trunc i8 %288 to i1
  br i1 %289, label %290, label %293

290:                                              ; preds = %287
  %291 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %292 unwind label %304

292:                                              ; preds = %290
  br label %293

293:                                              ; preds = %292, %287
  %294 = phi i1 [ false, %287 ], [ %291, %292 ]
  %295 = zext i1 %294 to i8
  store i8 %295, ptr %9, align 1, !tbaa !9
  %296 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %297 = trunc i8 %296 to i1
  br i1 %297, label %298, label %301

298:                                              ; preds = %293
  %299 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %300 unwind label %304

300:                                              ; preds = %298
  br label %301

301:                                              ; preds = %300, %293
  %302 = phi i1 [ false, %293 ], [ %299, %300 ]
  %303 = zext i1 %302 to i8
  store i8 %303, ptr %9, align 1, !tbaa !9
  br label %308

304:                                              ; preds = %471, %457, %443, %429, %415, %401, %387, %373, %359, %345, %331, %317, %298, %290, %279
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %11, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %12, align 4
  br label %495

308:                                              ; preds = %301, %282
  %309 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %310 = trunc i8 %309 to i1
  br i1 %310, label %312, label %311

311:                                              ; preds = %308
  store i32 5, ptr %13, align 4
  br label %489

312:                                              ; preds = %308
  %313 = load i32, ptr %19, align 4, !tbaa !30
  switch i32 %313, label %483 [
    i32 0, label %314
    i32 1, label %328
    i32 2, label %342
    i32 3, label %356
    i32 4, label %370
    i32 5, label %384
    i32 6, label %398
    i32 7, label %412
    i32 8, label %426
    i32 10, label %440
    i32 11, label %454
    i32 12, label %468
    i32 9, label %482
  ]

314:                                              ; preds = %312
  %315 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %316 = trunc i8 %315 to i1
  br i1 %316, label %317, label %325

317:                                              ; preds = %314
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.gguf_context, ptr %318, i32 0, i32 1
  %320 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %321 = trunc i8 %320 to i1
  %322 = load i64, ptr %21, align 8, !tbaa !18
  %323 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIhEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %319, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %321, i64 noundef %322)
          to label %324 unwind label %304

324:                                              ; preds = %317
  br label %325

325:                                              ; preds = %324, %314
  %326 = phi i1 [ false, %314 ], [ %323, %324 ]
  %327 = zext i1 %326 to i8
  store i8 %327, ptr %9, align 1, !tbaa !9
  br label %488

328:                                              ; preds = %312
  %329 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %330 = trunc i8 %329 to i1
  br i1 %330, label %331, label %339

331:                                              ; preds = %328
  %332 = load ptr, ptr %8, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.gguf_context, ptr %332, i32 0, i32 1
  %334 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %335 = trunc i8 %334 to i1
  %336 = load i64, ptr %21, align 8, !tbaa !18
  %337 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIaEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %333, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %335, i64 noundef %336)
          to label %338 unwind label %304

338:                                              ; preds = %331
  br label %339

339:                                              ; preds = %338, %328
  %340 = phi i1 [ false, %328 ], [ %337, %338 ]
  %341 = zext i1 %340 to i8
  store i8 %341, ptr %9, align 1, !tbaa !9
  br label %488

342:                                              ; preds = %312
  %343 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %344 = trunc i8 %343 to i1
  br i1 %344, label %345, label %353

345:                                              ; preds = %342
  %346 = load ptr, ptr %8, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.gguf_context, ptr %346, i32 0, i32 1
  %348 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %349 = trunc i8 %348 to i1
  %350 = load i64, ptr %21, align 8, !tbaa !18
  %351 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperItEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %347, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %349, i64 noundef %350)
          to label %352 unwind label %304

352:                                              ; preds = %345
  br label %353

353:                                              ; preds = %352, %342
  %354 = phi i1 [ false, %342 ], [ %351, %352 ]
  %355 = zext i1 %354 to i8
  store i8 %355, ptr %9, align 1, !tbaa !9
  br label %488

356:                                              ; preds = %312
  %357 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %358 = trunc i8 %357 to i1
  br i1 %358, label %359, label %367

359:                                              ; preds = %356
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.gguf_context, ptr %360, i32 0, i32 1
  %362 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %363 = trunc i8 %362 to i1
  %364 = load i64, ptr %21, align 8, !tbaa !18
  %365 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIsEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %361, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %363, i64 noundef %364)
          to label %366 unwind label %304

366:                                              ; preds = %359
  br label %367

367:                                              ; preds = %366, %356
  %368 = phi i1 [ false, %356 ], [ %365, %366 ]
  %369 = zext i1 %368 to i8
  store i8 %369, ptr %9, align 1, !tbaa !9
  br label %488

370:                                              ; preds = %312
  %371 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %372 = trunc i8 %371 to i1
  br i1 %372, label %373, label %381

373:                                              ; preds = %370
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.gguf_context, ptr %374, i32 0, i32 1
  %376 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %377 = trunc i8 %376 to i1
  %378 = load i64, ptr %21, align 8, !tbaa !18
  %379 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIjEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %375, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %377, i64 noundef %378)
          to label %380 unwind label %304

380:                                              ; preds = %373
  br label %381

381:                                              ; preds = %380, %370
  %382 = phi i1 [ false, %370 ], [ %379, %380 ]
  %383 = zext i1 %382 to i8
  store i8 %383, ptr %9, align 1, !tbaa !9
  br label %488

384:                                              ; preds = %312
  %385 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %395

387:                                              ; preds = %384
  %388 = load ptr, ptr %8, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.gguf_context, ptr %388, i32 0, i32 1
  %390 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %391 = trunc i8 %390 to i1
  %392 = load i64, ptr %21, align 8, !tbaa !18
  %393 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIiEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %389, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %391, i64 noundef %392)
          to label %394 unwind label %304

394:                                              ; preds = %387
  br label %395

395:                                              ; preds = %394, %384
  %396 = phi i1 [ false, %384 ], [ %393, %394 ]
  %397 = zext i1 %396 to i8
  store i8 %397, ptr %9, align 1, !tbaa !9
  br label %488

398:                                              ; preds = %312
  %399 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %400 = trunc i8 %399 to i1
  br i1 %400, label %401, label %409

401:                                              ; preds = %398
  %402 = load ptr, ptr %8, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.gguf_context, ptr %402, i32 0, i32 1
  %404 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %405 = trunc i8 %404 to i1
  %406 = load i64, ptr %21, align 8, !tbaa !18
  %407 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIfEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %403, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %405, i64 noundef %406)
          to label %408 unwind label %304

408:                                              ; preds = %401
  br label %409

409:                                              ; preds = %408, %398
  %410 = phi i1 [ false, %398 ], [ %407, %408 ]
  %411 = zext i1 %410 to i8
  store i8 %411, ptr %9, align 1, !tbaa !9
  br label %488

412:                                              ; preds = %312
  %413 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %414 = trunc i8 %413 to i1
  br i1 %414, label %415, label %423

415:                                              ; preds = %412
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.gguf_context, ptr %416, i32 0, i32 1
  %418 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %419 = trunc i8 %418 to i1
  %420 = load i64, ptr %21, align 8, !tbaa !18
  %421 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIbEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %417, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %419, i64 noundef %420)
          to label %422 unwind label %304

422:                                              ; preds = %415
  br label %423

423:                                              ; preds = %422, %412
  %424 = phi i1 [ false, %412 ], [ %421, %422 ]
  %425 = zext i1 %424 to i8
  store i8 %425, ptr %9, align 1, !tbaa !9
  br label %488

426:                                              ; preds = %312
  %427 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %428 = trunc i8 %427 to i1
  br i1 %428, label %429, label %437

429:                                              ; preds = %426
  %430 = load ptr, ptr %8, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.gguf_context, ptr %430, i32 0, i32 1
  %432 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %433 = trunc i8 %432 to i1
  %434 = load i64, ptr %21, align 8, !tbaa !18
  %435 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRK11gguf_readerRSt6vectorI7gguf_kvSaISA_EERKS5_bm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %431, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %433, i64 noundef %434)
          to label %436 unwind label %304

436:                                              ; preds = %429
  br label %437

437:                                              ; preds = %436, %426
  %438 = phi i1 [ false, %426 ], [ %435, %436 ]
  %439 = zext i1 %438 to i8
  store i8 %439, ptr %9, align 1, !tbaa !9
  br label %488

440:                                              ; preds = %312
  %441 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %442 = trunc i8 %441 to i1
  br i1 %442, label %443, label %451

443:                                              ; preds = %440
  %444 = load ptr, ptr %8, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.gguf_context, ptr %444, i32 0, i32 1
  %446 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %447 = trunc i8 %446 to i1
  %448 = load i64, ptr %21, align 8, !tbaa !18
  %449 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperImEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %445, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %447, i64 noundef %448)
          to label %450 unwind label %304

450:                                              ; preds = %443
  br label %451

451:                                              ; preds = %450, %440
  %452 = phi i1 [ false, %440 ], [ %449, %450 ]
  %453 = zext i1 %452 to i8
  store i8 %453, ptr %9, align 1, !tbaa !9
  br label %488

454:                                              ; preds = %312
  %455 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %456 = trunc i8 %455 to i1
  br i1 %456, label %457, label %465

457:                                              ; preds = %454
  %458 = load ptr, ptr %8, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.gguf_context, ptr %458, i32 0, i32 1
  %460 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %461 = trunc i8 %460 to i1
  %462 = load i64, ptr %21, align 8, !tbaa !18
  %463 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIlEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %459, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %461, i64 noundef %462)
          to label %464 unwind label %304

464:                                              ; preds = %457
  br label %465

465:                                              ; preds = %464, %454
  %466 = phi i1 [ false, %454 ], [ %463, %464 ]
  %467 = zext i1 %466 to i8
  store i8 %467, ptr %9, align 1, !tbaa !9
  br label %488

468:                                              ; preds = %312
  %469 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %470 = trunc i8 %469 to i1
  br i1 %470, label %471, label %479

471:                                              ; preds = %468
  %472 = load ptr, ptr %8, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.gguf_context, ptr %472, i32 0, i32 1
  %474 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %475 = trunc i8 %474 to i1
  %476 = load i64, ptr %21, align 8, !tbaa !18
  %477 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIdEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %473, ptr noundef nonnull align 8 dereferenceable(32) %18, i1 noundef zeroext %475, i64 noundef %476)
          to label %478 unwind label %304

478:                                              ; preds = %471
  br label %479

479:                                              ; preds = %478, %468
  %480 = phi i1 [ false, %468 ], [ %477, %478 ]
  %481 = zext i1 %480 to i8
  store i8 %481, ptr %9, align 1, !tbaa !9
  br label %488

482:                                              ; preds = %312
  br label %483

483:                                              ; preds = %482, %312
  %484 = load ptr, ptr @stderr, align 8, !tbaa !5
  %485 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  %486 = load i32, ptr %19, align 4, !tbaa !30
  %487 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %484, ptr noundef @.str.26, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %485, i32 noundef %486) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  br label %488

488:                                              ; preds = %483, %479, %465, %451, %437, %423, %409, %395, %381, %367, %353, %339, %325
  store i32 0, ptr %13, align 4
  br label %489

489:                                              ; preds = %488, %311, %275
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  %490 = load i32, ptr %13, align 4
  switch i32 %490, label %496 [
    i32 0, label %491
  ]

491:                                              ; preds = %489
  br label %492

492:                                              ; preds = %491
  %493 = load i64, ptr %17, align 8, !tbaa !18
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %17, align 8, !tbaa !18
  br label %190, !llvm.loop !33

495:                                              ; preds = %304, %251, %247, %237
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %1248

496:                                              ; preds = %489, %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %497

497:                                              ; preds = %496
  %498 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %499 = trunc i8 %498 to i1
  br i1 %499, label %504, label %500

500:                                              ; preds = %497
  %501 = load ptr, ptr @stderr, align 8, !tbaa !5
  %502 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %501, ptr noundef @.str.27, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %503 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %503)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1247

504:                                              ; preds = %497
  %505 = load ptr, ptr %8, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.gguf_context, ptr %505, i32 0, i32 1
  %507 = call noundef i64 @_ZNKSt6vectorI7gguf_kvSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %506) #11
  %508 = load i64, ptr %15, align 8, !tbaa !18
  %509 = icmp eq i64 %507, %508
  br i1 %509, label %511, label %510

510:                                              ; preds = %504
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str.28, i32 noundef 455, ptr noundef @.str.29, ptr noundef @.str.30) #13
  unreachable

511:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %512 = load ptr, ptr %8, align 8, !tbaa !5
  %513 = call i64 @gguf_find_key(ptr noundef %512, ptr noundef @.str.31)
  %514 = trunc i64 %513 to i32
  store i32 %514, ptr %25, align 4, !tbaa !13
  %515 = load i32, ptr %25, align 4, !tbaa !13
  %516 = icmp eq i32 %515, -1
  br i1 %516, label %517, label %518

517:                                              ; preds = %511
  br label %523

518:                                              ; preds = %511
  %519 = load ptr, ptr %8, align 8, !tbaa !5
  %520 = load i32, ptr %25, align 4, !tbaa !13
  %521 = sext i32 %520 to i64
  %522 = call i32 @gguf_get_val_u32(ptr noundef %519, i64 noundef %521)
  br label %523

523:                                              ; preds = %518, %517
  %524 = phi i32 [ 32, %517 ], [ %522, %518 ]
  %525 = zext i32 %524 to i64
  %526 = load ptr, ptr %8, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.gguf_context, ptr %526, i32 0, i32 3
  store i64 %525, ptr %527, align 8, !tbaa !34
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.gguf_context, ptr %528, i32 0, i32 3
  %530 = load i64, ptr %529, align 8, !tbaa !34
  %531 = icmp eq i64 %530, 0
  br i1 %531, label %542, label %532

532:                                              ; preds = %523
  %533 = load ptr, ptr %8, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.gguf_context, ptr %533, i32 0, i32 3
  %535 = load i64, ptr %534, align 8, !tbaa !34
  %536 = load ptr, ptr %8, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.gguf_context, ptr %536, i32 0, i32 3
  %538 = load i64, ptr %537, align 8, !tbaa !34
  %539 = sub i64 %538, 1
  %540 = and i64 %535, %539
  %541 = icmp ne i64 %540, 0
  br i1 %541, label %542, label %549

542:                                              ; preds = %532, %523
  %543 = load ptr, ptr @stderr, align 8, !tbaa !5
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.gguf_context, ptr %544, i32 0, i32 3
  %546 = load i64, ptr %545, align 8, !tbaa !34
  %547 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %543, ptr noundef @.str.32, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %546) #11
  %548 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %548)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %550

549:                                              ; preds = %532
  store i32 0, ptr %13, align 4
  br label %550

550:                                              ; preds = %549, %542
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  %551 = load i32, ptr %13, align 4
  switch i32 %551, label %1247 [
    i32 0, label %552
  ]

552:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  store i64 0, ptr %26, align 8, !tbaa !18
  br label %553

553:                                              ; preds = %958, %552
  %554 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %555 = trunc i8 %554 to i1
  br i1 %555, label %556, label %560

556:                                              ; preds = %553
  %557 = load i64, ptr %26, align 8, !tbaa !18
  %558 = load i64, ptr %16, align 8, !tbaa !18
  %559 = icmp slt i64 %557, %558
  br label %560

560:                                              ; preds = %556, %553
  %561 = phi i1 [ false, %553 ], [ %559, %556 ]
  br i1 %561, label %563, label %562

562:                                              ; preds = %560
  store i32 12, ptr %13, align 4
  br label %961

563:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 344, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  %564 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %565 = trunc i8 %564 to i1
  br i1 %565, label %566, label %569

566:                                              ; preds = %563
  %567 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %568 unwind label %572

568:                                              ; preds = %566
  br label %569

569:                                              ; preds = %568, %563
  %570 = phi i1 [ false, %563 ], [ %567, %568 ]
  %571 = zext i1 %570 to i8
  store i8 %571, ptr %9, align 1, !tbaa !9
  br label %587

572:                                              ; preds = %566
  %573 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12length_error
          catch ptr @_ZTISt9bad_alloc
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %11, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %12, align 4
  br label %576

576:                                              ; preds = %572
  %577 = load i32, ptr %12, align 4
  %578 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt12length_error) #11
  %579 = icmp eq i32 %577, %578
  br i1 %579, label %580, label %595

580:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %581 = load ptr, ptr %11, align 8
  %582 = call ptr @__cxa_begin_catch(ptr %581) #11
  store ptr %582, ptr %30, align 8
  %583 = load ptr, ptr @stderr, align 8, !tbaa !5
  %584 = load i64, ptr %26, align 8, !tbaa !18
  %585 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %583, ptr noundef @.str.34, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %584) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %586 unwind label %609

586:                                              ; preds = %580
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %587

587:                                              ; preds = %604, %586, %569
  %588 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  %589 = icmp uge i64 %588, 64
  br i1 %589, label %590, label %613

590:                                              ; preds = %587
  %591 = load ptr, ptr @stderr, align 8, !tbaa !5
  %592 = load i64, ptr %26, align 8, !tbaa !18
  %593 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  %594 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %591, ptr noundef @.str.35, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %592, i64 noundef %593, i32 noundef 64) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 12, ptr %13, align 4
  br label %659

595:                                              ; preds = %576
  %596 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9bad_alloc) #11
  %597 = icmp eq i32 %577, %596
  br i1 %597, label %598, label %665

598:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  %599 = load ptr, ptr %11, align 8
  %600 = call ptr @__cxa_begin_catch(ptr %599) #11
  store ptr %600, ptr %29, align 8
  %601 = load ptr, ptr @stderr, align 8, !tbaa !5
  %602 = load i64, ptr %26, align 8, !tbaa !18
  %603 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %601, ptr noundef @.str.33, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %602) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  invoke void @__cxa_end_catch()
          to label %604 unwind label %605

604:                                              ; preds = %598
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %587

605:                                              ; preds = %598
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %11, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %665

609:                                              ; preds = %580
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %11, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %665

613:                                              ; preds = %587
  %614 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %615 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  %616 = invoke ptr @ggml_set_name(ptr noundef %614, ptr noundef %615)
          to label %617 unwind label %628

617:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  store i64 0, ptr %31, align 8, !tbaa !18
  br label %618

618:                                              ; preds = %654, %617
  %619 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %625

621:                                              ; preds = %618
  %622 = load i64, ptr %31, align 8, !tbaa !18
  %623 = load i64, ptr %26, align 8, !tbaa !18
  %624 = icmp slt i64 %622, %623
  br label %625

625:                                              ; preds = %621, %618
  %626 = phi i1 [ false, %618 ], [ %624, %621 ]
  br i1 %626, label %632, label %627

627:                                              ; preds = %625
  store i32 15, ptr %13, align 4
  br label %657

628:                                              ; preds = %613
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %11, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %12, align 4
  br label %665

632:                                              ; preds = %625
  %633 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %634 = getelementptr inbounds %struct.ggml_tensor, ptr %633, i32 0, i32 11
  %635 = getelementptr inbounds [64 x i8], ptr %634, i64 0, i64 0
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.gguf_context, ptr %636, i32 0, i32 2
  %638 = load i64, ptr %31, align 8, !tbaa !18
  %639 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %637, i64 noundef %638) #11
  %640 = getelementptr inbounds %struct.gguf_tensor_info, ptr %639, i32 0, i32 0
  %641 = getelementptr inbounds %struct.ggml_tensor, ptr %640, i32 0, i32 11
  %642 = getelementptr inbounds [64 x i8], ptr %641, i64 0, i64 0
  %643 = call i32 @strcmp(ptr noundef %635, ptr noundef %642) #14
  %644 = icmp eq i32 %643, 0
  br i1 %644, label %645, label %653

645:                                              ; preds = %632
  %646 = load ptr, ptr @stderr, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %648 = getelementptr inbounds %struct.ggml_tensor, ptr %647, i32 0, i32 11
  %649 = getelementptr inbounds [64 x i8], ptr %648, i64 0, i64 0
  %650 = load i64, ptr %31, align 8, !tbaa !18
  %651 = load i64, ptr %26, align 8, !tbaa !18
  %652 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %646, ptr noundef @.str.36, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %649, i64 noundef %650, i64 noundef %651) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 15, ptr %13, align 4
  br label %657

653:                                              ; preds = %632
  br label %654

654:                                              ; preds = %653
  %655 = load i64, ptr %31, align 8, !tbaa !18
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %31, align 8, !tbaa !18
  br label %618, !llvm.loop !35

657:                                              ; preds = %645, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  br label %658

658:                                              ; preds = %657
  store i32 0, ptr %13, align 4
  br label %659

659:                                              ; preds = %658, %590
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #11
  %660 = load i32, ptr %13, align 4
  switch i32 %660, label %955 [
    i32 0, label %661
  ]

661:                                              ; preds = %659
  %662 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %663 = trunc i8 %662 to i1
  br i1 %663, label %666, label %664

664:                                              ; preds = %661
  store i32 12, ptr %13, align 4
  br label %955

665:                                              ; preds = %628, %609, %605, %595
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 344, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %1248

666:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 -1, ptr %32, align 4, !tbaa !13
  %667 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %668 = trunc i8 %667 to i1
  br i1 %668, label %669, label %671

669:                                              ; preds = %666
  %670 = call noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %32)
  br label %671

671:                                              ; preds = %669, %666
  %672 = phi i1 [ false, %666 ], [ %670, %669 ]
  %673 = zext i1 %672 to i8
  store i8 %673, ptr %9, align 1, !tbaa !9
  %674 = load i32, ptr %32, align 4, !tbaa !13
  %675 = icmp ugt i32 %674, 4
  br i1 %675, label %676, label %683

676:                                              ; preds = %671
  %677 = load ptr, ptr @stderr, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %679 = getelementptr inbounds %struct.ggml_tensor, ptr %678, i32 0, i32 11
  %680 = getelementptr inbounds [64 x i8], ptr %679, i64 0, i64 0
  %681 = load i32, ptr %32, align 4, !tbaa !13
  %682 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %677, ptr noundef @.str.37, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %680, i32 noundef %681, i32 noundef 4) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 12, ptr %13, align 4
  br label %815

683:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %684

684:                                              ; preds = %737, %683
  %685 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %686 = trunc i8 %685 to i1
  br i1 %686, label %687, label %690

687:                                              ; preds = %684
  %688 = load i32, ptr %33, align 4, !tbaa !13
  %689 = icmp ult i32 %688, 4
  br label %690

690:                                              ; preds = %687, %684
  %691 = phi i1 [ false, %684 ], [ %689, %687 ]
  br i1 %691, label %693, label %692

692:                                              ; preds = %690
  store i32 18, ptr %13, align 4
  br label %740

693:                                              ; preds = %690
  %694 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %695 = getelementptr inbounds %struct.ggml_tensor, ptr %694, i32 0, i32 2
  %696 = load i32, ptr %33, align 4, !tbaa !13
  %697 = zext i32 %696 to i64
  %698 = getelementptr inbounds [4 x i64], ptr %695, i64 0, i64 %697
  store i64 1, ptr %698, align 8, !tbaa !18
  %699 = load i32, ptr %33, align 4, !tbaa !13
  %700 = load i32, ptr %32, align 4, !tbaa !13
  %701 = icmp ult i32 %699, %700
  br i1 %701, label %702, label %715

702:                                              ; preds = %693
  %703 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %704 = trunc i8 %703 to i1
  br i1 %704, label %705, label %712

705:                                              ; preds = %702
  %706 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %707 = getelementptr inbounds %struct.ggml_tensor, ptr %706, i32 0, i32 2
  %708 = load i32, ptr %33, align 4, !tbaa !13
  %709 = zext i32 %708 to i64
  %710 = getelementptr inbounds [4 x i64], ptr %707, i64 0, i64 %709
  %711 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %710)
  br label %712

712:                                              ; preds = %705, %702
  %713 = phi i1 [ false, %702 ], [ %711, %705 ]
  %714 = zext i1 %713 to i8
  store i8 %714, ptr %9, align 1, !tbaa !9
  br label %715

715:                                              ; preds = %712, %693
  %716 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %717 = getelementptr inbounds %struct.ggml_tensor, ptr %716, i32 0, i32 2
  %718 = load i32, ptr %33, align 4, !tbaa !13
  %719 = zext i32 %718 to i64
  %720 = getelementptr inbounds [4 x i64], ptr %717, i64 0, i64 %719
  %721 = load i64, ptr %720, align 8, !tbaa !18
  %722 = icmp slt i64 %721, 0
  br i1 %722, label %723, label %736

723:                                              ; preds = %715
  %724 = load ptr, ptr @stderr, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %726 = getelementptr inbounds %struct.ggml_tensor, ptr %725, i32 0, i32 11
  %727 = getelementptr inbounds [64 x i8], ptr %726, i64 0, i64 0
  %728 = load i32, ptr %33, align 4, !tbaa !13
  %729 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %730 = getelementptr inbounds %struct.ggml_tensor, ptr %729, i32 0, i32 2
  %731 = load i32, ptr %33, align 4, !tbaa !13
  %732 = zext i32 %731 to i64
  %733 = getelementptr inbounds [4 x i64], ptr %730, i64 0, i64 %732
  %734 = load i64, ptr %733, align 8, !tbaa !18
  %735 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %724, ptr noundef @.str.38, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %727, i32 noundef %728, i64 noundef %734) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 18, ptr %13, align 4
  br label %740

736:                                              ; preds = %715
  br label %737

737:                                              ; preds = %736
  %738 = load i32, ptr %33, align 4, !tbaa !13
  %739 = add i32 %738, 1
  store i32 %739, ptr %33, align 4, !tbaa !13
  br label %684, !llvm.loop !36

740:                                              ; preds = %723, %692
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %741

741:                                              ; preds = %740
  %742 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %743 = trunc i8 %742 to i1
  br i1 %743, label %744, label %814

744:                                              ; preds = %741
  %745 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %746 = getelementptr inbounds %struct.ggml_tensor, ptr %745, i32 0, i32 2
  %747 = getelementptr inbounds [4 x i64], ptr %746, i64 0, i64 1
  %748 = load i64, ptr %747, align 8, !tbaa !18
  %749 = sdiv i64 9223372036854775807, %748
  %750 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %751 = getelementptr inbounds %struct.ggml_tensor, ptr %750, i32 0, i32 2
  %752 = getelementptr inbounds [4 x i64], ptr %751, i64 0, i64 0
  %753 = load i64, ptr %752, align 8, !tbaa !18
  %754 = icmp sle i64 %749, %753
  br i1 %754, label %792, label %755

755:                                              ; preds = %744
  %756 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %757 = getelementptr inbounds %struct.ggml_tensor, ptr %756, i32 0, i32 2
  %758 = getelementptr inbounds [4 x i64], ptr %757, i64 0, i64 2
  %759 = load i64, ptr %758, align 8, !tbaa !18
  %760 = sdiv i64 9223372036854775807, %759
  %761 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %762 = getelementptr inbounds %struct.ggml_tensor, ptr %761, i32 0, i32 2
  %763 = getelementptr inbounds [4 x i64], ptr %762, i64 0, i64 0
  %764 = load i64, ptr %763, align 8, !tbaa !18
  %765 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %766 = getelementptr inbounds %struct.ggml_tensor, ptr %765, i32 0, i32 2
  %767 = getelementptr inbounds [4 x i64], ptr %766, i64 0, i64 1
  %768 = load i64, ptr %767, align 8, !tbaa !18
  %769 = mul nsw i64 %764, %768
  %770 = icmp sle i64 %760, %769
  br i1 %770, label %792, label %771

771:                                              ; preds = %755
  %772 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %773 = getelementptr inbounds %struct.ggml_tensor, ptr %772, i32 0, i32 2
  %774 = getelementptr inbounds [4 x i64], ptr %773, i64 0, i64 3
  %775 = load i64, ptr %774, align 8, !tbaa !18
  %776 = sdiv i64 9223372036854775807, %775
  %777 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %778 = getelementptr inbounds %struct.ggml_tensor, ptr %777, i32 0, i32 2
  %779 = getelementptr inbounds [4 x i64], ptr %778, i64 0, i64 0
  %780 = load i64, ptr %779, align 8, !tbaa !18
  %781 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %782 = getelementptr inbounds %struct.ggml_tensor, ptr %781, i32 0, i32 2
  %783 = getelementptr inbounds [4 x i64], ptr %782, i64 0, i64 1
  %784 = load i64, ptr %783, align 8, !tbaa !18
  %785 = mul nsw i64 %780, %784
  %786 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %787 = getelementptr inbounds %struct.ggml_tensor, ptr %786, i32 0, i32 2
  %788 = getelementptr inbounds [4 x i64], ptr %787, i64 0, i64 2
  %789 = load i64, ptr %788, align 8, !tbaa !18
  %790 = mul nsw i64 %785, %789
  %791 = icmp sle i64 %776, %790
  br i1 %791, label %792, label %814

792:                                              ; preds = %771, %755, %744
  %793 = load ptr, ptr @stderr, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %795 = getelementptr inbounds %struct.ggml_tensor, ptr %794, i32 0, i32 11
  %796 = getelementptr inbounds [64 x i8], ptr %795, i64 0, i64 0
  %797 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %798 = getelementptr inbounds %struct.ggml_tensor, ptr %797, i32 0, i32 2
  %799 = getelementptr inbounds [4 x i64], ptr %798, i64 0, i64 0
  %800 = load i64, ptr %799, align 8, !tbaa !18
  %801 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %802 = getelementptr inbounds %struct.ggml_tensor, ptr %801, i32 0, i32 2
  %803 = getelementptr inbounds [4 x i64], ptr %802, i64 0, i64 1
  %804 = load i64, ptr %803, align 8, !tbaa !18
  %805 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %806 = getelementptr inbounds %struct.ggml_tensor, ptr %805, i32 0, i32 2
  %807 = getelementptr inbounds [4 x i64], ptr %806, i64 0, i64 2
  %808 = load i64, ptr %807, align 8, !tbaa !18
  %809 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %810 = getelementptr inbounds %struct.ggml_tensor, ptr %809, i32 0, i32 2
  %811 = getelementptr inbounds [4 x i64], ptr %810, i64 0, i64 3
  %812 = load i64, ptr %811, align 8, !tbaa !18
  %813 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %793, ptr noundef @.str.39, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %796, i64 noundef %800, i64 noundef %804, i64 noundef %808, i64 noundef %812, i64 noundef 9223372036854775807) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 12, ptr %13, align 4
  br label %815

814:                                              ; preds = %771, %741
  store i32 0, ptr %13, align 4
  br label %815

815:                                              ; preds = %814, %792, %676
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  %816 = load i32, ptr %13, align 4
  switch i32 %816, label %955 [
    i32 0, label %817
  ]

817:                                              ; preds = %815
  %818 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %819 = trunc i8 %818 to i1
  br i1 %819, label %821, label %820

820:                                              ; preds = %817
  store i32 12, ptr %13, align 4
  br label %955

821:                                              ; preds = %817
  %822 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %823 = trunc i8 %822 to i1
  br i1 %823, label %824, label %828

824:                                              ; preds = %821
  %825 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %826 = getelementptr inbounds %struct.ggml_tensor, ptr %825, i32 0, i32 0
  %827 = call noundef zeroext i1 @_ZNK11gguf_reader4readER9ggml_type(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(4) %826)
  br label %828

828:                                              ; preds = %824, %821
  %829 = phi i1 [ false, %821 ], [ %827, %824 ]
  %830 = zext i1 %829 to i8
  store i8 %830, ptr %9, align 1, !tbaa !9
  %831 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %832 = getelementptr inbounds %struct.ggml_tensor, ptr %831, i32 0, i32 0
  %833 = load i32, ptr %832, align 8, !tbaa !37
  %834 = icmp slt i32 %833, 0
  br i1 %834, label %840, label %835

835:                                              ; preds = %828
  %836 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %837 = getelementptr inbounds %struct.ggml_tensor, ptr %836, i32 0, i32 0
  %838 = load i32, ptr %837, align 8, !tbaa !37
  %839 = icmp sge i32 %838, 39
  br i1 %839, label %840, label %853

840:                                              ; preds = %835, %828
  %841 = load ptr, ptr @stderr, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %843 = getelementptr inbounds %struct.ggml_tensor, ptr %842, i32 0, i32 11
  %844 = getelementptr inbounds [64 x i8], ptr %843, i64 0, i64 0
  %845 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %846 = getelementptr inbounds %struct.ggml_tensor, ptr %845, i32 0, i32 0
  %847 = load i32, ptr %846, align 8, !tbaa !37
  %848 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %849 = getelementptr inbounds %struct.ggml_tensor, ptr %848, i32 0, i32 0
  %850 = load i32, ptr %849, align 8, !tbaa !37
  %851 = call ptr @ggml_type_name(i32 noundef %850)
  %852 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %841, ptr noundef @.str.40, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %844, i32 noundef %847, ptr noundef %851) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 12, ptr %13, align 4
  br label %955

853:                                              ; preds = %835
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %854 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %855 = getelementptr inbounds %struct.ggml_tensor, ptr %854, i32 0, i32 0
  %856 = load i32, ptr %855, align 8, !tbaa !37
  %857 = call i64 @ggml_type_size(i32 noundef %856)
  store i64 %857, ptr %34, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %858 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %859 = getelementptr inbounds %struct.ggml_tensor, ptr %858, i32 0, i32 0
  %860 = load i32, ptr %859, align 8, !tbaa !37
  %861 = call i64 @ggml_blck_size(i32 noundef %860)
  store i64 %861, ptr %35, align 8, !tbaa !18
  %862 = load i64, ptr %35, align 8, !tbaa !18
  %863 = icmp eq i64 %862, 0
  br i1 %863, label %872, label %864

864:                                              ; preds = %853
  %865 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %866 = getelementptr inbounds %struct.ggml_tensor, ptr %865, i32 0, i32 2
  %867 = getelementptr inbounds [4 x i64], ptr %866, i64 0, i64 0
  %868 = load i64, ptr %867, align 8, !tbaa !18
  %869 = load i64, ptr %35, align 8, !tbaa !18
  %870 = srem i64 %868, %869
  %871 = icmp ne i64 %870, 0
  br i1 %871, label %872, label %890

872:                                              ; preds = %864, %853
  %873 = load ptr, ptr @stderr, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %875 = getelementptr inbounds %struct.ggml_tensor, ptr %874, i32 0, i32 11
  %876 = getelementptr inbounds [64 x i8], ptr %875, i64 0, i64 0
  %877 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %878 = getelementptr inbounds %struct.ggml_tensor, ptr %877, i32 0, i32 0
  %879 = load i32, ptr %878, align 8, !tbaa !37
  %880 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %881 = getelementptr inbounds %struct.ggml_tensor, ptr %880, i32 0, i32 0
  %882 = load i32, ptr %881, align 8, !tbaa !37
  %883 = call ptr @ggml_type_name(i32 noundef %882)
  %884 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %885 = getelementptr inbounds %struct.ggml_tensor, ptr %884, i32 0, i32 2
  %886 = getelementptr inbounds [4 x i64], ptr %885, i64 0, i64 0
  %887 = load i64, ptr %886, align 8, !tbaa !18
  %888 = load i64, ptr %35, align 8, !tbaa !18
  %889 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %873, ptr noundef @.str.41, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %876, i32 noundef %879, ptr noundef %883, i64 noundef %887, i64 noundef %888) #11
  store i8 0, ptr %9, align 1, !tbaa !9
  store i32 12, ptr %13, align 4
  br label %938

890:                                              ; preds = %864
  %891 = load i64, ptr %34, align 8, !tbaa !18
  %892 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %893 = getelementptr inbounds %struct.ggml_tensor, ptr %892, i32 0, i32 3
  %894 = getelementptr inbounds [4 x i64], ptr %893, i64 0, i64 0
  store i64 %891, ptr %894, align 8, !tbaa !18
  %895 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %896 = getelementptr inbounds %struct.ggml_tensor, ptr %895, i32 0, i32 3
  %897 = getelementptr inbounds [4 x i64], ptr %896, i64 0, i64 0
  %898 = load i64, ptr %897, align 8, !tbaa !18
  %899 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %900 = getelementptr inbounds %struct.ggml_tensor, ptr %899, i32 0, i32 2
  %901 = getelementptr inbounds [4 x i64], ptr %900, i64 0, i64 0
  %902 = load i64, ptr %901, align 8, !tbaa !18
  %903 = load i64, ptr %35, align 8, !tbaa !18
  %904 = sdiv i64 %902, %903
  %905 = mul i64 %898, %904
  %906 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %907 = getelementptr inbounds %struct.ggml_tensor, ptr %906, i32 0, i32 3
  %908 = getelementptr inbounds [4 x i64], ptr %907, i64 0, i64 1
  store i64 %905, ptr %908, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  store i32 2, ptr %36, align 4, !tbaa !13
  br label %909

909:                                              ; preds = %934, %890
  %910 = load i32, ptr %36, align 4, !tbaa !13
  %911 = icmp slt i32 %910, 4
  br i1 %911, label %913, label %912

912:                                              ; preds = %909
  store i32 21, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %937

913:                                              ; preds = %909
  %914 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %915 = getelementptr inbounds %struct.ggml_tensor, ptr %914, i32 0, i32 3
  %916 = load i32, ptr %36, align 4, !tbaa !13
  %917 = sub nsw i32 %916, 1
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds [4 x i64], ptr %915, i64 0, i64 %918
  %920 = load i64, ptr %919, align 8, !tbaa !18
  %921 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %922 = getelementptr inbounds %struct.ggml_tensor, ptr %921, i32 0, i32 2
  %923 = load i32, ptr %36, align 4, !tbaa !13
  %924 = sub nsw i32 %923, 1
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds [4 x i64], ptr %922, i64 0, i64 %925
  %927 = load i64, ptr %926, align 8, !tbaa !18
  %928 = mul i64 %920, %927
  %929 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 0
  %930 = getelementptr inbounds %struct.ggml_tensor, ptr %929, i32 0, i32 3
  %931 = load i32, ptr %36, align 4, !tbaa !13
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds [4 x i64], ptr %930, i64 0, i64 %932
  store i64 %928, ptr %933, align 8, !tbaa !18
  br label %934

934:                                              ; preds = %913
  %935 = load i32, ptr %36, align 4, !tbaa !13
  %936 = add nsw i32 %935, 1
  store i32 %936, ptr %36, align 4, !tbaa !13
  br label %909, !llvm.loop !42

937:                                              ; preds = %912
  store i32 0, ptr %13, align 4
  br label %938

938:                                              ; preds = %937, %872
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  %939 = load i32, ptr %13, align 4
  switch i32 %939, label %955 [
    i32 0, label %940
  ]

940:                                              ; preds = %938
  %941 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %942 = trunc i8 %941 to i1
  br i1 %942, label %944, label %943

943:                                              ; preds = %940
  store i32 12, ptr %13, align 4
  br label %955

944:                                              ; preds = %940
  %945 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %946 = trunc i8 %945 to i1
  br i1 %946, label %947, label %950

947:                                              ; preds = %944
  %948 = getelementptr inbounds %struct.gguf_tensor_info, ptr %27, i32 0, i32 1
  %949 = call noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %948)
  br label %950

950:                                              ; preds = %947, %944
  %951 = phi i1 [ false, %944 ], [ %949, %947 ]
  %952 = zext i1 %951 to i8
  store i8 %952, ptr %9, align 1, !tbaa !9
  %953 = load ptr, ptr %8, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.gguf_context, ptr %953, i32 0, i32 2
  call void @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %954, ptr noundef nonnull align 8 dereferenceable(344) %27)
  store i32 0, ptr %13, align 4
  br label %955

955:                                              ; preds = %950, %943, %938, %840, %820, %815, %664, %659
  call void @llvm.lifetime.end.p0(i64 344, ptr %27) #11
  %956 = load i32, ptr %13, align 4
  switch i32 %956, label %961 [
    i32 0, label %957
  ]

957:                                              ; preds = %955
  br label %958

958:                                              ; preds = %957
  %959 = load i64, ptr %26, align 8, !tbaa !18
  %960 = add nsw i64 %959, 1
  store i64 %960, ptr %26, align 8, !tbaa !18
  br label %553, !llvm.loop !43

961:                                              ; preds = %955, %562
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %962

962:                                              ; preds = %961
  %963 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %964 = trunc i8 %963 to i1
  br i1 %964, label %969, label %965

965:                                              ; preds = %962
  %966 = load ptr, ptr @stderr, align 8, !tbaa !5
  %967 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %966, ptr noundef @.str.42, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %968 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %968)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1247

969:                                              ; preds = %962
  %970 = load ptr, ptr %8, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.gguf_context, ptr %970, i32 0, i32 2
  %972 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %971) #11
  %973 = load i64, ptr %16, align 8, !tbaa !18
  %974 = icmp eq i64 %972, %973
  br i1 %974, label %976, label %975

975:                                              ; preds = %969
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str.28, i32 noundef 589, ptr noundef @.str.29, ptr noundef @.str.43) #13
  unreachable

976:                                              ; preds = %969
  %977 = load ptr, ptr %6, align 8, !tbaa !5
  %978 = load ptr, ptr %6, align 8, !tbaa !5
  %979 = call i64 @ftell(ptr noundef %978)
  %980 = load ptr, ptr %8, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.gguf_context, ptr %980, i32 0, i32 3
  %982 = load i64, ptr %981, align 8, !tbaa !34
  %983 = add i64 %979, %982
  %984 = sub i64 %983, 1
  %985 = load ptr, ptr %8, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.gguf_context, ptr %985, i32 0, i32 3
  %987 = load i64, ptr %986, align 8, !tbaa !34
  %988 = sub i64 %987, 1
  %989 = xor i64 %988, -1
  %990 = and i64 %984, %989
  %991 = call i32 @fseek(ptr noundef %977, i64 noundef %990, i32 noundef 0)
  %992 = icmp ne i32 %991, 0
  br i1 %992, label %993, label %997

993:                                              ; preds = %976
  %994 = load ptr, ptr @stderr, align 8, !tbaa !5
  %995 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %994, ptr noundef @.str.44, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %996 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %996)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1247

997:                                              ; preds = %976
  %998 = load ptr, ptr %6, align 8, !tbaa !5
  %999 = call i64 @ftell(ptr noundef %998)
  %1000 = load ptr, ptr %8, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.gguf_context, ptr %1000, i32 0, i32 4
  store i64 %999, ptr %1001, align 8, !tbaa !44
  %1002 = load ptr, ptr %8, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.gguf_context, ptr %1002, i32 0, i32 5
  store i64 0, ptr %1003, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  store i64 0, ptr %37, align 8, !tbaa !18
  br label %1004

1004:                                             ; preds = %1061, %997
  %1005 = load i64, ptr %37, align 8, !tbaa !18
  %1006 = load ptr, ptr %8, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.gguf_context, ptr %1006, i32 0, i32 2
  %1008 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1007) #11
  %1009 = icmp ult i64 %1005, %1008
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1004
  store i32 24, ptr %13, align 4
  br label %1064

1011:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %1012 = load ptr, ptr %8, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.gguf_context, ptr %1012, i32 0, i32 2
  %1014 = load i64, ptr %37, align 8, !tbaa !18
  %1015 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1013, i64 noundef %1014) #11
  store ptr %1015, ptr %38, align 8, !tbaa !5
  %1016 = load ptr, ptr %38, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1016, i32 0, i32 1
  %1018 = load i64, ptr %1017, align 8, !tbaa !46
  %1019 = load ptr, ptr %8, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.gguf_context, ptr %1019, i32 0, i32 5
  %1021 = load i64, ptr %1020, align 8, !tbaa !45
  %1022 = icmp ne i64 %1018, %1021
  br i1 %1022, label %1023, label %1039

1023:                                             ; preds = %1011
  %1024 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1025 = load ptr, ptr %38, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1025, i32 0, i32 0
  %1027 = getelementptr inbounds %struct.ggml_tensor, ptr %1026, i32 0, i32 11
  %1028 = getelementptr inbounds [64 x i8], ptr %1027, i64 0, i64 0
  %1029 = load ptr, ptr %38, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1029, i32 0, i32 1
  %1031 = load i64, ptr %1030, align 8, !tbaa !46
  %1032 = load ptr, ptr %8, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.gguf_context, ptr %1032, i32 0, i32 5
  %1034 = load i64, ptr %1033, align 8, !tbaa !45
  %1035 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1024, ptr noundef @.str.45, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %1028, i64 noundef %1031, i64 noundef %1034) #11
  %1036 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1037 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1036, ptr noundef @.str.46, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %1038 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %1038)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1058

1039:                                             ; preds = %1011
  %1040 = load ptr, ptr %38, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1040, i32 0, i32 0
  %1042 = call i64 @ggml_nbytes(ptr noundef %1041)
  %1043 = load ptr, ptr %8, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.gguf_context, ptr %1043, i32 0, i32 3
  %1045 = load i64, ptr %1044, align 8, !tbaa !34
  %1046 = add i64 %1042, %1045
  %1047 = sub i64 %1046, 1
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.gguf_context, ptr %1048, i32 0, i32 3
  %1050 = load i64, ptr %1049, align 8, !tbaa !34
  %1051 = sub i64 %1050, 1
  %1052 = xor i64 %1051, -1
  %1053 = and i64 %1047, %1052
  %1054 = load ptr, ptr %8, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.gguf_context, ptr %1054, i32 0, i32 5
  %1056 = load i64, ptr %1055, align 8, !tbaa !45
  %1057 = add i64 %1056, %1053
  store i64 %1057, ptr %1055, align 8, !tbaa !45
  store i32 0, ptr %13, align 4
  br label %1058

1058:                                             ; preds = %1039, %1023
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  %1059 = load i32, ptr %13, align 4
  switch i32 %1059, label %1064 [
    i32 0, label %1060
  ]

1060:                                             ; preds = %1058
  br label %1061

1061:                                             ; preds = %1060
  %1062 = load i64, ptr %37, align 8, !tbaa !18
  %1063 = add i64 %1062, 1
  store i64 %1063, ptr %37, align 8, !tbaa !18
  br label %1004, !llvm.loop !47

1064:                                             ; preds = %1058, %1010
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  %1065 = load i32, ptr %13, align 4
  switch i32 %1065, label %1247 [
    i32 24, label %1066
  ]

1066:                                             ; preds = %1064
  %1067 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1068 = load ptr, ptr %1067, align 8, !tbaa !48
  %1069 = icmp ne ptr %1068, null
  br i1 %1069, label %1070, label %1245

1070:                                             ; preds = %1066
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %1071 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 0
  %1072 = load i8, ptr %1071, align 8, !tbaa !50, !range !11, !noundef !12
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1074, label %1078

1074:                                             ; preds = %1070
  %1075 = load i64, ptr %16, align 8, !tbaa !18
  %1076 = call i64 @ggml_tensor_overhead()
  %1077 = mul i64 %1075, %1076
  br label %1087

1078:                                             ; preds = %1070
  %1079 = load i64, ptr %16, align 8, !tbaa !18
  %1080 = add nsw i64 %1079, 1
  %1081 = call i64 @ggml_tensor_overhead()
  %1082 = mul i64 %1080, %1081
  %1083 = load ptr, ptr %8, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.gguf_context, ptr %1083, i32 0, i32 5
  %1085 = load i64, ptr %1084, align 8, !tbaa !45
  %1086 = add i64 %1082, %1085
  br label %1087

1087:                                             ; preds = %1078, %1074
  %1088 = phi i64 [ %1077, %1074 ], [ %1086, %1078 ]
  store i64 %1088, ptr %39, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #11
  %1089 = getelementptr inbounds %struct.ggml_init_params, ptr %40, i32 0, i32 0
  %1090 = load i64, ptr %39, align 8, !tbaa !18
  store i64 %1090, ptr %1089, align 8, !tbaa !51
  %1091 = getelementptr inbounds %struct.ggml_init_params, ptr %40, i32 0, i32 1
  store ptr null, ptr %1091, align 8, !tbaa !53
  %1092 = getelementptr inbounds %struct.ggml_init_params, ptr %40, i32 0, i32 2
  %1093 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 0
  %1094 = load i8, ptr %1093, align 8, !tbaa !50, !range !11, !noundef !12
  %1095 = trunc i8 %1094 to i1
  %1096 = zext i1 %1095 to i8
  store i8 %1096, ptr %1092, align 8, !tbaa !54
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %41, ptr align 8 %40, i64 24, i1 false), !tbaa.struct !55
  %1097 = call ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8 %41)
  %1098 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1099 = load ptr, ptr %1098, align 8, !tbaa !48
  store ptr %1097, ptr %1099, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1101 = load ptr, ptr %1100, align 8, !tbaa !48
  %1102 = load ptr, ptr %1101, align 8, !tbaa !5
  %1103 = icmp eq ptr %1102, null
  br i1 %1103, label %1104, label %1108

1104:                                             ; preds = %1087
  %1105 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1106 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1105, ptr noundef @.str.47, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %1107 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %1107)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1242

1108:                                             ; preds = %1087
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  %1109 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1110 = load ptr, ptr %1109, align 8, !tbaa !48
  %1111 = load ptr, ptr %1110, align 8, !tbaa !5
  store ptr %1111, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #11
  store ptr null, ptr %43, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 0
  %1113 = load i8, ptr %1112, align 8, !tbaa !50, !range !11, !noundef !12
  %1114 = trunc i8 %1113 to i1
  br i1 %1114, label %1163, label %1115

1115:                                             ; preds = %1108
  %1116 = load ptr, ptr %42, align 8, !tbaa !5
  %1117 = load ptr, ptr %8, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.gguf_context, ptr %1117, i32 0, i32 5
  %1119 = load i64, ptr %1118, align 8, !tbaa !45
  %1120 = call ptr @ggml_new_tensor_1d(ptr noundef %1116, i32 noundef 24, i64 noundef %1119)
  store ptr %1120, ptr %43, align 8, !tbaa !5
  %1121 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1122 = trunc i8 %1121 to i1
  br i1 %1122, label %1123, label %1126

1123:                                             ; preds = %1115
  %1124 = load ptr, ptr %43, align 8, !tbaa !5
  %1125 = icmp ne ptr %1124, null
  br label %1126

1126:                                             ; preds = %1123, %1115
  %1127 = phi i1 [ false, %1115 ], [ %1125, %1123 ]
  %1128 = zext i1 %1127 to i8
  store i8 %1128, ptr %9, align 1, !tbaa !9
  %1129 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1126
  %1132 = load ptr, ptr %43, align 8, !tbaa !5
  %1133 = call ptr @ggml_set_name(ptr noundef %1132, ptr noundef @.str.48)
  br label %1134

1134:                                             ; preds = %1131, %1126
  %1135 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1136 = trunc i8 %1135 to i1
  br i1 %1136, label %1137, label %1145

1137:                                             ; preds = %1134
  %1138 = load ptr, ptr %43, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ggml_tensor, ptr %1138, i32 0, i32 10
  %1140 = load ptr, ptr %1139, align 8, !tbaa !56
  %1141 = load ptr, ptr %8, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.gguf_context, ptr %1141, i32 0, i32 5
  %1143 = load i64, ptr %1142, align 8, !tbaa !45
  %1144 = call noundef zeroext i1 @_ZNK11gguf_reader4readEPvm(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %1140, i64 noundef %1143)
  br label %1145

1145:                                             ; preds = %1137, %1134
  %1146 = phi i1 [ false, %1134 ], [ %1144, %1137 ]
  %1147 = zext i1 %1146 to i8
  store i8 %1147, ptr %9, align 1, !tbaa !9
  %1148 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1149 = trunc i8 %1148 to i1
  br i1 %1149, label %1157, label %1150

1150:                                             ; preds = %1145
  %1151 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1152 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1151, ptr noundef @.str.49, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %1153 = load ptr, ptr %42, align 8, !tbaa !5
  call void @ggml_free(ptr noundef %1153)
  %1154 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1155 = load ptr, ptr %1154, align 8, !tbaa !48
  store ptr null, ptr %1155, align 8, !tbaa !5
  %1156 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %1156)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1241

1157:                                             ; preds = %1145
  %1158 = load ptr, ptr %43, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ggml_tensor, ptr %1158, i32 0, i32 10
  %1160 = load ptr, ptr %1159, align 8, !tbaa !56
  %1161 = load ptr, ptr %8, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.gguf_context, ptr %1161, i32 0, i32 6
  store ptr %1160, ptr %1162, align 8, !tbaa !57
  br label %1163

1163:                                             ; preds = %1157, %1108
  %1164 = load ptr, ptr %42, align 8, !tbaa !5
  call void @ggml_set_no_alloc(ptr noundef %1164, i1 noundef zeroext true)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  store i64 0, ptr %44, align 8, !tbaa !18
  br label %1165

1165:                                             ; preds = %1222, %1163
  %1166 = load i64, ptr %44, align 8, !tbaa !18
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.gguf_context, ptr %1167, i32 0, i32 2
  %1169 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1168) #11
  %1170 = icmp ult i64 %1166, %1169
  br i1 %1170, label %1172, label %1171

1171:                                             ; preds = %1165
  store i32 27, ptr %13, align 4
  br label %1225

1172:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  %1173 = load ptr, ptr %8, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.gguf_context, ptr %1173, i32 0, i32 2
  %1175 = load i64, ptr %44, align 8, !tbaa !18
  %1176 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1174, i64 noundef %1175) #11
  store ptr %1176, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %1177 = load ptr, ptr %42, align 8, !tbaa !5
  %1178 = load ptr, ptr %45, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1178, i32 0, i32 0
  %1180 = getelementptr inbounds %struct.ggml_tensor, ptr %1179, i32 0, i32 0
  %1181 = load i32, ptr %1180, align 8, !tbaa !37
  %1182 = load ptr, ptr %45, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1182, i32 0, i32 0
  %1184 = getelementptr inbounds %struct.ggml_tensor, ptr %1183, i32 0, i32 2
  %1185 = getelementptr inbounds [4 x i64], ptr %1184, i64 0, i64 0
  %1186 = call ptr @ggml_new_tensor(ptr noundef %1177, i32 noundef %1181, i32 noundef 4, ptr noundef %1185)
  store ptr %1186, ptr %46, align 8, !tbaa !5
  %1187 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1188 = trunc i8 %1187 to i1
  br i1 %1188, label %1189, label %1192

1189:                                             ; preds = %1172
  %1190 = load ptr, ptr %46, align 8, !tbaa !5
  %1191 = icmp ne ptr %1190, null
  br label %1192

1192:                                             ; preds = %1189, %1172
  %1193 = phi i1 [ false, %1172 ], [ %1191, %1189 ]
  %1194 = zext i1 %1193 to i8
  store i8 %1194, ptr %9, align 1, !tbaa !9
  %1195 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1196 = trunc i8 %1195 to i1
  br i1 %1196, label %1198, label %1197

1197:                                             ; preds = %1192
  store i32 27, ptr %13, align 4
  br label %1219

1198:                                             ; preds = %1192
  %1199 = load ptr, ptr %46, align 8, !tbaa !5
  %1200 = load ptr, ptr %45, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1200, i32 0, i32 0
  %1202 = getelementptr inbounds %struct.ggml_tensor, ptr %1201, i32 0, i32 11
  %1203 = getelementptr inbounds [64 x i8], ptr %1202, i64 0, i64 0
  %1204 = call ptr @ggml_set_name(ptr noundef %1199, ptr noundef %1203)
  %1205 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 0
  %1206 = load i8, ptr %1205, align 8, !tbaa !50, !range !11, !noundef !12
  %1207 = trunc i8 %1206 to i1
  br i1 %1207, label %1218, label %1208

1208:                                             ; preds = %1198
  %1209 = load ptr, ptr %43, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ggml_tensor, ptr %1209, i32 0, i32 10
  %1211 = load ptr, ptr %1210, align 8, !tbaa !56
  %1212 = load ptr, ptr %45, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.gguf_tensor_info, ptr %1212, i32 0, i32 1
  %1214 = load i64, ptr %1213, align 8, !tbaa !46
  %1215 = getelementptr inbounds i8, ptr %1211, i64 %1214
  %1216 = load ptr, ptr %46, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ggml_tensor, ptr %1216, i32 0, i32 10
  store ptr %1215, ptr %1217, align 8, !tbaa !56
  br label %1218

1218:                                             ; preds = %1208, %1198
  store i32 0, ptr %13, align 4
  br label %1219

1219:                                             ; preds = %1218, %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  %1220 = load i32, ptr %13, align 4
  switch i32 %1220, label %1225 [
    i32 0, label %1221
  ]

1221:                                             ; preds = %1219
  br label %1222

1222:                                             ; preds = %1221
  %1223 = load i64, ptr %44, align 8, !tbaa !18
  %1224 = add i64 %1223, 1
  store i64 %1224, ptr %44, align 8, !tbaa !18
  br label %1165, !llvm.loop !58

1225:                                             ; preds = %1219, %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  br label %1226

1226:                                             ; preds = %1225
  %1227 = load i8, ptr %9, align 1, !tbaa !9, !range !11, !noundef !12
  %1228 = trunc i8 %1227 to i1
  br i1 %1228, label %1236, label %1229

1229:                                             ; preds = %1226
  %1230 = load ptr, ptr @stderr, align 8, !tbaa !5
  %1231 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %1230, ptr noundef @.str.50, ptr noundef @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #11
  %1232 = load ptr, ptr %42, align 8, !tbaa !5
  call void @ggml_free(ptr noundef %1232)
  %1233 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 1
  %1234 = load ptr, ptr %1233, align 8, !tbaa !48
  store ptr null, ptr %1234, align 8, !tbaa !5
  %1235 = load ptr, ptr %8, align 8, !tbaa !5
  call void @gguf_free(ptr noundef %1235)
  store ptr null, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1241

1236:                                             ; preds = %1226
  %1237 = load ptr, ptr %42, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.gguf_init_params, ptr %5, i32 0, i32 0
  %1239 = load i8, ptr %1238, align 8, !tbaa !50, !range !11, !noundef !12
  %1240 = trunc i8 %1239 to i1
  call void @ggml_set_no_alloc(ptr noundef %1237, i1 noundef zeroext %1240)
  store i32 0, ptr %13, align 4
  br label %1241

1241:                                             ; preds = %1236, %1229, %1150
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  br label %1242

1242:                                             ; preds = %1241, %1104
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  %1243 = load i32, ptr %13, align 4
  switch i32 %1243, label %1247 [
    i32 0, label %1244
  ]

1244:                                             ; preds = %1242
  br label %1245

1245:                                             ; preds = %1244, %1066
  %1246 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1246, ptr %4, align 8
  store i32 1, ptr %13, align 4
  br label %1247

1247:                                             ; preds = %1245, %1242, %1064, %993, %965, %550, %500, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %1249

1248:                                             ; preds = %665, %495
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  br label %1251

1249:                                             ; preds = %1247, %117
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  %1250 = load ptr, ptr %4, align 8
  ret ptr %1250

1251:                                             ; preds = %1248, %134
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  br label %1252

1252:                                             ; preds = %1251
  %1253 = load ptr, ptr %11, align 8
  %1254 = load i32, ptr %12, align 4
  %1255 = insertvalue { ptr, i32 } poison, ptr %1253, 0
  %1256 = insertvalue { ptr, i32 } %1255, i32 %1254, 1
  resume { ptr, i32 } %1256
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readIcEEbRSt6vectorIT_SaIS2_EEm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @gguf_free(ptr noundef) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorI7gguf_kvSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIhEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIaEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperItEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIsEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIjEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIiEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIfEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIbEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRK11gguf_readerRSt6vectorI7gguf_kvSaISA_EERKS5_bm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperImEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIlEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIdEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) #4

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

; Function Attrs: noreturn
declare void @ggml_abort(ptr noundef, i32 noundef, ptr noundef, ...) #8

; Function Attrs: mustprogress uwtable
declare dso_local i64 @gguf_find_key(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local i32 @gguf_get_val_u32(ptr noundef, i64 noundef) #4

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

declare ptr @ggml_set_name(ptr noundef, ptr noundef) #9

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readER9ggml_type(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

declare ptr @ggml_type_name(i32 noundef) #9

declare i64 @ggml_type_size(i32 noundef) #9

declare i64 @ggml_blck_size(i32 noundef) #9

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

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

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

declare i64 @ftell(ptr noundef) #9

declare i64 @ggml_nbytes(ptr noundef) #9

declare i64 @ggml_tensor_overhead() #9

declare ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8) #9

declare ptr @ggml_new_tensor_1d(ptr noundef, i32 noundef, i64 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readEPvm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i64 noundef) #4 align 2

declare void @ggml_free(ptr noundef) #9

declare void @ggml_set_no_alloc(ptr noundef, i1 noundef zeroext) #9

declare ptr @ggml_new_tensor(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!19, !19, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !14, i64 0}
!21 = !{!"_ZTS12gguf_context", !14, i64 0, !22, i64 8, !26, i64 32, !19, i64 56, !19, i64 64, !19, i64 72, !6, i64 80}
!22 = !{!"_ZTSSt6vectorI7gguf_kvSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseI7gguf_kvSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI7gguf_kvSaIS0_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI7gguf_kvSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorI16gguf_tensor_infoSaIS0_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!31, !31, i64 0}
!31 = !{!"_ZTS9gguf_type", !7, i64 0}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = !{!21, !19, i64 56}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = !{!38, !40, i64 0}
!38 = !{!"_ZTS16gguf_tensor_info", !39, i64 0, !19, i64 336}
!39 = !{!"_ZTS11ggml_tensor", !40, i64 0, !6, i64 8, !7, i64 16, !7, i64 48, !41, i64 80, !7, i64 84, !14, i64 148, !7, i64 152, !6, i64 232, !19, i64 240, !6, i64 248, !7, i64 256, !6, i64 320, !7, i64 328}
!40 = !{!"_ZTS9ggml_type", !7, i64 0}
!41 = !{!"_ZTS7ggml_op", !7, i64 0}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = !{!21, !19, i64 64}
!45 = !{!21, !19, i64 72}
!46 = !{!38, !19, i64 336}
!47 = distinct !{!47, !17}
!48 = !{!49, !6, i64 8}
!49 = !{!"_ZTS16gguf_init_params", !10, i64 0, !6, i64 8}
!50 = !{!49, !10, i64 0}
!51 = !{!52, !19, i64 0}
!52 = !{!"_ZTS16ggml_init_params", !19, i64 0, !6, i64 8, !10, i64 16}
!53 = !{!52, !6, i64 8}
!54 = !{!52, !10, i64 16}
!55 = !{i64 0, i64 8, !18, i64 8, i64 8, !5, i64 16, i64 1, !9}
!56 = !{!39, !6, i64 248}
!57 = !{!21, !6, i64 80}
!58 = distinct !{!58, !17}


; 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.gguf_reader = type { ptr }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_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] }
%struct.gguf_tensor_info = type { %struct.ggml_tensor, i64 }
%struct.ggml_tensor = type { i32, ptr, [4 x i64], [4 x i64], i32, [16 x i32], i32, [10 x ptr], ptr, i64, ptr, [64 x i8], ptr, [8 x i8] }
%struct.ggml_init_params = type { i64, ptr, i8 }

@stderr = external local_unnamed_addr global ptr, align 8
@.str.15 = external hidden unnamed_addr constant [26 x i8], align 1
@__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params = external hidden unnamed_addr constant [25 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [27 x i8], align 1
@_ZTISt12length_error = external constant ptr
@_ZTISt9bad_alloc = external constant ptr
@.str.23 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [30 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

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: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params(ptr noundef %0, i8 %1, ptr writeonly %2) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %4 = alloca %struct.gguf_reader, align 8
  %5 = alloca %"class.std::vector.22", align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i32, align 4
  %10 = alloca i64, align 8
  %11 = alloca %struct.gguf_tensor_info, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca i32, align 4
  %14 = alloca %struct.ggml_init_params, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  call void @_ZN11gguf_readerC2EP8_IO_FILE(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %0)
  %15 = call noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #11
  call void @_ZN12gguf_contextC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %15) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #10
  call void @_ZNSt6vectorIcSaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %16 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readIcEEbRSt6vectorIT_SaIS2_EEm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 4)
          to label %17 unwind label %22

17:                                               ; preds = %3
  br i1 %16, label %.preheader380, label %19

.preheader380:                                    ; preds = %17
  %18 = call noundef i64 @_ZNKSt6vectorIcSaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %.not302440.not = icmp eq i64 %18, 0
  br i1 %.not302440.not, label %.loopexit565, label %.lr.ph

19:                                               ; preds = %17
  %20 = load ptr, ptr @stderr, align 8, !tbaa !5
  %21 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %20, ptr noundef nonnull @.str.15, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  br label %.thread

22:                                               ; preds = %3
  %23 = landingpad { ptr, i32 }
          cleanup
  %24 = extractvalue { ptr, i32 } %23, 0
  %25 = extractvalue { ptr, i32 } %23, 1
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #10
  br label %486

26:                                               ; preds = %.lr.ph
  %27 = add i32 %.0276441, 1
  %28 = zext i32 %27 to i64
  %29 = call noundef i64 @_ZNKSt6vectorIcSaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %.not302 = icmp ugt i64 %29, %28
  br i1 %.not302, label %.lr.ph, label %.loopexit565, !llvm.loop !9

.lr.ph:                                           ; preds = %.preheader380, %26
  %30 = phi i64 [ %28, %26 ], [ 0, %.preheader380 ]
  %.0276441 = phi i32 [ %27, %26 ], [ 0, %.preheader380 ]
  %31 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %30) #10
  %32 = load i8, ptr %31, align 1, !tbaa !11
  %33 = getelementptr inbounds [5 x i8], ptr @.str.16, i64 0, i64 %30
  %34 = load i8, ptr %33, align 1, !tbaa !11
  %.not = icmp eq i8 %32, %34
  br i1 %.not, label %26, label %35

35:                                               ; preds = %.lr.ph
  %36 = load ptr, ptr @stderr, align 8, !tbaa !5
  %37 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0) #10
  %38 = load i8, ptr %37, align 1, !tbaa !11
  %39 = sext i8 %38 to i32
  %40 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 1) #10
  %41 = load i8, ptr %40, align 1, !tbaa !11
  %42 = sext i8 %41 to i32
  %43 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 2) #10
  %44 = load i8, ptr %43, align 1, !tbaa !11
  %45 = sext i8 %44 to i32
  %46 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIcSaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #10
  %47 = load i8, ptr %46, align 1, !tbaa !11
  %48 = sext i8 %47 to i32
  %49 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str.17, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i32 noundef %39, i32 noundef %42, i32 noundef %45, i32 noundef %48) #12
  br label %.thread

.thread:                                          ; preds = %19, %35
  call void @gguf_free(ptr noundef nonnull %15)
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #10
  br label %485

.loopexit565:                                     ; preds = %26, %.preheader380
  call void @_ZNSt6vectorIcSaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store i64 0, ptr %6, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  store i64 0, ptr %7, align 8, !tbaa !12
  %50 = call noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) %15)
  br i1 %50, label %51, label %.thread337

51:                                               ; preds = %.loopexit565
  %52 = load i32, ptr %15, align 8, !tbaa !14
  %53 = icmp eq i32 %52, 1
  br i1 %53, label %54, label %57

54:                                               ; preds = %51
  %55 = load ptr, ptr @stderr, align 8, !tbaa !5
  %56 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %55, ptr noundef nonnull @.str.18, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  %.pr = load i32, ptr %15, align 8, !tbaa !14
  br label %57

57:                                               ; preds = %54, %51
  %58 = phi i32 [ %.pr, %54 ], [ %52, %51 ]
  %.0243 = phi i8 [ 0, %54 ], [ 1, %51 ]
  %59 = icmp ugt i32 %58, 3
  br i1 %59, label %60, label %63

60:                                               ; preds = %57
  %61 = load ptr, ptr @stderr, align 8, !tbaa !5
  %62 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %61, ptr noundef nonnull @.str.19, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i32 noundef %58, i32 noundef 3) #12
  br label %.thread337

63:                                               ; preds = %57
  %64 = trunc nuw i8 %.0243 to i1
  br i1 %64, label %65, label %.thread337

65:                                               ; preds = %63
  %66 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %7)
  br i1 %66, label %67, label %.thread337

67:                                               ; preds = %65
  %68 = load i64, ptr %7, align 8
  %or.cond = icmp ugt i64 %68, 53624256028225440
  br i1 %or.cond, label %69, label %72

69:                                               ; preds = %67
  %70 = load ptr, ptr @stderr, align 8, !tbaa !5
  %71 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %70, ptr noundef nonnull @.str.20, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %68, i64 noundef 53624256028225440) #12
  br label %.thread337

72:                                               ; preds = %67
  %73 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %6)
  br i1 %73, label %74, label %.thread337

74:                                               ; preds = %72
  %75 = load i64, ptr %6, align 8
  %or.cond14 = icmp ugt i64 %75, 209622091746699450
  br i1 %or.cond14, label %76, label %.preheader376

76:                                               ; preds = %74
  %77 = load ptr, ptr @stderr, align 8, !tbaa !5
  %78 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %77, ptr noundef nonnull @.str.21, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %75, i64 noundef 209622091746699450) #12
  br label %.thread337

.preheader376:                                    ; preds = %74
  %.not548 = icmp eq i64 %75, 0
  br i1 %.not548, label %.loopexit377, label %.lr.ph449

.lr.ph449:                                        ; preds = %.preheader376
  %79 = getelementptr inbounds i8, ptr %15, i64 8
  br label %82

.thread337:                                       ; preds = %.loopexit565, %60, %63, %65, %69, %72, %76
  %80 = load ptr, ptr @stderr, align 8, !tbaa !5
  %81 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %80, ptr noundef nonnull @.str.22, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

82:                                               ; preds = %.lr.ph449, %176
  %.0277448 = phi i64 [ 0, %.lr.ph449 ], [ %177, %176 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  store i32 -1, ptr %9, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  store i64 1, ptr %10, align 8, !tbaa !12
  %83 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %94 unwind label %84

84:                                               ; preds = %82
  %85 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12length_error
          catch ptr @_ZTISt9bad_alloc
  %86 = extractvalue { ptr, i32 } %85, 0
  %87 = extractvalue { ptr, i32 } %85, 1
  %88 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt12length_error) #10
  %89 = icmp eq i32 %87, %88
  br i1 %89, label %90, label %97

90:                                               ; preds = %84
  %91 = call ptr @__cxa_begin_catch(ptr %86) #10
  %92 = load ptr, ptr @stderr, align 8, !tbaa !5
  %93 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %92, ptr noundef nonnull @.str.24, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %.0277448) #12
  invoke void @__cxa_end_catch()
          to label %.critedge313.thread unwind label %108

94:                                               ; preds = %82
  br i1 %83, label %.lr.ph445, label %.critedge313.thread

.lr.ph445:                                        ; preds = %94, %118
  %.0281442 = phi i64 [ %119, %118 ], [ 0, %94 ]
  %95 = call noundef i64 @_ZNKSt6vectorI7gguf_kvSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %79) #10
  %96 = icmp ult i64 %.0281442, %95
  br i1 %96, label %112, label %.critedge

97:                                               ; preds = %84
  %98 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #10
  %99 = icmp eq i32 %87, %98
  br i1 %99, label %100, label %.loopexit378

100:                                              ; preds = %97
  %101 = call ptr @__cxa_begin_catch(ptr %86) #10
  %102 = load ptr, ptr @stderr, align 8, !tbaa !5
  %103 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %102, ptr noundef nonnull @.str.23, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %.0277448) #12
  invoke void @__cxa_end_catch()
          to label %.critedge313.thread unwind label %104

104:                                              ; preds = %100
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  %107 = extractvalue { ptr, i32 } %105, 1
  br label %.loopexit378

108:                                              ; preds = %90
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  %111 = extractvalue { ptr, i32 } %109, 1
  br label %.loopexit378

112:                                              ; preds = %.lr.ph445
  %113 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNSt6vectorI7gguf_kvSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %.0281442) #10
  %114 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %113) #10
  br i1 %114, label %.thread553, label %118

.thread553:                                       ; preds = %112
  %115 = load ptr, ptr @stderr, align 8, !tbaa !5
  %116 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  %117 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %115, ptr noundef nonnull @.str.25, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %116, i64 noundef %.0281442, i64 noundef %.0277448) #12
  br label %.critedge313.thread

118:                                              ; preds = %112
  %119 = add nuw i64 %.0281442, 1
  br i1 %83, label %.lr.ph445, label %.critedge313.thread, !llvm.loop !27

.critedge:                                        ; preds = %.lr.ph445
  %120 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %121 unwind label %129

121:                                              ; preds = %.critedge
  %122 = load i32, ptr %9, align 4, !tbaa !25
  %123 = icmp eq i32 %122, 9
  %.not326 = xor i1 %123, true
  %brmerge.not = and i1 %120, %123
  %.mux = and i1 %120, %.not326
  br i1 %brmerge.not, label %124, label %.critedge315

124:                                              ; preds = %121
  %125 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %126 unwind label %129

126:                                              ; preds = %124
  br i1 %125, label %127, label %.critedge313.thread

127:                                              ; preds = %126
  %128 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %.critedge315 unwind label %129

129:                                              ; preds = %168, %165, %162, %159, %156, %153, %150, %147, %144, %141, %138, %135, %127, %124, %.critedge
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  %132 = extractvalue { ptr, i32 } %130, 1
  br label %.loopexit378

.critedge315:                                     ; preds = %121, %127
  %.8251.in = phi i1 [ %.mux, %121 ], [ %128, %127 ]
  br i1 %.8251.in, label %133, label %.critedge313.thread

133:                                              ; preds = %.critedge315
  %134 = load i32, ptr %9, align 4, !tbaa !25
  switch i32 %134, label %171 [
    i32 0, label %135
    i32 1, label %138
    i32 2, label %141
    i32 3, label %144
    i32 4, label %147
    i32 5, label %150
    i32 6, label %153
    i32 7, label %156
    i32 8, label %159
    i32 10, label %162
    i32 11, label %165
    i32 12, label %168
  ]

135:                                              ; preds = %133
  %136 = load i64, ptr %10, align 8, !tbaa !12
  %137 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIhEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %136)
          to label %176 unwind label %129

138:                                              ; preds = %133
  %139 = load i64, ptr %10, align 8, !tbaa !12
  %140 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIaEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %139)
          to label %176 unwind label %129

141:                                              ; preds = %133
  %142 = load i64, ptr %10, align 8, !tbaa !12
  %143 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperItEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %142)
          to label %176 unwind label %129

144:                                              ; preds = %133
  %145 = load i64, ptr %10, align 8, !tbaa !12
  %146 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIsEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %145)
          to label %176 unwind label %129

147:                                              ; preds = %133
  %148 = load i64, ptr %10, align 8, !tbaa !12
  %149 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIjEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %148)
          to label %176 unwind label %129

150:                                              ; preds = %133
  %151 = load i64, ptr %10, align 8, !tbaa !12
  %152 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIiEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %151)
          to label %176 unwind label %129

153:                                              ; preds = %133
  %154 = load i64, ptr %10, align 8, !tbaa !12
  %155 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIfEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %154)
          to label %176 unwind label %129

156:                                              ; preds = %133
  %157 = load i64, ptr %10, align 8, !tbaa !12
  %158 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIbEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %157)
          to label %176 unwind label %129

159:                                              ; preds = %133
  %160 = load i64, ptr %10, align 8, !tbaa !12
  %161 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRK11gguf_readerRSt6vectorI7gguf_kvSaISA_EERKS5_bm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %160)
          to label %176 unwind label %129

162:                                              ; preds = %133
  %163 = load i64, ptr %10, align 8, !tbaa !12
  %164 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperImEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %163)
          to label %176 unwind label %129

165:                                              ; preds = %133
  %166 = load i64, ptr %10, align 8, !tbaa !12
  %167 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIlEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %166)
          to label %176 unwind label %129

168:                                              ; preds = %133
  %169 = load i64, ptr %10, align 8, !tbaa !12
  %170 = invoke noundef zeroext i1 @_Z24gguf_read_emplace_helperIdEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(32) %8, i1 noundef zeroext %123, i64 noundef %169)
          to label %176 unwind label %129

171:                                              ; preds = %133
  %172 = load ptr, ptr @stderr, align 8, !tbaa !5
  %173 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  %174 = load i32, ptr %9, align 4, !tbaa !25
  %175 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %172, ptr noundef nonnull @.str.26, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef %173, i32 noundef %174) #12
  br label %176

.critedge313.thread:                              ; preds = %.critedge315, %126, %94, %118, %100, %90, %.thread553
  %.10.ph.shrunk = phi i1 [ false, %.thread553 ], [ false, %90 ], [ false, %100 ], [ %83, %118 ], [ %83, %94 ], [ false, %126 ], [ false, %.critedge315 ]
  %.10.ph = zext i1 %.10.ph.shrunk to i8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  br label %.loopexit377

176:                                              ; preds = %168, %165, %162, %159, %156, %153, %150, %147, %144, %141, %138, %135, %171
  %.9252.shrunk = phi i1 [ false, %171 ], [ %137, %135 ], [ %140, %138 ], [ %143, %141 ], [ %146, %144 ], [ %149, %147 ], [ %152, %150 ], [ %155, %153 ], [ %158, %156 ], [ %161, %159 ], [ %164, %162 ], [ %167, %165 ], [ %170, %168 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  %177 = add nuw nsw i64 %.0277448, 1
  %178 = load i64, ptr %6, align 8
  %179 = icmp slt i64 %177, %178
  %180 = select i1 %.9252.shrunk, i1 %179, i1 false
  br i1 %180, label %82, label %.loopexit377.loopexit, !llvm.loop !28

.loopexit378:                                     ; preds = %97, %129, %108, %104
  %.0259 = phi i32 [ %132, %129 ], [ %111, %108 ], [ %107, %104 ], [ %87, %97 ]
  %.0255 = phi ptr [ %131, %129 ], [ %110, %108 ], [ %106, %104 ], [ %86, %97 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  br label %484

.loopexit377.loopexit:                            ; preds = %176
  %.9252 = zext i1 %.9252.shrunk to i8
  br label %.loopexit377

.loopexit377:                                     ; preds = %.loopexit377.loopexit, %.preheader376, %.critedge313.thread
  %.11 = phi i8 [ %.10.ph, %.critedge313.thread ], [ %.0243, %.preheader376 ], [ %.9252, %.loopexit377.loopexit ]
  %181 = trunc nuw i8 %.11 to i1
  br i1 %181, label %185, label %182

182:                                              ; preds = %.loopexit377
  %183 = load ptr, ptr @stderr, align 8, !tbaa !5
  %184 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %183, ptr noundef nonnull @.str.27, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

185:                                              ; preds = %.loopexit377
  %186 = getelementptr inbounds i8, ptr %15, i64 8
  %187 = call noundef i64 @_ZNKSt6vectorI7gguf_kvSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %186) #10
  %188 = load i64, ptr %6, align 8, !tbaa !12
  %189 = icmp eq i64 %187, %188
  br i1 %189, label %191, label %190

190:                                              ; preds = %185
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str.28, i32 noundef 455, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.30) #13
  unreachable

191:                                              ; preds = %185
  %192 = call i64 @gguf_find_key(ptr noundef nonnull %15, ptr noundef nonnull @.str.31)
  %193 = and i64 %192, 4294967295
  %194 = icmp eq i64 %193, 4294967295
  br i1 %194, label %.thread343, label %196

.thread343:                                       ; preds = %191
  %195 = getelementptr inbounds i8, ptr %15, i64 56
  store i64 32, ptr %195, align 8, !tbaa !29
  br label %202

196:                                              ; preds = %191
  %sext = shl i64 %192, 32
  %197 = ashr exact i64 %sext, 32
  %198 = call i32 @gguf_get_val_u32(ptr noundef nonnull %15, i64 noundef %197)
  %199 = zext i32 %198 to i64
  %200 = getelementptr inbounds i8, ptr %15, i64 56
  store i64 %199, ptr %200, align 8, !tbaa !29
  %201 = icmp eq i32 %198, 0
  br i1 %201, label %.critedge317, label %202

202:                                              ; preds = %.thread343, %196
  %203 = phi ptr [ %195, %.thread343 ], [ %200, %196 ]
  %204 = phi i64 [ 32, %.thread343 ], [ %199, %196 ]
  %205 = add nuw nsw i64 %204, 4294967295
  %206 = and i64 %205, %204
  %.not303 = icmp eq i64 %206, 0
  br i1 %.not303, label %.preheader373, label %.critedge317

.preheader373:                                    ; preds = %202
  %207 = load i64, ptr %7, align 8
  %208 = icmp sgt i64 %207, 0
  br i1 %208, label %.lr.ph469, label %.loopexit374

.lr.ph469:                                        ; preds = %.preheader373
  %209 = getelementptr inbounds i8, ptr %11, i64 256
  %210 = getelementptr inbounds i8, ptr %15, i64 32
  %211 = getelementptr inbounds i8, ptr %11, i64 16
  %212 = getelementptr inbounds i8, ptr %11, i64 24
  %213 = getelementptr inbounds i8, ptr %11, i64 32
  %214 = getelementptr inbounds i8, ptr %11, i64 40
  %215 = getelementptr inbounds i8, ptr %11, i64 48
  %216 = getelementptr inbounds i8, ptr %11, i64 56
  %217 = getelementptr inbounds i8, ptr %11, i64 336
  %218 = getelementptr inbounds i8, ptr %11, i64 24
  %219 = getelementptr inbounds i8, ptr %11, i64 64
  %220 = getelementptr inbounds i8, ptr %11, i64 32
  %221 = getelementptr inbounds i8, ptr %11, i64 72
  br label %225

.critedge317:                                     ; preds = %202, %196
  %222 = phi i64 [ %204, %202 ], [ 0, %196 ]
  %223 = load ptr, ptr @stderr, align 8, !tbaa !5
  %224 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %223, ptr noundef nonnull @.str.32, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %222) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

225:                                              ; preds = %.lr.ph469, %343
  %.0282466 = phi i64 [ 0, %.lr.ph469 ], [ %345, %343 ]
  call void @llvm.lifetime.start.p0(i64 344, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  %226 = invoke noundef zeroext i1 @_ZNK11gguf_reader4readERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %227 unwind label %229

227:                                              ; preds = %225
  %228 = zext i1 %226 to i8
  br label %239

229:                                              ; preds = %225
  %230 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt12length_error
          catch ptr @_ZTISt9bad_alloc
  %231 = extractvalue { ptr, i32 } %230, 0
  %232 = extractvalue { ptr, i32 } %230, 1
  %233 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt12length_error) #10
  %234 = icmp eq i32 %232, %233
  br i1 %234, label %235, label %245

235:                                              ; preds = %229
  %236 = call ptr @__cxa_begin_catch(ptr %231) #10
  %237 = load ptr, ptr @stderr, align 8, !tbaa !5
  %238 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %237, ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %.0282466) #12
  invoke void @__cxa_end_catch()
          to label %239 unwind label %256

239:                                              ; preds = %248, %235, %227
  %.13 = phi i8 [ %228, %227 ], [ 0, %235 ], [ 0, %248 ]
  %240 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  %241 = icmp ult i64 %240, 64
  br i1 %241, label %260, label %.thread344

.thread344:                                       ; preds = %239
  %242 = load ptr, ptr @stderr, align 8, !tbaa !5
  %243 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  %244 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %242, ptr noundef nonnull @.str.35, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %.0282466, i64 noundef %243, i32 noundef 64) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br label %.thread367

245:                                              ; preds = %229
  %246 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9bad_alloc) #10
  %247 = icmp eq i32 %232, %246
  br i1 %247, label %248, label %.loopexit375

248:                                              ; preds = %245
  %249 = call ptr @__cxa_begin_catch(ptr %231) #10
  %250 = load ptr, ptr @stderr, align 8, !tbaa !5
  %251 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %250, ptr noundef nonnull @.str.33, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, i64 noundef %.0282466) #12
  invoke void @__cxa_end_catch()
          to label %239 unwind label %252

252:                                              ; preds = %248
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  %255 = extractvalue { ptr, i32 } %253, 1
  br label %.loopexit375

256:                                              ; preds = %235
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  %259 = extractvalue { ptr, i32 } %257, 1
  br label %.loopexit375

260:                                              ; preds = %239
  %261 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  %262 = invoke ptr @ggml_set_name(ptr noundef nonnull %11, ptr noundef %261)
          to label %.preheader unwind label %266

.preheader:                                       ; preds = %260
  %263 = trunc nuw i8 %.13 to i1
  %264 = icmp ne i64 %.0282466, 0
  %265 = select i1 %263, i1 %264, i1 false
  br i1 %265, label %.lr.ph452.split, label %.loopexit

266:                                              ; preds = %260
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  %269 = extractvalue { ptr, i32 } %267, 1
  br label %.loopexit375

.lr.ph452.split:                                  ; preds = %.preheader, %275
  %.0284451 = phi i64 [ %276, %275 ], [ 0, %.preheader ]
  %270 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %210, i64 noundef %.0284451) #10
  %271 = getelementptr inbounds i8, ptr %270, i64 256
  %272 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %209, ptr noundef nonnull dereferenceable(1) %271) #14
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %.loopexit.thread, label %275

.loopexit.thread:                                 ; preds = %.lr.ph452.split
  %.pre = load ptr, ptr @stderr, align 8, !tbaa !5
  %274 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.pre, ptr noundef nonnull @.str.36, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i64 noundef %.0284451, i64 noundef %.0282466) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br label %.thread367

275:                                              ; preds = %.lr.ph452.split
  %276 = add nuw nsw i64 %.0284451, 1
  %exitcond.not = icmp eq i64 %276, %.0282466
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph452.split, !llvm.loop !30

.loopexit:                                        ; preds = %275, %.preheader
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  %277 = trunc nuw i8 %.13 to i1
  br i1 %277, label %278, label %.thread367

.loopexit375:                                     ; preds = %245, %266, %256, %252
  %.1260 = phi i32 [ %269, %266 ], [ %259, %256 ], [ %255, %252 ], [ %232, %245 ]
  %.1256 = phi ptr [ %268, %266 ], [ %258, %256 ], [ %254, %252 ], [ %231, %245 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 344, ptr nonnull %11) #10
  br label %484

278:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #10
  store i32 -1, ptr %13, align 4, !tbaa !31
  %279 = call noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) %13)
  %280 = load i32, ptr %13, align 4, !tbaa !31
  %281 = icmp ugt i32 %280, 4
  br i1 %281, label %282, label %285

282:                                              ; preds = %278
  %283 = load ptr, ptr @stderr, align 8, !tbaa !5
  %284 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %283, ptr noundef nonnull @.str.37, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i32 noundef %280, i32 noundef 4) #12
  br label %314

285:                                              ; preds = %278
  br i1 %279, label %.lr.ph457, label %.thread560

.lr.ph457:                                        ; preds = %285, %.thread348
  %indvars.iv = phi i64 [ %indvars.iv.next, %.thread348 ], [ 0, %285 ]
  %.16455 = phi i8 [ %.17350, %.thread348 ], [ 1, %285 ]
  %286 = getelementptr inbounds [4 x i64], ptr %211, i64 0, i64 %indvars.iv
  store i64 1, ptr %286, align 8, !tbaa !12
  %287 = load i32, ptr %13, align 4, !tbaa !31
  %288 = zext i32 %287 to i64
  %289 = icmp ult i64 %indvars.iv, %288
  br i1 %289, label %290, label %.thread348

290:                                              ; preds = %.lr.ph457
  %291 = call noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %286)
  %292 = zext i1 %291 to i8
  %.pr347 = load i64, ptr %286, align 8, !tbaa !12
  %293 = icmp slt i64 %.pr347, 0
  br i1 %293, label %.thread359, label %.thread348

.thread359:                                       ; preds = %290
  %294 = trunc nuw nsw i64 %indvars.iv to i32
  %295 = load ptr, ptr @stderr, align 8, !tbaa !5
  %296 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %295, ptr noundef nonnull @.str.38, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i32 noundef %294, i64 noundef %.pr347) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  br label %.thread367

.thread348:                                       ; preds = %.lr.ph457, %290
  %.17350 = phi i8 [ %292, %290 ], [ %.16455, %.lr.ph457 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %297 = trunc nuw i8 %.17350 to i1
  %298 = icmp ult i64 %indvars.iv, 3
  %299 = and i1 %298, %297
  br i1 %299, label %.lr.ph457, label %._crit_edge458, !llvm.loop !32

._crit_edge458:                                   ; preds = %.thread348
  %300 = trunc nuw i8 %.17350 to i1
  br i1 %300, label %301, label %.thread560

301:                                              ; preds = %._crit_edge458
  %302 = load i64, ptr %212, align 8, !tbaa !12
  %303 = sdiv i64 9223372036854775807, %302
  %304 = load i64, ptr %211, align 8, !tbaa !12
  %.not304 = icmp sgt i64 %303, %304
  %.pre544 = load i64, ptr %213, align 8, !tbaa !12
  br i1 %.not304, label %305, label %._crit_edge545

._crit_edge545:                                   ; preds = %301
  %.pre546 = load i64, ptr %214, align 8, !tbaa !12
  br label %split

305:                                              ; preds = %301
  %306 = sdiv i64 9223372036854775807, %.pre544
  %307 = mul nsw i64 %304, %302
  %.not305 = icmp sgt i64 %306, %307
  %.pre547 = load i64, ptr %214, align 8, !tbaa !12
  br i1 %.not305, label %308, label %split

308:                                              ; preds = %305
  %309 = sdiv i64 9223372036854775807, %.pre547
  %310 = mul nsw i64 %.pre544, %307
  %.not306 = icmp sgt i64 %309, %310
  br i1 %.not306, label %315, label %split

split:                                            ; preds = %308, %305, %._crit_edge545
  %311 = phi i64 [ %.pre546, %._crit_edge545 ], [ %.pre547, %305 ], [ %.pre547, %308 ]
  %312 = load ptr, ptr @stderr, align 8, !tbaa !5
  %313 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %312, ptr noundef nonnull @.str.39, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i64 noundef %304, i64 noundef %302, i64 noundef %.pre544, i64 noundef %311, i64 noundef 9223372036854775807) #12
  br label %314

314:                                              ; preds = %split, %282
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  br label %.thread367

.thread560:                                       ; preds = %._crit_edge458, %285
  %.16.lcssa558.ph = phi i8 [ %.17350, %._crit_edge458 ], [ 0, %285 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  br label %.thread367

315:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #10
  %316 = call noundef zeroext i1 @_ZNK11gguf_reader4readER9ggml_type(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 4 dereferenceable(4) %11)
  %317 = load i32, ptr %11, align 8
  %or.cond18 = icmp ugt i32 %317, 38
  br i1 %or.cond18, label %318, label %322

318:                                              ; preds = %315
  %319 = load ptr, ptr @stderr, align 8, !tbaa !5
  %320 = call ptr @ggml_type_name(i32 noundef %317)
  %321 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %319, ptr noundef nonnull @.str.40, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i32 noundef %317, ptr noundef %320) #12
  br label %.thread367

322:                                              ; preds = %315
  %323 = call i64 @ggml_type_size(i32 noundef %317)
  %324 = load i32, ptr %11, align 8, !tbaa !33
  %325 = call i64 @ggml_blck_size(i32 noundef %324)
  %326 = icmp eq i64 %325, 0
  br i1 %326, label %337, label %327

327:                                              ; preds = %322
  %328 = load i64, ptr %211, align 8, !tbaa !12
  %329 = srem i64 %328, %325
  %330 = sdiv i64 %328, %325
  %.not307 = icmp eq i64 %329, 0
  br i1 %.not307, label %331, label %337

331:                                              ; preds = %327
  store i64 %323, ptr %215, align 8, !tbaa !12
  %332 = mul i64 %330, %323
  store i64 %332, ptr %216, align 8, !tbaa !12
  %333 = load i64, ptr %218, align 8, !tbaa !12
  %334 = mul i64 %333, %332
  store i64 %334, ptr %219, align 8, !tbaa !12
  %335 = load i64, ptr %220, align 8, !tbaa !12
  %336 = mul i64 %335, %334
  store i64 %336, ptr %221, align 8, !tbaa !12
  br i1 %316, label %343, label %.thread367

337:                                              ; preds = %322, %327
  %338 = load ptr, ptr @stderr, align 8, !tbaa !5
  %339 = load i32, ptr %11, align 8, !tbaa !33
  %340 = call ptr @ggml_type_name(i32 noundef %339)
  %341 = load i64, ptr %211, align 8, !tbaa !12
  %342 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %338, ptr noundef nonnull @.str.41, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %209, i32 noundef %339, ptr noundef %340, i64 noundef %341, i64 noundef %325) #12
  br label %.thread367

343:                                              ; preds = %331
  %344 = call noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %217)
  call void @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %210, ptr noundef nonnull align 8 dereferenceable(344) %11)
  call void @llvm.lifetime.end.p0(i64 344, ptr nonnull %11) #10
  %345 = add nuw nsw i64 %.0282466, 1
  %346 = load i64, ptr %7, align 8
  %347 = icmp slt i64 %345, %346
  %348 = select i1 %344, i1 %347, i1 false
  br i1 %348, label %225, label %.loopexit374.loopexit, !llvm.loop !38

.thread367:                                       ; preds = %.loopexit, %331, %.loopexit.thread, %.thread560, %318, %337, %314, %.thread344, %.thread359
  %.21.ph = phi i8 [ 0, %.thread359 ], [ 0, %.thread344 ], [ 0, %314 ], [ 0, %337 ], [ 0, %318 ], [ 0, %.loopexit.thread ], [ %.16.lcssa558.ph, %.thread560 ], [ %.13, %.loopexit ], [ 0, %331 ]
  call void @llvm.lifetime.end.p0(i64 344, ptr nonnull %11) #10
  br label %.loopexit374

.loopexit374.loopexit:                            ; preds = %343
  %349 = zext i1 %344 to i8
  br label %.loopexit374

.loopexit374:                                     ; preds = %.loopexit374.loopexit, %.preheader373, %.thread367
  %.22 = phi i8 [ %.21.ph, %.thread367 ], [ %.11, %.preheader373 ], [ %349, %.loopexit374.loopexit ]
  %350 = trunc nuw i8 %.22 to i1
  br i1 %350, label %354, label %351

351:                                              ; preds = %.loopexit374
  %352 = load ptr, ptr @stderr, align 8, !tbaa !5
  %353 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %352, ptr noundef nonnull @.str.42, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

354:                                              ; preds = %.loopexit374
  %355 = getelementptr inbounds i8, ptr %15, i64 32
  %356 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %357 = load i64, ptr %7, align 8, !tbaa !12
  %358 = icmp eq i64 %356, %357
  br i1 %358, label %360, label %359

359:                                              ; preds = %354
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str.28, i32 noundef 589, ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.43) #13
  unreachable

360:                                              ; preds = %354
  %361 = call i64 @ftell(ptr noundef %0)
  %362 = load i64, ptr %203, align 8, !tbaa !29
  %363 = add i64 %361, -1
  %364 = add i64 %363, %362
  %365 = sub i64 0, %362
  %366 = and i64 %364, %365
  %367 = call i32 @fseek(ptr noundef %0, i64 noundef %366, i32 noundef 0)
  %.not308 = icmp eq i32 %367, 0
  br i1 %.not308, label %371, label %368

368:                                              ; preds = %360
  %369 = load ptr, ptr @stderr, align 8, !tbaa !5
  %370 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %369, ptr noundef nonnull @.str.44, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

371:                                              ; preds = %360
  %372 = call i64 @ftell(ptr noundef %0)
  %373 = getelementptr inbounds i8, ptr %15, i64 64
  store i64 %372, ptr %373, align 8, !tbaa !39
  %374 = getelementptr inbounds i8, ptr %15, i64 72
  store i64 0, ptr %374, align 8, !tbaa !40
  %375 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %.not310471.not = icmp eq i64 %375, 0
  br i1 %.not310471.not, label %.critedge319, label %.lr.ph474

.lr.ph474:                                        ; preds = %371, %380
  %.0279472 = phi i64 [ %389, %380 ], [ 0, %371 ]
  %376 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %.0279472) #10
  %377 = getelementptr inbounds i8, ptr %376, i64 336
  %378 = load i64, ptr %377, align 8, !tbaa !41
  %379 = load i64, ptr %374, align 8, !tbaa !40
  %.not309 = icmp eq i64 %378, %379
  br i1 %.not309, label %380, label %391

380:                                              ; preds = %.lr.ph474
  %381 = call i64 @ggml_nbytes(ptr noundef nonnull %376)
  %382 = load i64, ptr %203, align 8, !tbaa !29
  %383 = add i64 %381, -1
  %384 = add i64 %383, %382
  %385 = sub i64 0, %382
  %386 = and i64 %384, %385
  %387 = load i64, ptr %374, align 8, !tbaa !40
  %388 = add i64 %386, %387
  store i64 %388, ptr %374, align 8, !tbaa !40
  %389 = add nuw i64 %.0279472, 1
  %390 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %.not310 = icmp ult i64 %389, %390
  br i1 %.not310, label %.lr.ph474, label %.critedge319, !llvm.loop !42

391:                                              ; preds = %.lr.ph474
  %392 = load ptr, ptr @stderr, align 8, !tbaa !5
  %393 = getelementptr inbounds i8, ptr %376, i64 256
  %394 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %392, ptr noundef nonnull @.str.45, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params, ptr noundef nonnull %393, i64 noundef %378, i64 noundef %379) #12
  %395 = load ptr, ptr @stderr, align 8, !tbaa !5
  %396 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %395, ptr noundef nonnull @.str.46, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

.critedge319:                                     ; preds = %380, %371
  %.not311 = icmp eq ptr %2, null
  br i1 %.not311, label %483, label %397

397:                                              ; preds = %.critedge319
  %398 = trunc i8 %1 to i1
  %399 = load i64, ptr %7, align 8, !tbaa !12
  br i1 %398, label %400, label %403

400:                                              ; preds = %397
  %401 = call i64 @ggml_tensor_overhead()
  %402 = mul i64 %401, %399
  br label %409

403:                                              ; preds = %397
  %404 = add nsw i64 %399, 1
  %405 = call i64 @ggml_tensor_overhead()
  %406 = mul i64 %404, %405
  %407 = load i64, ptr %374, align 8, !tbaa !40
  %408 = add i64 %406, %407
  br label %409

409:                                              ; preds = %403, %400
  %410 = phi i64 [ %402, %400 ], [ %408, %403 ]
  %411 = and i8 %1, 1
  store i64 %410, ptr %14, align 8, !tbaa !12
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  store ptr null, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !5
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 16
  store i8 %411, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !43
  %412 = call ptr @ggml_init(ptr noundef nonnull byval(%struct.ggml_init_params) align 8 %14)
  store ptr %412, ptr %2, align 8, !tbaa !5
  %413 = icmp eq ptr %412, null
  br i1 %413, label %414, label %417

414:                                              ; preds = %409
  %415 = load ptr, ptr @stderr, align 8, !tbaa !5
  %416 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %415, ptr noundef nonnull @.str.47, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  br label %.critedge325

417:                                              ; preds = %409
  br i1 %398, label %431, label %418

418:                                              ; preds = %417
  %419 = load i64, ptr %374, align 8, !tbaa !40
  %420 = call ptr @ggml_new_tensor_1d(ptr noundef nonnull %412, i32 noundef 24, i64 noundef %419)
  %.not312 = icmp eq ptr %420, null
  br i1 %.not312, label %.critedge321.thread, label %.critedge321

.critedge321:                                     ; preds = %418
  %421 = call ptr @ggml_set_name(ptr noundef nonnull %420, ptr noundef nonnull @.str.48)
  %422 = getelementptr inbounds i8, ptr %420, i64 248
  %423 = load ptr, ptr %422, align 8, !tbaa !45
  %424 = load i64, ptr %374, align 8, !tbaa !40
  %425 = call noundef zeroext i1 @_ZNK11gguf_reader4readEPvm(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %423, i64 noundef %424)
  br i1 %425, label %428, label %.critedge321.thread

.critedge321.thread:                              ; preds = %418, %.critedge321
  %426 = load ptr, ptr @stderr, align 8, !tbaa !5
  %427 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %426, ptr noundef nonnull @.str.49, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @ggml_free(ptr noundef nonnull %412)
  store ptr null, ptr %2, align 8, !tbaa !5
  br label %.critedge325

428:                                              ; preds = %.critedge321
  %429 = load ptr, ptr %422, align 8, !tbaa !45
  %430 = getelementptr inbounds i8, ptr %15, i64 80
  store ptr %429, ptr %430, align 8, !tbaa !46
  br label %431

431:                                              ; preds = %428, %417
  %.0254 = phi ptr [ null, %417 ], [ %420, %428 ]
  %.23 = phi i8 [ %.22, %417 ], [ 1, %428 ]
  call void @ggml_set_no_alloc(ptr noundef nonnull %412, i1 noundef zeroext true)
  %432 = trunc nuw i8 %.23 to i1
  %433 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %.not481 = icmp eq i64 %433, 0
  br i1 %.not481, label %.critedge323, label %.lr.ph478

.lr.ph478:                                        ; preds = %431
  %434 = getelementptr inbounds i8, ptr %.0254, i64 248
  %435 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef 0) #10
  %436 = load i32, ptr %435, align 8, !tbaa !33
  %437 = getelementptr inbounds i8, ptr %435, i64 16
  %438 = call ptr @ggml_new_tensor(ptr noundef nonnull %412, i32 noundef %436, i32 noundef 4, ptr noundef nonnull %437)
  %439 = icmp ne ptr %438, null
  %440 = select i1 %432, i1 %439, i1 false
  br i1 %398, label %.lr.ph478.split.us.preheader, label %.lr.ph478.split.preheader

.lr.ph478.split.preheader:                        ; preds = %.lr.ph478
  br i1 %440, label %441, label %.critedge323.thread

441:                                              ; preds = %.lr.ph478.split.preheader
  %442 = getelementptr inbounds i8, ptr %435, i64 256
  %443 = call ptr @ggml_set_name(ptr noundef nonnull %438, ptr noundef nonnull %442)
  %444 = load ptr, ptr %434, align 8, !tbaa !45
  %445 = getelementptr inbounds i8, ptr %435, i64 336
  %446 = load i64, ptr %445, align 8, !tbaa !41
  %447 = getelementptr inbounds i8, ptr %444, i64 %446
  %448 = getelementptr inbounds i8, ptr %438, i64 248
  store ptr %447, ptr %448, align 8, !tbaa !45
  %449 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %450 = icmp ugt i64 %449, 1
  br i1 %450, label %.lr.ph478.split, label %.critedge480

.lr.ph478.split.us.preheader:                     ; preds = %.lr.ph478
  br i1 %440, label %451, label %.critedge323.thread

451:                                              ; preds = %.lr.ph478.split.us.preheader
  %452 = getelementptr inbounds i8, ptr %435, i64 256
  %453 = call ptr @ggml_set_name(ptr noundef nonnull %438, ptr noundef nonnull %452)
  %454 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %455 = icmp ugt i64 %454, 1
  br i1 %455, label %.lr.ph478.split.us, label %.critedge480

.lr.ph478.split.us:                               ; preds = %451, %460
  %.0253475.us = phi i64 [ %463, %460 ], [ 1, %451 ]
  %456 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %.0253475.us) #10
  %457 = load i32, ptr %456, align 8, !tbaa !33
  %458 = getelementptr inbounds i8, ptr %456, i64 16
  %459 = call ptr @ggml_new_tensor(ptr noundef nonnull %412, i32 noundef %457, i32 noundef 4, ptr noundef nonnull %458)
  %.not550 = icmp eq ptr %459, null
  br i1 %.not550, label %.critedge323.thread, label %460

460:                                              ; preds = %.lr.ph478.split.us
  %461 = getelementptr inbounds i8, ptr %456, i64 256
  %462 = call ptr @ggml_set_name(ptr noundef nonnull %459, ptr noundef nonnull %461)
  %463 = add nuw i64 %.0253475.us, 1
  %464 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %465 = icmp ult i64 %463, %464
  br i1 %465, label %.lr.ph478.split.us, label %.critedge480, !llvm.loop !47

.lr.ph478.split:                                  ; preds = %441, %470
  %.0253475 = phi i64 [ %478, %470 ], [ 1, %441 ]
  %466 = call noundef nonnull align 8 dereferenceable(344) ptr @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %.0253475) #10
  %467 = load i32, ptr %466, align 8, !tbaa !33
  %468 = getelementptr inbounds i8, ptr %466, i64 16
  %469 = call ptr @ggml_new_tensor(ptr noundef nonnull %412, i32 noundef %467, i32 noundef 4, ptr noundef nonnull %468)
  %.not549 = icmp eq ptr %469, null
  br i1 %.not549, label %.critedge323.thread, label %470

470:                                              ; preds = %.lr.ph478.split
  %471 = getelementptr inbounds i8, ptr %466, i64 256
  %472 = call ptr @ggml_set_name(ptr noundef nonnull %469, ptr noundef nonnull %471)
  %473 = load ptr, ptr %434, align 8, !tbaa !45
  %474 = getelementptr inbounds i8, ptr %466, i64 336
  %475 = load i64, ptr %474, align 8, !tbaa !41
  %476 = getelementptr inbounds i8, ptr %473, i64 %475
  %477 = getelementptr inbounds i8, ptr %469, i64 248
  store ptr %476, ptr %477, align 8, !tbaa !45
  %478 = add nuw i64 %.0253475, 1
  %479 = call noundef i64 @_ZNKSt6vectorI16gguf_tensor_infoSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %480 = icmp ult i64 %478, %479
  br i1 %480, label %.lr.ph478.split, label %.critedge480, !llvm.loop !49

.critedge323:                                     ; preds = %431
  br i1 %432, label %.critedge480, label %.critedge323.thread

.critedge323.thread:                              ; preds = %.lr.ph478.split, %.lr.ph478.split.us, %.lr.ph478.split.preheader, %.lr.ph478.split.us.preheader, %.critedge323
  %481 = load ptr, ptr @stderr, align 8, !tbaa !5
  %482 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %481, ptr noundef nonnull @.str.50, ptr noundef nonnull @__func__._Z24gguf_init_from_file_implP8_IO_FILE16gguf_init_params) #12
  call void @ggml_free(ptr noundef nonnull %412)
  store ptr null, ptr %2, align 8, !tbaa !5
  br label %.critedge325

.critedge480:                                     ; preds = %470, %460, %441, %451, %.critedge323
  call void @ggml_set_no_alloc(ptr noundef nonnull %412, i1 noundef zeroext %398)
  br label %483

.critedge325:                                     ; preds = %.critedge321.thread, %.critedge323.thread, %414
  call void @gguf_free(ptr noundef nonnull %15)
  br label %483

483:                                              ; preds = %391, %.critedge319, %.critedge480, %.critedge325, %.critedge317, %368, %351, %182, %.thread337
  %.8 = phi ptr [ null, %368 ], [ null, %391 ], [ null, %351 ], [ null, %182 ], [ null, %.thread337 ], [ null, %.critedge317 ], [ null, %.critedge325 ], [ %15, %.critedge480 ], [ %15, %.critedge319 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %485

484:                                              ; preds = %.loopexit375, %.loopexit378
  %.2261 = phi i32 [ %.1260, %.loopexit375 ], [ %.0259, %.loopexit378 ]
  %.2257 = phi ptr [ %.1256, %.loopexit375 ], [ %.0255, %.loopexit378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %486

485:                                              ; preds = %.thread, %483
  %.9 = phi ptr [ %.8, %483 ], [ null, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  ret ptr %.9

486:                                              ; preds = %484, %22
  %.3262 = phi i32 [ %.2261, %484 ], [ %25, %22 ]
  %.3258 = phi ptr [ %.2257, %484 ], [ %24, %22 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  %487 = insertvalue { ptr, i32 } poison, ptr %.3258, 0
  %488 = insertvalue { ptr, i32 } %487, i32 %.3262, 1
  resume { ptr, i32 } %488
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @gguf_free(ptr noundef) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readIjEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readIlEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #6

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readER9gguf_type(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readImEEbRT_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIhEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIaEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperItEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIsEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIjEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIiEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIfEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIbEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRK11gguf_readerRSt6vectorI7gguf_kvSaISA_EERKS5_bm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperImEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIlEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z24gguf_read_emplace_helperIdEbRK11gguf_readerRSt6vectorI7gguf_kvSaIS4_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEbm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: noreturn
declare void @ggml_abort(ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local i64 @gguf_find_key(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local i32 @gguf_get_val_u32(ptr noundef, i64 noundef) local_unnamed_addr #3

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

declare ptr @ggml_set_name(ptr noundef, ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readER9ggml_type(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

declare ptr @ggml_type_name(i32 noundef) local_unnamed_addr #8

declare i64 @ggml_type_size(i32 noundef) local_unnamed_addr #8

declare i64 @ggml_blck_size(i32 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI16gguf_tensor_infoSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(344)) local_unnamed_addr #3 align 2

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

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

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

declare i64 @ggml_nbytes(ptr noundef) local_unnamed_addr #8

declare i64 @ggml_tensor_overhead() local_unnamed_addr #8

declare ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8) local_unnamed_addr #8

declare ptr @ggml_new_tensor_1d(ptr noundef, i32 noundef, i64 noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK11gguf_reader4readEPvm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i64 noundef) local_unnamed_addr #3 align 2

declare void @ggml_free(ptr noundef) local_unnamed_addr #8

declare void @ggml_set_no_alloc(ptr noundef, i1 noundef zeroext) local_unnamed_addr #8

declare ptr @ggml_new_tensor(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { 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 = { nofree nosync nounwind memory(none) }
attributes #7 = { noreturn "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { cold nounwind }
attributes #13 = { noreturn }
attributes #14 = { 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 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !16, i64 0}
!15 = !{!"_ZTS12gguf_context", !16, i64 0, !17, i64 8, !21, i64 32, !13, i64 56, !13, i64 64, !13, i64 72, !6, i64 80}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTSSt6vectorI7gguf_kvSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseI7gguf_kvSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI7gguf_kvSaIS0_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI7gguf_kvSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorI16gguf_tensor_infoSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseI16gguf_tensor_infoSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!26, !26, i64 0}
!26 = !{!"_ZTS9gguf_type", !7, i64 0}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = !{!15, !13, i64 56}
!30 = distinct !{!30, !10}
!31 = !{!16, !16, i64 0}
!32 = distinct !{!32, !10}
!33 = !{!34, !36, i64 0}
!34 = !{!"_ZTS16gguf_tensor_info", !35, i64 0, !13, i64 336}
!35 = !{!"_ZTS11ggml_tensor", !36, i64 0, !6, i64 8, !7, i64 16, !7, i64 48, !37, i64 80, !7, i64 84, !16, i64 148, !7, i64 152, !6, i64 232, !13, i64 240, !6, i64 248, !7, i64 256, !6, i64 320, !7, i64 328}
!36 = !{!"_ZTS9ggml_type", !7, i64 0}
!37 = !{!"_ZTS7ggml_op", !7, i64 0}
!38 = distinct !{!38, !10}
!39 = !{!15, !13, i64 64}
!40 = !{!15, !13, i64 72}
!41 = !{!34, !13, i64 336}
!42 = distinct !{!42, !10}
!43 = !{!44, !44, i64 0}
!44 = !{!"bool", !7, i64 0}
!45 = !{!35, !6, i64 248}
!46 = !{!15, !6, i64 80}
!47 = distinct !{!47, !10, !48}
!48 = !{!"llvm.loop.peeled.count", i32 1}
!49 = distinct !{!49, !10, !48}


; Effective O3 passes: ADCEPass,BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass