; LLVM IR from unitreerobotics/kinect_teleoperate :: src/extern/glfw/src/tests (gamma)

; 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.nk_vec2 = type { float, float }
%union.nk_handle = type { ptr }
%struct.nk_font_atlas = type { ptr, i32, i32, %struct.nk_allocator, %struct.nk_allocator, %struct.nk_recti, [7 x %struct.nk_cursor], i32, ptr, ptr, ptr, ptr, i32 }
%struct.nk_allocator = type { %union.nk_handle, ptr, ptr }
%struct.nk_recti = type { i16, i16, i16, i16 }
%struct.nk_cursor = type { %struct.nk_image, %struct.nk_vec2, %struct.nk_vec2 }
%struct.nk_image = type { %union.nk_handle, i16, i16, [4 x i16] }
%struct.nk_font = type { ptr, %struct.nk_user_font, %struct.nk_baked_font, float, ptr, ptr, i32, %union.nk_handle, ptr }
%struct.nk_user_font = type { %union.nk_handle, float, ptr, ptr, %union.nk_handle }
%struct.nk_baked_font = type { float, float, float, i32, i32, ptr }
%struct.nk_font_config = type { ptr, ptr, i64, i8, i8, i8, i8, i8, [3 x i8], float, i32, %struct.nk_vec2, ptr, ptr, i32, ptr, ptr }

@.str.2 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__.nk_font_atlas_bake = external hidden unnamed_addr constant [96 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [13 x i8], align 1
@nk_custom_cursor_data = external hidden constant [2431 x i8], align 16
@.str.63 = external hidden unnamed_addr constant [9 x i8], align 1
@nk_font_atlas_bake.nk_cursor_data = external hidden constant [7 x [3 x %struct.nk_vec2]], align 16

; 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 nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nk_font_atlas_add_default(ptr noundef, float noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
define dso_local ptr @nk_font_atlas_bake(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #3 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %union.nk_handle, align 8
  %21 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 0, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %22 = load ptr, ptr %6, align 8, !tbaa !5
  %23 = icmp ne ptr %22, null
  br i1 %23, label %24, label %25

24:                                               ; preds = %4
  br label %26

25:                                               ; preds = %4
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str.2, i32 noundef 13721, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

26:                                               ; preds = %24
  %27 = load ptr, ptr %6, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct.nk_font_atlas, ptr %27, i32 0, i32 4
  %29 = getelementptr inbounds %struct.nk_allocator, ptr %28, i32 0, i32 1
  %30 = load ptr, ptr %29, align 8, !tbaa !11
  %31 = icmp ne ptr %30, null
  br i1 %31, label %32, label %33

32:                                               ; preds = %26
  br label %34

33:                                               ; preds = %26
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str.2, i32 noundef 13722, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

34:                                               ; preds = %32
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.nk_font_atlas, ptr %35, i32 0, i32 4
  %37 = getelementptr inbounds %struct.nk_allocator, ptr %36, i32 0, i32 2
  %38 = load ptr, ptr %37, align 8, !tbaa !16
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %41

40:                                               ; preds = %34
  br label %42

41:                                               ; preds = %34
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.2, i32 noundef 13723, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

42:                                               ; preds = %40
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.nk_font_atlas, ptr %43, i32 0, i32 3
  %45 = getelementptr inbounds %struct.nk_allocator, ptr %44, i32 0, i32 1
  %46 = load ptr, ptr %45, align 8, !tbaa !17
  %47 = icmp ne ptr %46, null
  br i1 %47, label %48, label %49

48:                                               ; preds = %42
  br label %50

49:                                               ; preds = %42
  call void @__assert_fail(ptr noundef @.str.44, ptr noundef @.str.2, i32 noundef 13724, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

50:                                               ; preds = %48
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.nk_font_atlas, ptr %51, i32 0, i32 3
  %53 = getelementptr inbounds %struct.nk_allocator, ptr %52, i32 0, i32 2
  %54 = load ptr, ptr %53, align 8, !tbaa !18
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %57

56:                                               ; preds = %50
  br label %58

57:                                               ; preds = %50
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.2, i32 noundef 13725, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

58:                                               ; preds = %56
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = icmp ne ptr %59, null
  br i1 %60, label %61, label %62

61:                                               ; preds = %58
  br label %63

62:                                               ; preds = %58
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.2, i32 noundef 13727, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

63:                                               ; preds = %61
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  br label %68

67:                                               ; preds = %63
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.2, i32 noundef 13728, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

68:                                               ; preds = %66
  %69 = load ptr, ptr %6, align 8, !tbaa !5
  %70 = icmp ne ptr %69, null
  br i1 %70, label %71, label %101

71:                                               ; preds = %68
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = icmp ne ptr %72, null
  br i1 %73, label %74, label %101

74:                                               ; preds = %71
  %75 = load ptr, ptr %8, align 8, !tbaa !5
  %76 = icmp ne ptr %75, null
  br i1 %76, label %77, label %101

77:                                               ; preds = %74
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.nk_font_atlas, ptr %78, i32 0, i32 4
  %80 = getelementptr inbounds %struct.nk_allocator, ptr %79, i32 0, i32 1
  %81 = load ptr, ptr %80, align 8, !tbaa !11
  %82 = icmp ne ptr %81, null
  br i1 %82, label %83, label %101

83:                                               ; preds = %77
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.nk_font_atlas, ptr %84, i32 0, i32 4
  %86 = getelementptr inbounds %struct.nk_allocator, ptr %85, i32 0, i32 2
  %87 = load ptr, ptr %86, align 8, !tbaa !16
  %88 = icmp ne ptr %87, null
  br i1 %88, label %89, label %101

89:                                               ; preds = %83
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.nk_font_atlas, ptr %90, i32 0, i32 3
  %92 = getelementptr inbounds %struct.nk_allocator, ptr %91, i32 0, i32 1
  %93 = load ptr, ptr %92, align 8, !tbaa !17
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %101

95:                                               ; preds = %89
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.nk_font_atlas, ptr %96, i32 0, i32 3
  %98 = getelementptr inbounds %struct.nk_allocator, ptr %97, i32 0, i32 2
  %99 = load ptr, ptr %98, align 8, !tbaa !18
  %100 = icmp ne ptr %99, null
  br i1 %100, label %102, label %101

101:                                              ; preds = %95, %89, %83, %77, %74, %71, %68
  store ptr null, ptr %5, align 8
  store i32 1, ptr %16, align 4
  br label %533

102:                                              ; preds = %95
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.nk_font_atlas, ptr %103, i32 0, i32 12
  %105 = load i32, ptr %104, align 8, !tbaa !19
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %112, label %107

107:                                              ; preds = %102
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = call ptr @nk_font_atlas_add_default(ptr noundef %108, float noundef 1.300000e+01, ptr noundef null)
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.nk_font_atlas, ptr %110, i32 0, i32 9
  store ptr %109, ptr %111, align 8, !tbaa !20
  br label %112

112:                                              ; preds = %107, %102
  %113 = load ptr, ptr %6, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.nk_font_atlas, ptr %113, i32 0, i32 12
  %115 = load i32, ptr %114, align 8, !tbaa !19
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %118

117:                                              ; preds = %112
  br label %119

118:                                              ; preds = %112
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.2, i32 noundef 13739, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

119:                                              ; preds = %117
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.nk_font_atlas, ptr %120, i32 0, i32 12
  %122 = load i32, ptr %121, align 8, !tbaa !19
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %125, label %124

124:                                              ; preds = %119
  store ptr null, ptr %5, align 8
  store i32 1, ptr %16, align 4
  br label %533

125:                                              ; preds = %119
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.nk_font_atlas, ptr %126, i32 0, i32 7
  %128 = load ptr, ptr %6, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.nk_font_atlas, ptr %128, i32 0, i32 11
  %130 = load ptr, ptr %129, align 8, !tbaa !21
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.nk_font_atlas, ptr %131, i32 0, i32 12
  %133 = load i32, ptr %132, align 8, !tbaa !19
  call void @nk_font_baker_memory(ptr noundef %12, ptr noundef %127, ptr noundef %130, i32 noundef %133)
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.nk_font_atlas, ptr %134, i32 0, i32 4
  %136 = getelementptr inbounds %struct.nk_allocator, ptr %135, i32 0, i32 1
  %137 = load ptr, ptr %136, align 8, !tbaa !11
  %138 = load ptr, ptr %6, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.nk_font_atlas, ptr %138, i32 0, i32 4
  %140 = getelementptr inbounds %struct.nk_allocator, ptr %139, i32 0, i32 0
  %141 = load i64, ptr %12, align 8, !tbaa !22
  %142 = getelementptr inbounds %union.nk_handle, ptr %140, i32 0, i32 0
  %143 = load ptr, ptr %142, align 8
  %144 = call ptr %137(ptr %143, ptr noundef null, i64 noundef %141)
  store ptr %144, ptr %11, align 8, !tbaa !5
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = icmp ne ptr %145, null
  br i1 %146, label %147, label %148

147:                                              ; preds = %125
  br label %149

148:                                              ; preds = %125
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.2, i32 noundef 13745, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

149:                                              ; preds = %147
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = icmp ne ptr %150, null
  br i1 %151, label %153, label %152

152:                                              ; preds = %149
  br label %478

153:                                              ; preds = %149
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load ptr, ptr %6, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.nk_font_atlas, ptr %155, i32 0, i32 7
  %157 = load i32, ptr %156, align 8, !tbaa !24
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.nk_font_atlas, ptr %158, i32 0, i32 12
  %160 = load i32, ptr %159, align 8, !tbaa !19
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.nk_font_atlas, ptr %161, i32 0, i32 4
  %163 = call ptr @nk_font_baker(ptr noundef %154, i32 noundef %157, i32 noundef %160, ptr noundef %162)
  store ptr %163, ptr %15, align 8, !tbaa !5
  %164 = load ptr, ptr %6, align 8, !tbaa !5
  %165 = getelementptr inbounds %struct.nk_font_atlas, ptr %164, i32 0, i32 3
  %166 = getelementptr inbounds %struct.nk_allocator, ptr %165, i32 0, i32 1
  %167 = load ptr, ptr %166, align 8, !tbaa !17
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.nk_font_atlas, ptr %168, i32 0, i32 3
  %170 = getelementptr inbounds %struct.nk_allocator, ptr %169, i32 0, i32 0
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.nk_font_atlas, ptr %171, i32 0, i32 7
  %173 = load i32, ptr %172, align 8, !tbaa !24
  %174 = sext i32 %173 to i64
  %175 = mul i64 48, %174
  %176 = getelementptr inbounds %union.nk_handle, ptr %170, i32 0, i32 0
  %177 = load ptr, ptr %176, align 8
  %178 = call ptr %167(ptr %177, ptr noundef null, i64 noundef %175)
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.nk_font_atlas, ptr %179, i32 0, i32 8
  store ptr %178, ptr %180, align 8, !tbaa !25
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.nk_font_atlas, ptr %181, i32 0, i32 8
  %183 = load ptr, ptr %182, align 8, !tbaa !25
  %184 = icmp ne ptr %183, null
  br i1 %184, label %185, label %186

185:                                              ; preds = %153
  br label %187

186:                                              ; preds = %153
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.2, i32 noundef 13752, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

187:                                              ; preds = %185
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.nk_font_atlas, ptr %188, i32 0, i32 8
  %190 = load ptr, ptr %189, align 8, !tbaa !25
  %191 = icmp ne ptr %190, null
  br i1 %191, label %193, label %192

192:                                              ; preds = %187
  br label %478

193:                                              ; preds = %187
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.nk_font_atlas, ptr %194, i32 0, i32 5
  %196 = getelementptr inbounds %struct.nk_recti, ptr %195, i32 0, i32 2
  store i16 181, ptr %196, align 4, !tbaa !26
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.nk_font_atlas, ptr %197, i32 0, i32 5
  %199 = getelementptr inbounds %struct.nk_recti, ptr %198, i32 0, i32 3
  store i16 28, ptr %199, align 2, !tbaa !27
  %200 = load ptr, ptr %15, align 8, !tbaa !5
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = load ptr, ptr %8, align 8, !tbaa !5
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.nk_font_atlas, ptr %203, i32 0, i32 5
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.nk_font_atlas, ptr %205, i32 0, i32 11
  %207 = load ptr, ptr %206, align 8, !tbaa !21
  %208 = load ptr, ptr %6, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.nk_font_atlas, ptr %208, i32 0, i32 12
  %210 = load i32, ptr %209, align 8, !tbaa !19
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.nk_font_atlas, ptr %211, i32 0, i32 4
  %213 = call i32 @nk_font_bake_pack(ptr noundef %200, ptr noundef %13, ptr noundef %201, ptr noundef %202, ptr noundef %204, ptr noundef %207, i32 noundef %210, ptr noundef %212)
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %216, label %215

215:                                              ; preds = %193
  br label %478

216:                                              ; preds = %193
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.nk_font_atlas, ptr %217, i32 0, i32 4
  %219 = getelementptr inbounds %struct.nk_allocator, ptr %218, i32 0, i32 1
  %220 = load ptr, ptr %219, align 8, !tbaa !11
  %221 = load ptr, ptr %6, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.nk_font_atlas, ptr %221, i32 0, i32 4
  %223 = getelementptr inbounds %struct.nk_allocator, ptr %222, i32 0, i32 0
  %224 = load i64, ptr %13, align 8, !tbaa !22
  %225 = getelementptr inbounds %union.nk_handle, ptr %223, i32 0, i32 0
  %226 = load ptr, ptr %225, align 8
  %227 = call ptr %220(ptr %226, ptr noundef null, i64 noundef %224)
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.nk_font_atlas, ptr %228, i32 0, i32 0
  store ptr %227, ptr %229, align 8, !tbaa !28
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.nk_font_atlas, ptr %230, i32 0, i32 0
  %232 = load ptr, ptr %231, align 8, !tbaa !28
  %233 = icmp ne ptr %232, null
  br i1 %233, label %234, label %235

234:                                              ; preds = %216
  br label %236

235:                                              ; preds = %216
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.2, i32 noundef 13765, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

236:                                              ; preds = %234
  %237 = load ptr, ptr %6, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.nk_font_atlas, ptr %237, i32 0, i32 0
  %239 = load ptr, ptr %238, align 8, !tbaa !28
  %240 = icmp ne ptr %239, null
  br i1 %240, label %242, label %241

241:                                              ; preds = %236
  br label %478

242:                                              ; preds = %236
  %243 = load ptr, ptr %15, align 8, !tbaa !5
  %244 = load ptr, ptr %6, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.nk_font_atlas, ptr %244, i32 0, i32 0
  %246 = load ptr, ptr %245, align 8, !tbaa !28
  %247 = load ptr, ptr %7, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = load ptr, ptr %8, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.nk_font_atlas, ptr %251, i32 0, i32 8
  %253 = load ptr, ptr %252, align 8, !tbaa !25
  %254 = load ptr, ptr %6, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.nk_font_atlas, ptr %254, i32 0, i32 7
  %256 = load i32, ptr %255, align 8, !tbaa !24
  %257 = load ptr, ptr %6, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.nk_font_atlas, ptr %257, i32 0, i32 11
  %259 = load ptr, ptr %258, align 8, !tbaa !21
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.nk_font_atlas, ptr %260, i32 0, i32 12
  %262 = load i32, ptr %261, align 8, !tbaa !19
  call void @nk_font_bake(ptr noundef %243, ptr noundef %246, i32 noundef %248, i32 noundef %250, ptr noundef %253, i32 noundef %256, ptr noundef %259, i32 noundef %262)
  %263 = load ptr, ptr %6, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.nk_font_atlas, ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8, !tbaa !28
  %266 = load ptr, ptr %7, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = load ptr, ptr %6, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.nk_font_atlas, ptr %270, i32 0, i32 5
  %272 = load i64, ptr %271, align 8
  call void @nk_font_bake_custom_data(ptr noundef %265, i32 noundef %267, i32 noundef %269, i64 %272, ptr noundef @nk_custom_cursor_data, i32 noundef 90, i32 noundef 27, i8 noundef signext 46, i8 noundef signext 88)
  %273 = load i32, ptr %9, align 4, !tbaa !9
  %274 = icmp eq i32 %273, 1
  br i1 %274, label %275, label %328

275:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.nk_font_atlas, ptr %276, i32 0, i32 4
  %278 = getelementptr inbounds %struct.nk_allocator, ptr %277, i32 0, i32 1
  %279 = load ptr, ptr %278, align 8, !tbaa !11
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.nk_font_atlas, ptr %280, i32 0, i32 4
  %282 = getelementptr inbounds %struct.nk_allocator, ptr %281, i32 0, i32 0
  %283 = load ptr, ptr %7, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = mul nsw i32 %284, %286
  %288 = mul nsw i32 %287, 4
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds %union.nk_handle, ptr %282, i32 0, i32 0
  %291 = load ptr, ptr %290, align 8
  %292 = call ptr %279(ptr %291, ptr noundef null, i64 noundef %289)
  store ptr %292, ptr %17, align 8, !tbaa !5
  %293 = load ptr, ptr %17, align 8, !tbaa !5
  %294 = icmp ne ptr %293, null
  br i1 %294, label %295, label %296

295:                                              ; preds = %275
  br label %297

296:                                              ; preds = %275
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.2, i32 noundef 13779, ptr noundef @__PRETTY_FUNCTION__.nk_font_atlas_bake) #5
  unreachable

297:                                              ; preds = %295
  %298 = load ptr, ptr %17, align 8, !tbaa !5
  %299 = icmp ne ptr %298, null
  br i1 %299, label %301, label %300

300:                                              ; preds = %297
  store i32 2, ptr %16, align 4
  br label %325

301:                                              ; preds = %297
  %302 = load ptr, ptr %17, align 8, !tbaa !5
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = load ptr, ptr %6, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.nk_font_atlas, ptr %307, i32 0, i32 0
  %309 = load ptr, ptr %308, align 8, !tbaa !28
  call void @nk_font_bake_convert(ptr noundef %302, i32 noundef %304, i32 noundef %306, ptr noundef %309)
  %310 = load ptr, ptr %6, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.nk_font_atlas, ptr %310, i32 0, i32 4
  %312 = getelementptr inbounds %struct.nk_allocator, ptr %311, i32 0, i32 2
  %313 = load ptr, ptr %312, align 8, !tbaa !16
  %314 = load ptr, ptr %6, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.nk_font_atlas, ptr %314, i32 0, i32 4
  %316 = getelementptr inbounds %struct.nk_allocator, ptr %315, i32 0, i32 0
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.nk_font_atlas, ptr %317, i32 0, i32 0
  %319 = load ptr, ptr %318, align 8, !tbaa !28
  %320 = getelementptr inbounds %union.nk_handle, ptr %316, i32 0, i32 0
  %321 = load ptr, ptr %320, align 8
  call void %313(ptr %321, ptr noundef %319)
  %322 = load ptr, ptr %17, align 8, !tbaa !5
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.nk_font_atlas, ptr %323, i32 0, i32 0
  store ptr %322, ptr %324, align 8, !tbaa !28
  store i32 0, ptr %16, align 4
  br label %325

325:                                              ; preds = %301, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  %326 = load i32, ptr %16, align 4
  switch i32 %326, label %533 [
    i32 0, label %327
    i32 2, label %478
  ]

327:                                              ; preds = %325
  br label %328

328:                                              ; preds = %327, %242
  %329 = load ptr, ptr %7, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = load ptr, ptr %6, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.nk_font_atlas, ptr %331, i32 0, i32 1
  store i32 %330, ptr %332, align 8, !tbaa !29
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.nk_font_atlas, ptr %335, i32 0, i32 2
  store i32 %334, ptr %336, align 4, !tbaa !30
  %337 = load ptr, ptr %6, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.nk_font_atlas, ptr %337, i32 0, i32 10
  %339 = load ptr, ptr %338, align 8, !tbaa !31
  store ptr %339, ptr %14, align 8, !tbaa !5
  br label %340

340:                                              ; preds = %365, %328
  %341 = load ptr, ptr %14, align 8, !tbaa !5
  %342 = icmp ne ptr %341, null
  br i1 %342, label %343, label %369

343:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  %344 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %344, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.nk_font, ptr %345, i32 0, i32 8
  %347 = load ptr, ptr %346, align 8, !tbaa !32
  store ptr %347, ptr %19, align 8, !tbaa !5
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = load ptr, ptr %19, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.nk_font_config, ptr %349, i32 0, i32 9
  %351 = load float, ptr %350, align 8, !tbaa !37
  %352 = load ptr, ptr %19, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.nk_font_config, ptr %352, i32 0, i32 14
  %354 = load i32, ptr %353, align 8, !tbaa !40
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.nk_font_atlas, ptr %355, i32 0, i32 8
  %357 = load ptr, ptr %356, align 8, !tbaa !25
  %358 = load ptr, ptr %19, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.nk_font_config, ptr %358, i32 0, i32 13
  %360 = load ptr, ptr %359, align 8, !tbaa !41
  %361 = call ptr @nk_handle_ptr(ptr noundef null)
  %362 = getelementptr inbounds %union.nk_handle, ptr %20, i32 0, i32 0
  store ptr %361, ptr %362, align 8
  %363 = getelementptr inbounds %union.nk_handle, ptr %20, i32 0, i32 0
  %364 = load ptr, ptr %363, align 8
  call void @nk_font_init(ptr noundef %348, float noundef %351, i32 noundef %354, ptr noundef %357, ptr noundef %360, ptr %364)
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  br label %365

365:                                              ; preds = %343
  %366 = load ptr, ptr %14, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.nk_font, ptr %366, i32 0, i32 0
  %368 = load ptr, ptr %367, align 8, !tbaa !42
  store ptr %368, ptr %14, align 8, !tbaa !5
  br label %340, !llvm.loop !43

369:                                              ; preds = %340
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %461, %369
  %371 = load i32, ptr %10, align 4, !tbaa !9
  %372 = icmp slt i32 %371, 7
  br i1 %372, label %373, label %464

373:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  %374 = load ptr, ptr %6, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.nk_font_atlas, ptr %374, i32 0, i32 6
  %376 = load i32, ptr %10, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [7 x %struct.nk_cursor], ptr %375, i64 0, i64 %377
  store ptr %378, ptr %21, align 8, !tbaa !5
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = trunc i32 %380 to i16
  %382 = load ptr, ptr %21, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.nk_cursor, ptr %382, i32 0, i32 0
  %384 = getelementptr inbounds %struct.nk_image, ptr %383, i32 0, i32 1
  store i16 %381, ptr %384, align 8, !tbaa !45
  %385 = load ptr, ptr %8, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = trunc i32 %386 to i16
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.nk_cursor, ptr %388, i32 0, i32 0
  %390 = getelementptr inbounds %struct.nk_image, ptr %389, i32 0, i32 2
  store i16 %387, ptr %390, align 2, !tbaa !48
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.nk_font_atlas, ptr %391, i32 0, i32 5
  %393 = getelementptr inbounds %struct.nk_recti, ptr %392, i32 0, i32 0
  %394 = load i16, ptr %393, align 8, !tbaa !49
  %395 = sext i16 %394 to i32
  %396 = sitofp i32 %395 to float
  %397 = load i32, ptr %10, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %398
  %400 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %399, i64 0, i64 0
  %401 = getelementptr inbounds %struct.nk_vec2, ptr %400, i32 0, i32 0
  %402 = load float, ptr %401, align 8, !tbaa !50
  %403 = fadd float %396, %402
  %404 = fptoui float %403 to i16
  %405 = load ptr, ptr %21, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.nk_cursor, ptr %405, i32 0, i32 0
  %407 = getelementptr inbounds %struct.nk_image, ptr %406, i32 0, i32 3
  %408 = getelementptr inbounds [4 x i16], ptr %407, i64 0, i64 0
  store i16 %404, ptr %408, align 4, !tbaa !51
  %409 = load ptr, ptr %6, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.nk_font_atlas, ptr %409, i32 0, i32 5
  %411 = getelementptr inbounds %struct.nk_recti, ptr %410, i32 0, i32 1
  %412 = load i16, ptr %411, align 2, !tbaa !52
  %413 = sext i16 %412 to i32
  %414 = sitofp i32 %413 to float
  %415 = load i32, ptr %10, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %416
  %418 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %417, i64 0, i64 0
  %419 = getelementptr inbounds %struct.nk_vec2, ptr %418, i32 0, i32 1
  %420 = load float, ptr %419, align 4, !tbaa !53
  %421 = fadd float %414, %420
  %422 = fptoui float %421 to i16
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.nk_cursor, ptr %423, i32 0, i32 0
  %425 = getelementptr inbounds %struct.nk_image, ptr %424, i32 0, i32 3
  %426 = getelementptr inbounds [4 x i16], ptr %425, i64 0, i64 1
  store i16 %422, ptr %426, align 2, !tbaa !51
  %427 = load i32, ptr %10, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %428
  %430 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %429, i64 0, i64 1
  %431 = getelementptr inbounds %struct.nk_vec2, ptr %430, i32 0, i32 0
  %432 = load float, ptr %431, align 8, !tbaa !50
  %433 = fptoui float %432 to i16
  %434 = load ptr, ptr %21, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.nk_cursor, ptr %434, i32 0, i32 0
  %436 = getelementptr inbounds %struct.nk_image, ptr %435, i32 0, i32 3
  %437 = getelementptr inbounds [4 x i16], ptr %436, i64 0, i64 2
  store i16 %433, ptr %437, align 4, !tbaa !51
  %438 = load i32, ptr %10, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %439
  %441 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %440, i64 0, i64 1
  %442 = getelementptr inbounds %struct.nk_vec2, ptr %441, i32 0, i32 1
  %443 = load float, ptr %442, align 4, !tbaa !53
  %444 = fptoui float %443 to i16
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.nk_cursor, ptr %445, i32 0, i32 0
  %447 = getelementptr inbounds %struct.nk_image, ptr %446, i32 0, i32 3
  %448 = getelementptr inbounds [4 x i16], ptr %447, i64 0, i64 3
  store i16 %444, ptr %448, align 2, !tbaa !51
  %449 = load ptr, ptr %21, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.nk_cursor, ptr %449, i32 0, i32 1
  %451 = load i32, ptr %10, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %452
  %454 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %453, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %450, ptr align 8 %454, i64 8, i1 false), !tbaa.struct !54
  %455 = load ptr, ptr %21, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.nk_cursor, ptr %455, i32 0, i32 2
  %457 = load i32, ptr %10, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds [7 x [3 x %struct.nk_vec2]], ptr @nk_font_atlas_bake.nk_cursor_data, i64 0, i64 %458
  %460 = getelementptr inbounds [3 x %struct.nk_vec2], ptr %459, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %456, ptr align 8 %460, i64 8, i1 false), !tbaa.struct !54
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  br label %461

461:                                              ; preds = %373
  %462 = load i32, ptr %10, align 4, !tbaa !9
  %463 = add nsw i32 %462, 1
  store i32 %463, ptr %10, align 4, !tbaa !9
  br label %370, !llvm.loop !56

464:                                              ; preds = %370
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.nk_font_atlas, ptr %465, i32 0, i32 4
  %467 = getelementptr inbounds %struct.nk_allocator, ptr %466, i32 0, i32 2
  %468 = load ptr, ptr %467, align 8, !tbaa !16
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.nk_font_atlas, ptr %469, i32 0, i32 4
  %471 = getelementptr inbounds %struct.nk_allocator, ptr %470, i32 0, i32 0
  %472 = load ptr, ptr %11, align 8, !tbaa !5
  %473 = getelementptr inbounds %union.nk_handle, ptr %471, i32 0, i32 0
  %474 = load ptr, ptr %473, align 8
  call void %468(ptr %474, ptr noundef %472)
  %475 = load ptr, ptr %6, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.nk_font_atlas, ptr %475, i32 0, i32 0
  %477 = load ptr, ptr %476, align 8, !tbaa !28
  store ptr %477, ptr %5, align 8
  store i32 1, ptr %16, align 4
  br label %533

478:                                              ; preds = %325, %241, %215, %192, %152
  %479 = load ptr, ptr %11, align 8, !tbaa !5
  %480 = icmp ne ptr %479, null
  br i1 %480, label %481, label %492

481:                                              ; preds = %478
  %482 = load ptr, ptr %6, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.nk_font_atlas, ptr %482, i32 0, i32 4
  %484 = getelementptr inbounds %struct.nk_allocator, ptr %483, i32 0, i32 2
  %485 = load ptr, ptr %484, align 8, !tbaa !16
  %486 = load ptr, ptr %6, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.nk_font_atlas, ptr %486, i32 0, i32 4
  %488 = getelementptr inbounds %struct.nk_allocator, ptr %487, i32 0, i32 0
  %489 = load ptr, ptr %11, align 8, !tbaa !5
  %490 = getelementptr inbounds %union.nk_handle, ptr %488, i32 0, i32 0
  %491 = load ptr, ptr %490, align 8
  call void %485(ptr %491, ptr noundef %489)
  br label %492

492:                                              ; preds = %481, %478
  %493 = load ptr, ptr %6, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.nk_font_atlas, ptr %493, i32 0, i32 8
  %495 = load ptr, ptr %494, align 8, !tbaa !25
  %496 = icmp ne ptr %495, null
  br i1 %496, label %497, label %512

497:                                              ; preds = %492
  %498 = load ptr, ptr %6, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.nk_font_atlas, ptr %498, i32 0, i32 3
  %500 = getelementptr inbounds %struct.nk_allocator, ptr %499, i32 0, i32 2
  %501 = load ptr, ptr %500, align 8, !tbaa !18
  %502 = load ptr, ptr %6, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.nk_font_atlas, ptr %502, i32 0, i32 3
  %504 = getelementptr inbounds %struct.nk_allocator, ptr %503, i32 0, i32 0
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.nk_font_atlas, ptr %505, i32 0, i32 8
  %507 = load ptr, ptr %506, align 8, !tbaa !25
  %508 = getelementptr inbounds %union.nk_handle, ptr %504, i32 0, i32 0
  %509 = load ptr, ptr %508, align 8
  call void %501(ptr %509, ptr noundef %507)
  %510 = load ptr, ptr %6, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.nk_font_atlas, ptr %510, i32 0, i32 8
  store ptr null, ptr %511, align 8, !tbaa !25
  br label %512

512:                                              ; preds = %497, %492
  %513 = load ptr, ptr %6, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.nk_font_atlas, ptr %513, i32 0, i32 0
  %515 = load ptr, ptr %514, align 8, !tbaa !28
  %516 = icmp ne ptr %515, null
  br i1 %516, label %517, label %532

517:                                              ; preds = %512
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.nk_font_atlas, ptr %518, i32 0, i32 4
  %520 = getelementptr inbounds %struct.nk_allocator, ptr %519, i32 0, i32 2
  %521 = load ptr, ptr %520, align 8, !tbaa !16
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.nk_font_atlas, ptr %522, i32 0, i32 4
  %524 = getelementptr inbounds %struct.nk_allocator, ptr %523, i32 0, i32 0
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.nk_font_atlas, ptr %525, i32 0, i32 0
  %527 = load ptr, ptr %526, align 8, !tbaa !28
  %528 = getelementptr inbounds %union.nk_handle, ptr %524, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8
  call void %521(ptr %529, ptr noundef %527)
  %530 = load ptr, ptr %6, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.nk_font_atlas, ptr %530, i32 0, i32 0
  store ptr null, ptr %531, align 8, !tbaa !28
  br label %532

532:                                              ; preds = %517, %512
  store ptr null, ptr %5, align 8
  store i32 1, ptr %16, align 4
  br label %533

533:                                              ; preds = %532, %464, %325, %124, %101
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  %534 = load ptr, ptr %5, align 8
  ret ptr %534
}

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_baker_memory(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden ptr @nk_font_baker(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @nk_font_bake_pack(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_bake(ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_bake_custom_data(ptr noundef, i32 noundef, i32 noundef, i64, ptr noundef, i32 noundef, i32 noundef, i8 noundef signext, i8 noundef signext) #3

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_bake_convert(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_init(ptr noundef, float noundef, i32 noundef, ptr noundef, ptr noundef, ptr) #3

; Function Attrs: nounwind uwtable
declare dso_local ptr @nk_handle_ptr(ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 48}
!12 = !{!"nk_font_atlas", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 40, !14, i64 64, !7, i64 72, !10, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !10, i64 392}
!13 = !{!"nk_allocator", !7, i64 0, !6, i64 8, !6, i64 16}
!14 = !{!"nk_recti", !15, i64 0, !15, i64 2, !15, i64 4, !15, i64 6}
!15 = !{!"short", !7, i64 0}
!16 = !{!12, !6, i64 56}
!17 = !{!12, !6, i64 24}
!18 = !{!12, !6, i64 32}
!19 = !{!12, !10, i64 392}
!20 = !{!12, !6, i64 368}
!21 = !{!12, !6, i64 384}
!22 = !{!23, !23, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!12, !10, i64 352}
!25 = !{!12, !6, i64 360}
!26 = !{!12, !15, i64 68}
!27 = !{!12, !15, i64 70}
!28 = !{!12, !6, i64 0}
!29 = !{!12, !10, i64 8}
!30 = !{!12, !10, i64 12}
!31 = !{!12, !6, i64 376}
!32 = !{!33, !6, i64 120}
!33 = !{!"nk_font", !6, i64 0, !34, i64 8, !36, i64 48, !35, i64 80, !6, i64 88, !6, i64 96, !10, i64 104, !7, i64 112, !6, i64 120}
!34 = !{!"nk_user_font", !7, i64 0, !35, i64 8, !6, i64 16, !6, i64 24, !7, i64 32}
!35 = !{!"float", !7, i64 0}
!36 = !{!"nk_baked_font", !35, i64 0, !35, i64 4, !35, i64 8, !10, i64 12, !10, i64 16, !6, i64 24}
!37 = !{!38, !35, i64 32}
!38 = !{!"nk_font_config", !6, i64 0, !6, i64 8, !23, i64 16, !7, i64 24, !7, i64 25, !7, i64 26, !7, i64 27, !7, i64 28, !7, i64 29, !35, i64 32, !10, i64 36, !39, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !6, i64 80}
!39 = !{!"nk_vec2", !35, i64 0, !35, i64 4}
!40 = !{!38, !10, i64 64}
!41 = !{!38, !6, i64 56}
!42 = !{!33, !6, i64 0}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = !{!46, !15, i64 8}
!46 = !{!"nk_cursor", !47, i64 0, !39, i64 24, !39, i64 32}
!47 = !{!"nk_image", !7, i64 0, !15, i64 8, !15, i64 10, !7, i64 12}
!48 = !{!46, !15, i64 10}
!49 = !{!12, !15, i64 64}
!50 = !{!39, !35, i64 0}
!51 = !{!15, !15, i64 0}
!52 = !{!12, !15, i64 66}
!53 = !{!39, !35, i64 4}
!54 = !{i64 0, i64 4, !55, i64 4, i64 4, !55}
!55 = !{!35, !35, i64 0}
!56 = distinct !{!56, !44}


; 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.nk_vec2 = type { float, float }

@.str.2 = external hidden unnamed_addr constant [103 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__.nk_font_atlas_bake = external hidden unnamed_addr constant [96 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [13 x i8], align 1
@nk_custom_cursor_data = external hidden constant [2431 x i8], align 16
@.str.63 = external hidden unnamed_addr constant [9 x i8], align 1
@nk_font_atlas_bake.nk_cursor_data = external hidden local_unnamed_addr constant [7 x [3 x %struct.nk_vec2]], align 16

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @nk_font_atlas_add_default(ptr noundef, float noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local ptr @nk_font_atlas_bake(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) local_unnamed_addr #2 {
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #3
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %7, label %8

7:                                                ; preds = %4
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.2, i32 noundef 13721, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

8:                                                ; preds = %4
  %9 = getelementptr inbounds i8, ptr %0, i64 40
  %10 = getelementptr inbounds i8, ptr %0, i64 48
  %11 = load ptr, ptr %10, align 8, !tbaa !5
  %.not148 = icmp eq ptr %11, null
  br i1 %.not148, label %12, label %13

12:                                               ; preds = %8
  tail call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.2, i32 noundef 13722, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

13:                                               ; preds = %8
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = load ptr, ptr %14, align 8, !tbaa !14
  %.not149 = icmp eq ptr %15, null
  br i1 %.not149, label %16, label %17

16:                                               ; preds = %13
  tail call void @__assert_fail(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.2, i32 noundef 13723, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

17:                                               ; preds = %13
  %18 = getelementptr inbounds i8, ptr %0, i64 16
  %19 = getelementptr inbounds i8, ptr %0, i64 24
  %20 = load ptr, ptr %19, align 8, !tbaa !15
  %.not150 = icmp eq ptr %20, null
  br i1 %.not150, label %21, label %22

21:                                               ; preds = %17
  tail call void @__assert_fail(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.2, i32 noundef 13724, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

22:                                               ; preds = %17
  %23 = getelementptr inbounds i8, ptr %0, i64 32
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  %.not151 = icmp eq ptr %24, null
  br i1 %.not151, label %25, label %26

25:                                               ; preds = %22
  tail call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.2, i32 noundef 13725, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

26:                                               ; preds = %22
  %.not152 = icmp eq ptr %1, null
  br i1 %.not152, label %27, label %28

27:                                               ; preds = %26
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.2, i32 noundef 13727, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

28:                                               ; preds = %26
  %.not153 = icmp eq ptr %2, null
  br i1 %.not153, label %29, label %30

29:                                               ; preds = %28
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.2, i32 noundef 13728, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

30:                                               ; preds = %28
  %31 = getelementptr inbounds i8, ptr %0, i64 392
  %32 = load i32, ptr %31, align 8, !tbaa !17
  %.not154 = icmp eq i32 %32, 0
  br i1 %.not154, label %33, label %.thread

33:                                               ; preds = %30
  %34 = tail call ptr @nk_font_atlas_add_default(ptr noundef nonnull %0, float noundef 1.300000e+01, ptr noundef null)
  %35 = getelementptr inbounds i8, ptr %0, i64 368
  store ptr %34, ptr %35, align 8, !tbaa !18
  %.pr = load i32, ptr %31, align 8, !tbaa !17
  %.not155 = icmp eq i32 %.pr, 0
  br i1 %.not155, label %36, label %.thread

36:                                               ; preds = %33
  tail call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.2, i32 noundef 13739, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

.thread:                                          ; preds = %30, %33
  %37 = phi i32 [ %.pr, %33 ], [ %32, %30 ]
  %38 = getelementptr inbounds i8, ptr %0, i64 352
  %39 = getelementptr inbounds i8, ptr %0, i64 384
  %40 = load ptr, ptr %39, align 8, !tbaa !19
  call void @nk_font_baker_memory(ptr noundef nonnull %5, ptr noundef nonnull %38, ptr noundef %40, i32 noundef %37)
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = load i64, ptr %5, align 8, !tbaa !20
  %43 = load ptr, ptr %9, align 8
  %44 = call ptr %41(ptr %43, ptr noundef null, i64 noundef %42) #3
  %.not156 = icmp eq ptr %44, null
  br i1 %.not156, label %45, label %46

45:                                               ; preds = %.thread
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.2, i32 noundef 13745, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

46:                                               ; preds = %.thread
  %47 = load i32, ptr %38, align 8, !tbaa !22
  %48 = load i32, ptr %31, align 8, !tbaa !17
  %49 = call ptr @nk_font_baker(ptr noundef nonnull %44, i32 noundef %47, i32 noundef %48, ptr noundef nonnull %9)
  %50 = load ptr, ptr %19, align 8, !tbaa !15
  %51 = load i32, ptr %38, align 8, !tbaa !22
  %52 = sext i32 %51 to i64
  %53 = mul nsw i64 %52, 48
  %54 = load ptr, ptr %18, align 8
  %55 = call ptr %50(ptr %54, ptr noundef null, i64 noundef %53) #3
  %56 = getelementptr inbounds i8, ptr %0, i64 360
  store ptr %55, ptr %56, align 8, !tbaa !23
  %.not157 = icmp eq ptr %55, null
  br i1 %.not157, label %57, label %58

57:                                               ; preds = %46
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.2, i32 noundef 13752, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

58:                                               ; preds = %46
  %59 = getelementptr inbounds i8, ptr %0, i64 64
  %60 = getelementptr inbounds i8, ptr %0, i64 68
  store i16 181, ptr %60, align 4, !tbaa !24
  %61 = getelementptr inbounds i8, ptr %0, i64 70
  store i16 28, ptr %61, align 2, !tbaa !25
  %62 = load ptr, ptr %39, align 8, !tbaa !19
  %63 = load i32, ptr %31, align 8, !tbaa !17
  %64 = call i32 @nk_font_bake_pack(ptr noundef %49, ptr noundef nonnull %6, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %59, ptr noundef %62, i32 noundef %63, ptr noundef nonnull %9)
  %.not158 = icmp eq i32 %64, 0
  br i1 %.not158, label %219, label %65

65:                                               ; preds = %58
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = load i64, ptr %6, align 8, !tbaa !20
  %68 = load ptr, ptr %9, align 8
  %69 = call ptr %66(ptr %68, ptr noundef null, i64 noundef %67) #3
  store ptr %69, ptr %0, align 8, !tbaa !26
  %.not161 = icmp eq ptr %69, null
  br i1 %.not161, label %70, label %71

70:                                               ; preds = %65
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.2, i32 noundef 13765, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

71:                                               ; preds = %65
  %72 = load i32, ptr %1, align 4, !tbaa !27
  %73 = load i32, ptr %2, align 4, !tbaa !27
  %74 = load ptr, ptr %56, align 8, !tbaa !23
  %75 = load i32, ptr %38, align 8, !tbaa !22
  %76 = load ptr, ptr %39, align 8, !tbaa !19
  %77 = load i32, ptr %31, align 8, !tbaa !17
  call void @nk_font_bake(ptr noundef %49, ptr noundef nonnull %69, i32 noundef %72, i32 noundef %73, ptr noundef %74, i32 noundef %75, ptr noundef %76, i32 noundef %77)
  %78 = load ptr, ptr %0, align 8, !tbaa !26
  %79 = load i32, ptr %1, align 4, !tbaa !27
  %80 = load i32, ptr %2, align 4, !tbaa !27
  %81 = load i64, ptr %59, align 8
  call void @nk_font_bake_custom_data(ptr noundef %78, i32 noundef %79, i32 noundef %80, i64 %81, ptr noundef nonnull @nk_custom_cursor_data, i32 noundef 90, i32 noundef 27, i8 noundef signext 46, i8 noundef signext 88)
  %82 = icmp eq i32 %3, 1
  br i1 %82, label %83, label %100

83:                                               ; preds = %71
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = load i32, ptr %1, align 4, !tbaa !27
  %86 = load i32, ptr %2, align 4, !tbaa !27
  %87 = shl i32 %85, 2
  %88 = mul i32 %87, %86
  %89 = sext i32 %88 to i64
  %90 = load ptr, ptr %9, align 8
  %91 = call ptr %84(ptr %90, ptr noundef null, i64 noundef %89) #3
  %.not162 = icmp eq ptr %91, null
  br i1 %.not162, label %92, label %93

92:                                               ; preds = %83
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.2, i32 noundef 13779, ptr noundef nonnull @__PRETTY_FUNCTION__.nk_font_atlas_bake) #4
  unreachable

93:                                               ; preds = %83
  %94 = load i32, ptr %1, align 4, !tbaa !27
  %95 = load i32, ptr %2, align 4, !tbaa !27
  %96 = load ptr, ptr %0, align 8, !tbaa !26
  call void @nk_font_bake_convert(ptr noundef nonnull %91, i32 noundef %94, i32 noundef %95, ptr noundef %96)
  %97 = load ptr, ptr %14, align 8, !tbaa !14
  %98 = load ptr, ptr %0, align 8, !tbaa !26
  %99 = load ptr, ptr %9, align 8
  call void %97(ptr %99, ptr noundef %98) #3
  store ptr %91, ptr %0, align 8, !tbaa !26
  br label %100

100:                                              ; preds = %93, %71
  %101 = load i32, ptr %1, align 4, !tbaa !27
  %102 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %101, ptr %102, align 8, !tbaa !28
  %103 = load i32, ptr %2, align 4, !tbaa !27
  %104 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %103, ptr %104, align 4, !tbaa !29
  %105 = getelementptr inbounds i8, ptr %0, i64 376
  %.0137165 = load ptr, ptr %105, align 8, !tbaa !30
  %.not163166 = icmp eq ptr %.0137165, null
  br i1 %.not163166, label %.preheader, label %.lr.ph

.preheader.loopexit:                              ; preds = %.lr.ph
  %.pre = load i32, ptr %2, align 4, !tbaa !27
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit, %100
  %106 = phi i32 [ %.pre, %.preheader.loopexit ], [ %103, %100 ]
  %107 = load i32, ptr %1, align 4, !tbaa !27
  %108 = trunc i32 %107 to i16
  %109 = getelementptr inbounds i8, ptr %0, i64 80
  store i16 %108, ptr %109, align 8, !tbaa !31
  %110 = trunc i32 %106 to i16
  %111 = getelementptr inbounds i8, ptr %0, i64 82
  store i16 %110, ptr %111, align 2, !tbaa !36
  %112 = getelementptr inbounds i8, ptr %0, i64 84
  %113 = load <2 x i16>, ptr %59, align 8, !tbaa !37
  %114 = sitofp <2 x i16> %113 to <2 x float>
  %115 = load <2 x float>, ptr @nk_font_atlas_bake.nk_cursor_data, align 16, !tbaa !38
  %116 = fadd <2 x float> %115, %114
  %117 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 8), align 8
  %118 = shufflevector <2 x float> %116, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %119 = shufflevector <4 x float> %118, <4 x float> %117, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %120 = fptoui <4 x float> %119 to <4 x i16>
  store <4 x i16> %120, ptr %112, align 4, !tbaa !37
  %121 = getelementptr inbounds i8, ptr %0, i64 96
  store <4 x float> %117, ptr %121, align 8
  %122 = load i32, ptr %1, align 4, !tbaa !27
  %123 = trunc i32 %122 to i16
  %124 = getelementptr inbounds i8, ptr %0, i64 120
  store i16 %123, ptr %124, align 8, !tbaa !31
  %125 = load i32, ptr %2, align 4, !tbaa !27
  %126 = trunc i32 %125 to i16
  %127 = getelementptr inbounds i8, ptr %0, i64 122
  store i16 %126, ptr %127, align 2, !tbaa !36
  %128 = getelementptr inbounds i8, ptr %0, i64 124
  %129 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 24), align 8, !tbaa !38
  %130 = fadd <2 x float> %129, %114
  %131 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 32), align 16
  %132 = shufflevector <2 x float> %130, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %133 = shufflevector <4 x float> %132, <4 x float> %131, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %134 = fptoui <4 x float> %133 to <4 x i16>
  store <4 x i16> %134, ptr %128, align 4, !tbaa !37
  %135 = getelementptr inbounds i8, ptr %0, i64 136
  store <4 x float> %131, ptr %135, align 8
  %136 = load i32, ptr %1, align 4, !tbaa !27
  %137 = trunc i32 %136 to i16
  %138 = getelementptr inbounds i8, ptr %0, i64 160
  store i16 %137, ptr %138, align 8, !tbaa !31
  %139 = load i32, ptr %2, align 4, !tbaa !27
  %140 = trunc i32 %139 to i16
  %141 = getelementptr inbounds i8, ptr %0, i64 162
  store i16 %140, ptr %141, align 2, !tbaa !36
  %142 = getelementptr inbounds i8, ptr %0, i64 164
  %143 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 48), align 16, !tbaa !38
  %144 = fadd <2 x float> %143, %114
  %145 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 56), align 8
  %146 = shufflevector <2 x float> %144, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %147 = shufflevector <4 x float> %146, <4 x float> %145, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %148 = fptoui <4 x float> %147 to <4 x i16>
  store <4 x i16> %148, ptr %142, align 4, !tbaa !37
  %149 = getelementptr inbounds i8, ptr %0, i64 176
  store <4 x float> %145, ptr %149, align 8
  %150 = load i32, ptr %1, align 4, !tbaa !27
  %151 = trunc i32 %150 to i16
  %152 = getelementptr inbounds i8, ptr %0, i64 200
  store i16 %151, ptr %152, align 8, !tbaa !31
  %153 = load i32, ptr %2, align 4, !tbaa !27
  %154 = trunc i32 %153 to i16
  %155 = getelementptr inbounds i8, ptr %0, i64 202
  store i16 %154, ptr %155, align 2, !tbaa !36
  %156 = getelementptr inbounds i8, ptr %0, i64 204
  %157 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 72), align 8, !tbaa !38
  %158 = fadd <2 x float> %157, %114
  %159 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 80), align 16
  %160 = shufflevector <2 x float> %158, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %161 = shufflevector <4 x float> %160, <4 x float> %159, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %162 = fptoui <4 x float> %161 to <4 x i16>
  store <4 x i16> %162, ptr %156, align 4, !tbaa !37
  %163 = getelementptr inbounds i8, ptr %0, i64 216
  store <4 x float> %159, ptr %163, align 8
  %164 = load i32, ptr %1, align 4, !tbaa !27
  %165 = trunc i32 %164 to i16
  %166 = getelementptr inbounds i8, ptr %0, i64 240
  store i16 %165, ptr %166, align 8, !tbaa !31
  %167 = load i32, ptr %2, align 4, !tbaa !27
  %168 = trunc i32 %167 to i16
  %169 = getelementptr inbounds i8, ptr %0, i64 242
  store i16 %168, ptr %169, align 2, !tbaa !36
  %170 = getelementptr inbounds i8, ptr %0, i64 244
  %171 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 96), align 16, !tbaa !38
  %172 = fadd <2 x float> %171, %114
  %173 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 104), align 8
  %174 = shufflevector <2 x float> %172, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %175 = shufflevector <4 x float> %174, <4 x float> %173, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %176 = fptoui <4 x float> %175 to <4 x i16>
  store <4 x i16> %176, ptr %170, align 4, !tbaa !37
  %177 = getelementptr inbounds i8, ptr %0, i64 256
  store <4 x float> %173, ptr %177, align 8
  %178 = load i32, ptr %1, align 4, !tbaa !27
  %179 = trunc i32 %178 to i16
  %180 = getelementptr inbounds i8, ptr %0, i64 280
  store i16 %179, ptr %180, align 8, !tbaa !31
  %181 = load i32, ptr %2, align 4, !tbaa !27
  %182 = trunc i32 %181 to i16
  %183 = getelementptr inbounds i8, ptr %0, i64 282
  store i16 %182, ptr %183, align 2, !tbaa !36
  %184 = getelementptr inbounds i8, ptr %0, i64 284
  %185 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 120), align 8, !tbaa !38
  %186 = fadd <2 x float> %185, %114
  %187 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 128), align 16
  %188 = shufflevector <2 x float> %186, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %189 = shufflevector <4 x float> %188, <4 x float> %187, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %190 = fptoui <4 x float> %189 to <4 x i16>
  store <4 x i16> %190, ptr %184, align 4, !tbaa !37
  %191 = getelementptr inbounds i8, ptr %0, i64 296
  store <4 x float> %187, ptr %191, align 8
  %192 = load i32, ptr %1, align 4, !tbaa !27
  %193 = trunc i32 %192 to i16
  %194 = getelementptr inbounds i8, ptr %0, i64 320
  store i16 %193, ptr %194, align 8, !tbaa !31
  %195 = load i32, ptr %2, align 4, !tbaa !27
  %196 = trunc i32 %195 to i16
  %197 = getelementptr inbounds i8, ptr %0, i64 322
  store i16 %196, ptr %197, align 2, !tbaa !36
  %198 = getelementptr inbounds i8, ptr %0, i64 324
  %199 = load <2 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 144), align 16, !tbaa !38
  %200 = fadd <2 x float> %199, %114
  %201 = load <4 x float>, ptr getelementptr inbounds (i8, ptr @nk_font_atlas_bake.nk_cursor_data, i64 152), align 8
  %202 = shufflevector <2 x float> %200, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %203 = shufflevector <4 x float> %202, <4 x float> %201, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
  %204 = fptoui <4 x float> %203 to <4 x i16>
  store <4 x i16> %204, ptr %198, align 4, !tbaa !37
  %205 = getelementptr inbounds i8, ptr %0, i64 336
  store <4 x float> %201, ptr %205, align 8
  %206 = load ptr, ptr %14, align 8, !tbaa !14
  %207 = load ptr, ptr %9, align 8
  call void %206(ptr %207, ptr noundef nonnull %44) #3
  %208 = load ptr, ptr %0, align 8, !tbaa !26
  br label %231

.lr.ph:                                           ; preds = %100, %.lr.ph
  %.0137167 = phi ptr [ %.0137, %.lr.ph ], [ %.0137165, %100 ]
  %209 = getelementptr inbounds i8, ptr %.0137167, i64 120
  %210 = load ptr, ptr %209, align 8, !tbaa !39
  %211 = getelementptr inbounds i8, ptr %210, i64 32
  %212 = load float, ptr %211, align 8, !tbaa !43
  %213 = getelementptr inbounds i8, ptr %210, i64 64
  %214 = load i32, ptr %213, align 8, !tbaa !45
  %215 = load ptr, ptr %56, align 8, !tbaa !23
  %216 = getelementptr inbounds i8, ptr %210, i64 56
  %217 = load ptr, ptr %216, align 8, !tbaa !46
  %218 = call ptr @nk_handle_ptr(ptr noundef null)
  call void @nk_font_init(ptr noundef nonnull %.0137167, float noundef %212, i32 noundef %214, ptr noundef %215, ptr noundef %217, ptr %218)
  %.0137 = load ptr, ptr %.0137167, align 8, !tbaa !30
  %.not163 = icmp eq ptr %.0137, null
  br i1 %.not163, label %.preheader.loopexit, label %.lr.ph, !llvm.loop !47

219:                                              ; preds = %58
  %220 = load ptr, ptr %14, align 8, !tbaa !14
  %221 = load ptr, ptr %9, align 8
  call void %220(ptr %221, ptr noundef nonnull %44) #3
  %222 = load ptr, ptr %56, align 8, !tbaa !23
  %.not159 = icmp eq ptr %222, null
  br i1 %.not159, label %226, label %223

223:                                              ; preds = %219
  %224 = load ptr, ptr %23, align 8, !tbaa !16
  %225 = load ptr, ptr %18, align 8
  call void %224(ptr %225, ptr noundef nonnull %222) #3
  store ptr null, ptr %56, align 8, !tbaa !23
  br label %226

226:                                              ; preds = %223, %219
  %227 = load ptr, ptr %0, align 8, !tbaa !26
  %.not160 = icmp eq ptr %227, null
  br i1 %.not160, label %231, label %228

228:                                              ; preds = %226
  %229 = load ptr, ptr %14, align 8, !tbaa !14
  %230 = load ptr, ptr %9, align 8
  call void %229(ptr %230, ptr noundef nonnull %227) #3
  store ptr null, ptr %0, align 8, !tbaa !26
  br label %231

231:                                              ; preds = %226, %228, %.preheader
  %.0 = phi ptr [ %208, %.preheader ], [ null, %228 ], [ null, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #3
  ret ptr %.0
}

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

; Function Attrs: nounwind uwtable
declare hidden ptr @nk_font_baker(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden i32 @nk_font_bake_pack(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_bake_custom_data(ptr noundef, i32 noundef, i32 noundef, i64, ptr noundef, i32 noundef, i32 noundef, i8 noundef signext, i8 noundef signext) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare hidden void @nk_font_init(ptr noundef, float noundef, i32 noundef, ptr noundef, ptr noundef, ptr) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @nk_handle_ptr(ptr noundef) local_unnamed_addr #2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn 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 #2 = { 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 = { nounwind }
attributes #4 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 48}
!6 = !{!"nk_font_atlas", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 40, !12, i64 64, !8, i64 72, !10, i64 352, !7, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !10, i64 392}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"nk_allocator", !8, i64 0, !7, i64 8, !7, i64 16}
!12 = !{!"nk_recti", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6}
!13 = !{!"short", !8, i64 0}
!14 = !{!6, !7, i64 56}
!15 = !{!6, !7, i64 24}
!16 = !{!6, !7, i64 32}
!17 = !{!6, !10, i64 392}
!18 = !{!6, !7, i64 368}
!19 = !{!6, !7, i64 384}
!20 = !{!21, !21, i64 0}
!21 = !{!"long", !8, i64 0}
!22 = !{!6, !10, i64 352}
!23 = !{!6, !7, i64 360}
!24 = !{!6, !13, i64 68}
!25 = !{!6, !13, i64 70}
!26 = !{!6, !7, i64 0}
!27 = !{!10, !10, i64 0}
!28 = !{!6, !10, i64 8}
!29 = !{!6, !10, i64 12}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !13, i64 8}
!32 = !{!"nk_cursor", !33, i64 0, !34, i64 24, !34, i64 32}
!33 = !{!"nk_image", !8, i64 0, !13, i64 8, !13, i64 10, !8, i64 12}
!34 = !{!"nk_vec2", !35, i64 0, !35, i64 4}
!35 = !{!"float", !8, i64 0}
!36 = !{!32, !13, i64 10}
!37 = !{!13, !13, i64 0}
!38 = !{!35, !35, i64 0}
!39 = !{!40, !7, i64 120}
!40 = !{!"nk_font", !7, i64 0, !41, i64 8, !42, i64 48, !35, i64 80, !7, i64 88, !7, i64 96, !10, i64 104, !8, i64 112, !7, i64 120}
!41 = !{!"nk_user_font", !8, i64 0, !35, i64 8, !7, i64 16, !7, i64 24, !8, i64 32}
!42 = !{!"nk_baked_font", !35, i64 0, !35, i64 4, !35, i64 8, !10, i64 12, !10, i64 16, !7, i64 24}
!43 = !{!44, !35, i64 32}
!44 = !{!"nk_font_config", !7, i64 0, !7, i64 8, !21, i64 16, !8, i64 24, !8, i64 25, !8, i64 26, !8, i64 27, !8, i64 28, !8, i64 29, !35, i64 32, !10, i64 36, !34, i64 40, !7, i64 48, !7, i64 56, !10, i64 64, !7, i64 72, !7, i64 80}
!45 = !{!44, !10, i64 64}
!46 = !{!44, !7, i64 56}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass