; LLVM IR from Dragons-Lake/REI :: sources/REI_Integration/3rdParty/imgui (imgui_draw)

; 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.ImVec2 = type { float, float }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.stbtt_pack_context = type { ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
%struct.stbtt_aligned_quad = type { float, float, float, float, float, float, float, float }
%struct.ImFontAtlas = type <{ i8, [3 x i8], i32, ptr, i32, i32, ptr, ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector.8, %struct.ImVector.9, %struct.ImVector.10, [1 x i32], [4 x i8] }>
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImFontConfig = type { ptr, i32, i8, i32, float, i32, i32, i8, %struct.ImVec2, %struct.ImVec2, ptr, float, float, i8, i32, float, i16, [40 x i8], ptr }
%struct.ImFont = type <{ %struct.ImVector.6, float, float, %struct.ImVector.0, %struct.ImVector.7, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, [2 x i8], float, float, float, i32, i8, [7 x i8] }>
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImFontBuildSrcData = type { %struct.stbtt_fontinfo, %struct.stbtt_pack_range, ptr, ptr, ptr, i32, i32, i32, %struct.ImBoolVector, %struct.ImVector.13 }
%struct.stbtt_fontinfo = type { ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.stbtt__buf, %struct.stbtt__buf, %struct.stbtt__buf, %struct.stbtt__buf, %struct.stbtt__buf, %struct.stbtt__buf }
%struct.stbtt__buf = type { ptr, i32, i32 }
%struct.stbtt_pack_range = type { float, i32, ptr, i32, ptr, i8, i8 }
%struct.ImBoolVector = type { %struct.ImVector.13 }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImFontBuildDstData = type { i32, i32, i32, %struct.ImBoolVector }
%struct.stbrp_rect = type { i32, i16, i16, i16, i16, i32 }
%struct.stbtt_packedchar = type { i16, i16, i16, i16, float, float, float, float, float }

@.str.1 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas = external hidden unnamed_addr constant [52 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [25 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

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #3

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImSqrtf(float noundef) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) #6

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN11ImFontAtlas21GetGlyphRangesDefaultEv(ptr noundef nonnull align 8 dereferenceable(116)) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas(ptr noundef %0) #8 personality ptr @__gxx_personality_v0 {
  %2 = alloca i1, align 1
  %3 = alloca ptr, align 8
  %4 = alloca %struct.ImVec2, align 4
  %5 = alloca %struct.ImVec2, align 4
  %6 = alloca %struct.ImVector.11, align 8
  %7 = alloca %struct.ImVector.12, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca %struct.ImVector.14, align 8
  %28 = alloca %struct.ImVector.15, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca float, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %struct.stbtt_pack_context, align 8
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca [256 x i8], align 16
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca float, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca float, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca ptr, align 8
  %71 = alloca float, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca %struct.stbtt_aligned_quad, align 4
  %75 = alloca float, align 4
  %76 = alloca float, align 4
  %77 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %78 = load ptr, ptr %3, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.ImFontAtlas, ptr %78, i32 0, i32 14
  %80 = getelementptr inbounds %struct.ImVector.10, ptr %79, i32 0, i32 0
  %81 = load i32, ptr %80, align 8, !tbaa !9
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %1
  br label %86

84:                                               ; preds = %1
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.1, i32 noundef 1847, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

85:                                               ; No predecessors!
  br label %86

86:                                               ; preds = %85, %83
  %87 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_Z42ImFontAtlasBuildRegisterDefaultCustomRectsP11ImFontAtlas(ptr noundef %87)
  %88 = load ptr, ptr %3, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.ImFontAtlas, ptr %88, i32 0, i32 3
  store ptr null, ptr %89, align 8, !tbaa !18
  %90 = load ptr, ptr %3, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ImFontAtlas, ptr %90, i32 0, i32 9
  store i32 0, ptr %91, align 4, !tbaa !19
  %92 = load ptr, ptr %3, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.ImFontAtlas, ptr %92, i32 0, i32 8
  store i32 0, ptr %93, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %4, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.ImFontAtlas, ptr %94, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 4 %4, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #11
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.ImFontAtlas, ptr %96, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %97, ptr align 4 %5, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #11
  %98 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN11ImFontAtlas12ClearTexDataEv(ptr noundef nonnull align 8 dereferenceable(116) %98)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #11
  call void @_ZN8ImVectorI18ImFontBuildSrcDataEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #11
  invoke void @_ZN8ImVectorI18ImFontBuildDstDataEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %99 unwind label %128

99:                                               ; preds = %86
  %100 = load ptr, ptr %3, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ImFontAtlas, ptr %100, i32 0, i32 14
  %102 = getelementptr inbounds %struct.ImVector.10, ptr %101, i32 0, i32 0
  %103 = load i32, ptr %102, align 8, !tbaa !9
  invoke void @_ZN8ImVectorI18ImFontBuildSrcDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %103)
          to label %104 unwind label %132

104:                                              ; preds = %99
  %105 = load ptr, ptr %3, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.ImFontAtlas, ptr %105, i32 0, i32 12
  %107 = getelementptr inbounds %struct.ImVector.8, ptr %106, i32 0, i32 0
  %108 = load i32, ptr %107, align 8, !tbaa !23
  invoke void @_ZN8ImVectorI18ImFontBuildDstDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %108)
          to label %109 unwind label %132

109:                                              ; preds = %104
  %110 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 2
  %111 = load ptr, ptr %110, align 8, !tbaa !24
  %112 = invoke noundef i32 @_ZNK8ImVectorI18ImFontBuildSrcDataE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %113 unwind label %132

113:                                              ; preds = %109
  %114 = sext i32 %112 to i64
  call void @llvm.memset.p0.i64(ptr align 8 %111, i8 0, i64 %114, i1 false)
  %115 = getelementptr inbounds %struct.ImVector.12, ptr %7, i32 0, i32 2
  %116 = load ptr, ptr %115, align 8, !tbaa !26
  %117 = invoke noundef i32 @_ZNK8ImVectorI18ImFontBuildDstDataE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %118 unwind label %132

118:                                              ; preds = %113
  %119 = sext i32 %117 to i64
  call void @llvm.memset.p0.i64(ptr align 8 %116, i8 0, i64 %119, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  store i32 0, ptr %10, align 4, !tbaa !28
  br label %120

120:                                              ; preds = %345, %118
  %121 = load i32, ptr %10, align 4, !tbaa !28
  %122 = load ptr, ptr %3, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.ImFontAtlas, ptr %122, i32 0, i32 14
  %124 = getelementptr inbounds %struct.ImVector.10, ptr %123, i32 0, i32 0
  %125 = load i32, ptr %124, align 8, !tbaa !9
  %126 = icmp slt i32 %121, %125
  br i1 %126, label %136, label %127

127:                                              ; preds = %120
  store i32 2, ptr %11, align 4
  br label %352

128:                                              ; preds = %86
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %8, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %9, align 4
  br label %1410

132:                                              ; preds = %113, %109, %104, %99
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %8, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %9, align 4
  br label %1409

136:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %137 = load i32, ptr %10, align 4, !tbaa !28
  %138 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %137)
          to label %139 unwind label %169

139:                                              ; preds = %136
  store ptr %138, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %140 = load ptr, ptr %3, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.ImFontAtlas, ptr %140, i32 0, i32 14
  %142 = load i32, ptr %10, align 4, !tbaa !28
  %143 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %141, i32 noundef %142)
          to label %144 unwind label %173

144:                                              ; preds = %139
  store ptr %143, ptr %13, align 8, !tbaa !5
  %145 = load ptr, ptr %13, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.ImFontConfig, ptr %145, i32 0, i32 18
  %147 = load ptr, ptr %146, align 8, !tbaa !29
  %148 = icmp ne ptr %147, null
  br i1 %148, label %149, label %165

149:                                              ; preds = %144
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.ImFontConfig, ptr %150, i32 0, i32 18
  %152 = load ptr, ptr %151, align 8, !tbaa !29
  %153 = invoke noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(113) %152)
          to label %154 unwind label %173

154:                                              ; preds = %149
  br i1 %153, label %155, label %163

155:                                              ; preds = %154
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.ImFontConfig, ptr %156, i32 0, i32 18
  %158 = load ptr, ptr %157, align 8, !tbaa !29
  %159 = getelementptr inbounds %struct.ImFont, ptr %158, i32 0, i32 7
  %160 = load ptr, ptr %159, align 8, !tbaa !32
  %161 = load ptr, ptr %3, align 8, !tbaa !5
  %162 = icmp eq ptr %160, %161
  br label %163

163:                                              ; preds = %155, %154
  %164 = phi i1 [ true, %154 ], [ %162, %155 ]
  br label %165

165:                                              ; preds = %163, %144
  %166 = phi i1 [ false, %144 ], [ %164, %163 ]
  br i1 %166, label %167, label %168

167:                                              ; preds = %165
  br label %178

168:                                              ; preds = %165
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.1, i32 noundef 1871, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

169:                                              ; preds = %136
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %8, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %9, align 4
  br label %351

173:                                              ; preds = %149, %139
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %8, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %9, align 4
  br label %350

177:                                              ; No predecessors!
  br label %178

178:                                              ; preds = %177, %167
  %179 = load ptr, ptr %12, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %179, i32 0, i32 5
  store i32 -1, ptr %180, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  store i32 0, ptr %14, align 4, !tbaa !28
  br label %181

181:                                              ; preds = %216, %178
  %182 = load i32, ptr %14, align 4, !tbaa !28
  %183 = load ptr, ptr %3, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImFontAtlas, ptr %183, i32 0, i32 12
  %185 = getelementptr inbounds %struct.ImVector.8, ptr %184, i32 0, i32 0
  %186 = load i32, ptr %185, align 8, !tbaa !23
  %187 = icmp slt i32 %182, %186
  br i1 %187, label %188, label %193

188:                                              ; preds = %181
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %189, i32 0, i32 5
  %191 = load i32, ptr %190, align 8, !tbaa !37
  %192 = icmp eq i32 %191, -1
  br label %193

193:                                              ; preds = %188, %181
  %194 = phi i1 [ false, %181 ], [ %192, %188 ]
  br i1 %194, label %196, label %195

195:                                              ; preds = %193
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %219

196:                                              ; preds = %193
  %197 = load ptr, ptr %13, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ImFontConfig, ptr %197, i32 0, i32 18
  %199 = load ptr, ptr %198, align 8, !tbaa !29
  %200 = load ptr, ptr %3, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.ImFontAtlas, ptr %200, i32 0, i32 12
  %202 = load i32, ptr %14, align 4, !tbaa !28
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP6ImFontEixEi(ptr noundef nonnull align 8 dereferenceable(16) %201, i32 noundef %202)
          to label %204 unwind label %211

204:                                              ; preds = %196
  %205 = load ptr, ptr %203, align 8, !tbaa !5
  %206 = icmp eq ptr %199, %205
  br i1 %206, label %207, label %215

207:                                              ; preds = %204
  %208 = load i32, ptr %14, align 4, !tbaa !28
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %209, i32 0, i32 5
  store i32 %208, ptr %210, align 8, !tbaa !37
  br label %215

211:                                              ; preds = %196
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %8, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %350

215:                                              ; preds = %207, %204
  br label %216

216:                                              ; preds = %215
  %217 = load i32, ptr %14, align 4, !tbaa !28
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %14, align 4, !tbaa !28
  br label %181, !llvm.loop !44

219:                                              ; preds = %195
  %220 = load ptr, ptr %12, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %220, i32 0, i32 5
  %222 = load i32, ptr %221, align 8, !tbaa !37
  %223 = icmp ne i32 %222, -1
  br i1 %223, label %224, label %225

224:                                              ; preds = %219
  br label %227

225:                                              ; preds = %219
  call void @__assert_fail(ptr noundef @.str.28, ptr noundef @.str.1, i32 noundef 1878, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

226:                                              ; No predecessors!
  br label %227

227:                                              ; preds = %226, %224
  %228 = load ptr, ptr %12, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %228, i32 0, i32 5
  %230 = load i32, ptr %229, align 8, !tbaa !37
  %231 = icmp eq i32 %230, -1
  br i1 %231, label %232, label %233

232:                                              ; preds = %227
  store i1 false, ptr %2, align 1
  store i32 1, ptr %11, align 4
  br label %342

233:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.ImFontConfig, ptr %234, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !46
  %237 = load ptr, ptr %13, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.ImFontConfig, ptr %237, i32 0, i32 3
  %239 = load i32, ptr %238, align 8, !tbaa !47
  %240 = invoke noundef i32 @_ZL27stbtt_GetFontOffsetForIndexPKhi(ptr noundef %236, i32 noundef %239)
          to label %241 unwind label %249

241:                                              ; preds = %233
  store i32 %240, ptr %15, align 4, !tbaa !28
  %242 = load i32, ptr %15, align 4, !tbaa !28
  %243 = icmp sge i32 %242, 0
  br i1 %243, label %244, label %245

244:                                              ; preds = %241
  br label %245

245:                                              ; preds = %244, %241
  %246 = phi i1 [ false, %241 ], [ true, %244 ]
  br i1 %246, label %247, label %248

247:                                              ; preds = %245
  br label %254

248:                                              ; preds = %245
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.1, i32 noundef 1884, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

249:                                              ; preds = %254, %233
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %8, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %9, align 4
  br label %349

253:                                              ; No predecessors!
  br label %254

254:                                              ; preds = %253, %247
  %255 = load ptr, ptr %12, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %255, i32 0, i32 0
  %257 = load ptr, ptr %13, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.ImFontConfig, ptr %257, i32 0, i32 0
  %259 = load ptr, ptr %258, align 8, !tbaa !46
  %260 = load i32, ptr %15, align 4, !tbaa !28
  %261 = invoke noundef i32 @_ZL14stbtt_InitFontP14stbtt_fontinfoPKhi(ptr noundef %256, ptr noundef %259, i32 noundef %260)
          to label %262 unwind label %249

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

264:                                              ; preds = %262
  store i1 false, ptr %2, align 1
  store i32 1, ptr %11, align 4
  br label %341

265:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %266, i32 0, i32 5
  %268 = load i32, ptr %267, align 8, !tbaa !37
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %268)
          to label %270 unwind label %303

270:                                              ; preds = %265
  store ptr %269, ptr %16, align 8, !tbaa !5
  %271 = load ptr, ptr %13, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImFontConfig, ptr %271, i32 0, i32 10
  %273 = load ptr, ptr %272, align 8, !tbaa !48
  %274 = icmp ne ptr %273, null
  br i1 %274, label %275, label %279

275:                                              ; preds = %270
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ImFontConfig, ptr %276, i32 0, i32 10
  %278 = load ptr, ptr %277, align 8, !tbaa !48
  br label %283

279:                                              ; preds = %270
  %280 = load ptr, ptr %3, align 8, !tbaa !5
  %281 = invoke noundef ptr @_ZN11ImFontAtlas21GetGlyphRangesDefaultEv(ptr noundef nonnull align 8 dereferenceable(116) %280)
          to label %282 unwind label %303

282:                                              ; preds = %279
  br label %283

283:                                              ; preds = %282, %275
  %284 = phi ptr [ %278, %275 ], [ %281, %282 ]
  %285 = load ptr, ptr %12, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %285, i32 0, i32 4
  store ptr %284, ptr %286, align 8, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %287 = load ptr, ptr %12, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %287, i32 0, i32 4
  %289 = load ptr, ptr %288, align 8, !tbaa !49
  store ptr %289, ptr %17, align 8, !tbaa !5
  br label %290

290:                                              ; preds = %319, %283
  %291 = load ptr, ptr %17, align 8, !tbaa !5
  %292 = getelementptr inbounds i16, ptr %291, i64 0
  %293 = load i16, ptr %292, align 2, !tbaa !50
  %294 = icmp ne i16 %293, 0
  br i1 %294, label %295, label %300

295:                                              ; preds = %290
  %296 = load ptr, ptr %17, align 8, !tbaa !5
  %297 = getelementptr inbounds i16, ptr %296, i64 1
  %298 = load i16, ptr %297, align 2, !tbaa !50
  %299 = icmp ne i16 %298, 0
  br label %300

300:                                              ; preds = %295, %290
  %301 = phi i1 [ false, %290 ], [ %299, %295 ]
  br i1 %301, label %307, label %302

302:                                              ; preds = %300
  store i32 8, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %326

303:                                              ; preds = %326, %279, %265
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %8, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %9, align 4
  br label %348

307:                                              ; preds = %300
  %308 = load ptr, ptr %12, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %308, i32 0, i32 6
  %310 = load i32, ptr %309, align 4, !tbaa !51
  %311 = load ptr, ptr %17, align 8, !tbaa !5
  %312 = getelementptr inbounds i16, ptr %311, i64 1
  %313 = load i16, ptr %312, align 2, !tbaa !50
  %314 = zext i16 %313 to i32
  %315 = invoke noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %310, i32 noundef %314)
          to label %316 unwind label %322

316:                                              ; preds = %307
  %317 = load ptr, ptr %12, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %317, i32 0, i32 6
  store i32 %315, ptr %318, align 4, !tbaa !51
  br label %319

319:                                              ; preds = %316
  %320 = load ptr, ptr %17, align 8, !tbaa !5
  %321 = getelementptr inbounds i16, ptr %320, i64 2
  store ptr %321, ptr %17, align 8, !tbaa !5
  br label %290, !llvm.loop !52

322:                                              ; preds = %307
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %8, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  br label %348

326:                                              ; preds = %302
  %327 = load ptr, ptr %16, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %327, i32 0, i32 0
  %329 = load i32, ptr %328, align 8, !tbaa !53
  %330 = add nsw i32 %329, 1
  store i32 %330, ptr %328, align 8, !tbaa !53
  %331 = load ptr, ptr %16, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %331, i32 0, i32 1
  %333 = load i32, ptr %332, align 4, !tbaa !55
  %334 = load ptr, ptr %12, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %334, i32 0, i32 6
  %336 = load i32, ptr %335, align 4, !tbaa !51
  %337 = invoke noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %333, i32 noundef %336)
          to label %338 unwind label %303

338:                                              ; preds = %326
  %339 = load ptr, ptr %16, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %339, i32 0, i32 1
  store i32 %337, ptr %340, align 4, !tbaa !55
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  store i32 0, ptr %11, align 4
  br label %341

341:                                              ; preds = %338, %264
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  br label %342

342:                                              ; preds = %341, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  %343 = load i32, ptr %11, align 4
  switch i32 %343, label %352 [
    i32 0, label %344
  ]

344:                                              ; preds = %342
  br label %345

345:                                              ; preds = %344
  %346 = load i32, ptr %10, align 4, !tbaa !28
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %10, align 4, !tbaa !28
  br label %120, !llvm.loop !56

348:                                              ; preds = %322, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  br label %349

349:                                              ; preds = %348, %249
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  br label %350

350:                                              ; preds = %349, %211, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  br label %351

351:                                              ; preds = %350, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %1409

352:                                              ; preds = %342, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  %353 = load i32, ptr %11, align 4
  switch i32 %353, label %1407 [
    i32 2, label %354
  ]

354:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  store i32 0, ptr %18, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !28
  br label %355

355:                                              ; preds = %474, %354
  %356 = load i32, ptr %19, align 4, !tbaa !28
  %357 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %358 = load i32, ptr %357, align 8, !tbaa !57
  %359 = icmp slt i32 %356, %358
  br i1 %359, label %361, label %360

360:                                              ; preds = %355
  store i32 11, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %479

361:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  %362 = load i32, ptr %19, align 4, !tbaa !28
  %363 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %362)
          to label %364 unwind label %390

364:                                              ; preds = %361
  store ptr %363, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %365, i32 0, i32 5
  %367 = load i32, ptr %366, align 8, !tbaa !37
  %368 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %367)
          to label %369 unwind label %394

369:                                              ; preds = %364
  store ptr %368, ptr %21, align 8, !tbaa !5
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %370, i32 0, i32 8
  %372 = load ptr, ptr %20, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %372, i32 0, i32 6
  %374 = load i32, ptr %373, align 4, !tbaa !51
  %375 = add nsw i32 %374, 1
  invoke void @_ZN12ImBoolVector6ResizeEi(ptr noundef nonnull align 8 dereferenceable(16) %371, i32 noundef %375)
          to label %376 unwind label %394

376:                                              ; preds = %369
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %377, i32 0, i32 3
  %379 = getelementptr inbounds %struct.ImBoolVector, ptr %378, i32 0, i32 0
  %380 = invoke noundef zeroext i1 @_ZNK8ImVectorIiE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %379)
          to label %381 unwind label %394

381:                                              ; preds = %376
  br i1 %380, label %382, label %398

382:                                              ; preds = %381
  %383 = load ptr, ptr %21, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %383, i32 0, i32 3
  %385 = load ptr, ptr %21, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %385, i32 0, i32 1
  %387 = load i32, ptr %386, align 4, !tbaa !55
  %388 = add nsw i32 %387, 1
  invoke void @_ZN12ImBoolVector6ResizeEi(ptr noundef nonnull align 8 dereferenceable(16) %384, i32 noundef %388)
          to label %389 unwind label %394

389:                                              ; preds = %382
  br label %398

390:                                              ; preds = %361
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %8, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %9, align 4
  br label %478

394:                                              ; preds = %382, %376, %369, %364
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %8, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %9, align 4
  br label %477

398:                                              ; preds = %389, %381
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %399 = load ptr, ptr %20, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %399, i32 0, i32 4
  %401 = load ptr, ptr %400, align 8, !tbaa !49
  store ptr %401, ptr %22, align 8, !tbaa !5
  br label %402

402:                                              ; preds = %470, %398
  %403 = load ptr, ptr %22, align 8, !tbaa !5
  %404 = getelementptr inbounds i16, ptr %403, i64 0
  %405 = load i16, ptr %404, align 2, !tbaa !50
  %406 = icmp ne i16 %405, 0
  br i1 %406, label %407, label %412

407:                                              ; preds = %402
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = getelementptr inbounds i16, ptr %408, i64 1
  %410 = load i16, ptr %409, align 2, !tbaa !50
  %411 = icmp ne i16 %410, 0
  br label %412

412:                                              ; preds = %407, %402
  %413 = phi i1 [ false, %402 ], [ %411, %407 ]
  br i1 %413, label %415, label %414

414:                                              ; preds = %412
  store i32 14, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %473

415:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  %416 = load ptr, ptr %22, align 8, !tbaa !5
  %417 = getelementptr inbounds i16, ptr %416, i64 0
  %418 = load i16, ptr %417, align 2, !tbaa !50
  %419 = zext i16 %418 to i32
  store i32 %419, ptr %23, align 4, !tbaa !28
  br label %420

420:                                              ; preds = %466, %415
  %421 = load i32, ptr %23, align 4, !tbaa !28
  %422 = load ptr, ptr %22, align 8, !tbaa !5
  %423 = getelementptr inbounds i16, ptr %422, i64 1
  %424 = load i16, ptr %423, align 2, !tbaa !50
  %425 = zext i16 %424 to i32
  %426 = icmp sle i32 %421, %425
  br i1 %426, label %428, label %427

427:                                              ; preds = %420
  store i32 17, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %469

428:                                              ; preds = %420
  %429 = load ptr, ptr %21, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %429, i32 0, i32 3
  %431 = load i32, ptr %23, align 4, !tbaa !28
  %432 = invoke noundef zeroext i1 @_ZNK12ImBoolVector6GetBitEi(ptr noundef nonnull align 8 dereferenceable(16) %430, i32 noundef %431)
          to label %433 unwind label %435

433:                                              ; preds = %428
  br i1 %432, label %434, label %439

434:                                              ; preds = %433
  br label %466

435:                                              ; preds = %459, %447, %439, %428
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %8, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %477

439:                                              ; preds = %433
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %23, align 4, !tbaa !28
  %443 = invoke noundef i32 @_ZL20stbtt_FindGlyphIndexPK14stbtt_fontinfoi(ptr noundef %441, i32 noundef %442)
          to label %444 unwind label %435

444:                                              ; preds = %439
  %445 = icmp ne i32 %443, 0
  br i1 %445, label %447, label %446

446:                                              ; preds = %444
  br label %466

447:                                              ; preds = %444
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %448, i32 0, i32 7
  %450 = load i32, ptr %449, align 8, !tbaa !58
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %449, align 8, !tbaa !58
  %452 = load ptr, ptr %21, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %452, i32 0, i32 2
  %454 = load i32, ptr %453, align 8, !tbaa !59
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %453, align 8, !tbaa !59
  %456 = load ptr, ptr %20, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %456, i32 0, i32 8
  %458 = load i32, ptr %23, align 4, !tbaa !28
  invoke void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16) %457, i32 noundef %458, i1 noundef zeroext true)
          to label %459 unwind label %435

459:                                              ; preds = %447
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %460, i32 0, i32 3
  %462 = load i32, ptr %23, align 4, !tbaa !28
  invoke void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16) %461, i32 noundef %462, i1 noundef zeroext true)
          to label %463 unwind label %435

463:                                              ; preds = %459
  %464 = load i32, ptr %18, align 4, !tbaa !28
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %18, align 4, !tbaa !28
  br label %466

466:                                              ; preds = %463, %446, %434
  %467 = load i32, ptr %23, align 4, !tbaa !28
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %23, align 4, !tbaa !28
  br label %420, !llvm.loop !60

469:                                              ; preds = %427
  br label %470

470:                                              ; preds = %469
  %471 = load ptr, ptr %22, align 8, !tbaa !5
  %472 = getelementptr inbounds i16, ptr %471, i64 2
  store ptr %472, ptr %22, align 8, !tbaa !5
  br label %402, !llvm.loop !61

473:                                              ; preds = %414
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  br label %474

474:                                              ; preds = %473
  %475 = load i32, ptr %19, align 4, !tbaa !28
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %19, align 4, !tbaa !28
  br label %355, !llvm.loop !62

477:                                              ; preds = %435, %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  br label %478

478:                                              ; preds = %477, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %1406

479:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  store i32 0, ptr %24, align 4, !tbaa !28
  br label %480

480:                                              ; preds = %520, %479
  %481 = load i32, ptr %24, align 4, !tbaa !28
  %482 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %483 = load i32, ptr %482, align 8, !tbaa !57
  %484 = icmp slt i32 %481, %483
  br i1 %484, label %486, label %485

485:                                              ; preds = %480
  store i32 20, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %523

486:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %487 = load i32, ptr %24, align 4, !tbaa !28
  %488 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %487)
          to label %489 unwind label %514

489:                                              ; preds = %486
  store ptr %488, ptr %25, align 8, !tbaa !5
  %490 = load ptr, ptr %25, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %490, i32 0, i32 9
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %492, i32 0, i32 7
  %494 = load i32, ptr %493, align 8, !tbaa !58
  invoke void @_ZN8ImVectorIiE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %491, i32 noundef %494)
          to label %495 unwind label %514

495:                                              ; preds = %489
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %496, i32 0, i32 8
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %498, i32 0, i32 9
  invoke void @_ZL31UnpackBoolVectorToFlatIndexListPK12ImBoolVectorP8ImVectorIiE(ptr noundef %497, ptr noundef %499)
          to label %500 unwind label %514

500:                                              ; preds = %495
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %501, i32 0, i32 8
  invoke void @_ZN12ImBoolVector5ClearEv(ptr noundef nonnull align 8 dereferenceable(16) %502)
          to label %503 unwind label %514

503:                                              ; preds = %500
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %504, i32 0, i32 9
  %506 = getelementptr inbounds %struct.ImVector.13, ptr %505, i32 0, i32 0
  %507 = load i32, ptr %506, align 8, !tbaa !63
  %508 = load ptr, ptr %25, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %508, i32 0, i32 7
  %510 = load i32, ptr %509, align 8, !tbaa !58
  %511 = icmp eq i32 %507, %510
  br i1 %511, label %512, label %513

512:                                              ; preds = %503
  br label %519

513:                                              ; preds = %503
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.1, i32 noundef 1931, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

514:                                              ; preds = %500, %495, %489, %486
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %8, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %1406

518:                                              ; No predecessors!
  br label %519

519:                                              ; preds = %518, %512
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %520

520:                                              ; preds = %519
  %521 = load i32, ptr %24, align 4, !tbaa !28
  %522 = add nsw i32 %521, 1
  store i32 %522, ptr %24, align 4, !tbaa !28
  br label %480, !llvm.loop !64

523:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #11
  store i32 0, ptr %26, align 4, !tbaa !28
  br label %524

524:                                              ; preds = %536, %523
  %525 = load i32, ptr %26, align 4, !tbaa !28
  %526 = getelementptr inbounds %struct.ImVector.12, ptr %7, i32 0, i32 0
  %527 = load i32, ptr %526, align 8, !tbaa !65
  %528 = icmp slt i32 %525, %527
  br i1 %528, label %530, label %529

529:                                              ; preds = %524
  store i32 23, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %543

530:                                              ; preds = %524
  %531 = load i32, ptr %26, align 4, !tbaa !28
  %532 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %531)
          to label %533 unwind label %539

533:                                              ; preds = %530
  %534 = getelementptr inbounds %struct.ImFontBuildDstData, ptr %532, i32 0, i32 3
  invoke void @_ZN12ImBoolVector5ClearEv(ptr noundef nonnull align 8 dereferenceable(16) %534)
          to label %535 unwind label %539

535:                                              ; preds = %533
  br label %536

536:                                              ; preds = %535
  %537 = load i32, ptr %26, align 4, !tbaa !28
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %26, align 4, !tbaa !28
  br label %524, !llvm.loop !66

539:                                              ; preds = %533, %530
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %8, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  br label %1406

543:                                              ; preds = %529
  invoke void @_ZN8ImVectorI18ImFontBuildDstDataE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %544 unwind label %567

544:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #11
  invoke void @_ZN8ImVectorI10stbrp_rectEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %545 unwind label %571

545:                                              ; preds = %544
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #11
  invoke void @_ZN8ImVectorI16stbtt_packedcharEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %546 unwind label %575

546:                                              ; preds = %545
  %547 = load i32, ptr %18, align 4, !tbaa !28
  invoke void @_ZN8ImVectorI10stbrp_rectE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %27, i32 noundef %547)
          to label %548 unwind label %579

548:                                              ; preds = %546
  %549 = load i32, ptr %18, align 4, !tbaa !28
  invoke void @_ZN8ImVectorI16stbtt_packedcharE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %28, i32 noundef %549)
          to label %550 unwind label %579

550:                                              ; preds = %548
  %551 = getelementptr inbounds %struct.ImVector.14, ptr %27, i32 0, i32 2
  %552 = load ptr, ptr %551, align 8, !tbaa !67
  %553 = invoke noundef i32 @_ZNK8ImVectorI10stbrp_rectE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %554 unwind label %579

554:                                              ; preds = %550
  %555 = sext i32 %553 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %552, i8 0, i64 %555, i1 false)
  %556 = getelementptr inbounds %struct.ImVector.15, ptr %28, i32 0, i32 2
  %557 = load ptr, ptr %556, align 8, !tbaa !69
  %558 = invoke noundef i32 @_ZNK8ImVectorI16stbtt_packedcharE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %559 unwind label %579

559:                                              ; preds = %554
  %560 = sext i32 %558 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %557, i8 0, i64 %560, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #11
  store i32 0, ptr %29, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store i32 0, ptr %30, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 0, ptr %32, align 4, !tbaa !28
  br label %561

561:                                              ; preds = %808, %559
  %562 = load i32, ptr %32, align 4, !tbaa !28
  %563 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %564 = load i32, ptr %563, align 8, !tbaa !57
  %565 = icmp slt i32 %562, %564
  br i1 %565, label %583, label %566

566:                                              ; preds = %561
  store i32 26, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %814

567:                                              ; preds = %543
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %8, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %9, align 4
  br label %1406

571:                                              ; preds = %544
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %8, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %9, align 4
  br label %1405

575:                                              ; preds = %545
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %8, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %9, align 4
  br label %1404

579:                                              ; preds = %554, %550, %548, %546
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %8, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %9, align 4
  br label %1403

583:                                              ; preds = %561
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %584 = load i32, ptr %32, align 4, !tbaa !28
  %585 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %584)
          to label %586 unwind label %592

586:                                              ; preds = %583
  store ptr %585, ptr %33, align 8, !tbaa !5
  %587 = load ptr, ptr %33, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %587, i32 0, i32 7
  %589 = load i32, ptr %588, align 8, !tbaa !58
  %590 = icmp eq i32 %589, 0
  br i1 %590, label %591, label %596

591:                                              ; preds = %586
  store i32 28, ptr %11, align 4
  br label %805

592:                                              ; preds = %599, %596, %583
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %8, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %9, align 4
  br label %813

596:                                              ; preds = %586
  %597 = load i32, ptr %30, align 4, !tbaa !28
  %598 = invoke noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI10stbrp_rectEixEi(ptr noundef nonnull align 8 dereferenceable(16) %27, i32 noundef %597)
          to label %599 unwind label %592

599:                                              ; preds = %596
  %600 = load ptr, ptr %33, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %600, i32 0, i32 2
  store ptr %598, ptr %601, align 8, !tbaa !71
  %602 = load i32, ptr %31, align 4, !tbaa !28
  %603 = invoke noundef nonnull align 4 dereferenceable(28) ptr @_ZN8ImVectorI16stbtt_packedcharEixEi(ptr noundef nonnull align 8 dereferenceable(16) %28, i32 noundef %602)
          to label %604 unwind label %592

604:                                              ; preds = %599
  %605 = load ptr, ptr %33, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %605, i32 0, i32 3
  store ptr %603, ptr %606, align 8, !tbaa !72
  %607 = load ptr, ptr %33, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %607, i32 0, i32 7
  %609 = load i32, ptr %608, align 8, !tbaa !58
  %610 = load i32, ptr %30, align 4, !tbaa !28
  %611 = add nsw i32 %610, %609
  store i32 %611, ptr %30, align 4, !tbaa !28
  %612 = load ptr, ptr %33, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %612, i32 0, i32 7
  %614 = load i32, ptr %613, align 8, !tbaa !58
  %615 = load i32, ptr %31, align 4, !tbaa !28
  %616 = add nsw i32 %615, %614
  store i32 %616, ptr %31, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.ImFontAtlas, ptr %617, i32 0, i32 14
  %619 = load i32, ptr %32, align 4, !tbaa !28
  %620 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %618, i32 noundef %619)
          to label %621 unwind label %699

621:                                              ; preds = %604
  store ptr %620, ptr %34, align 8, !tbaa !5
  %622 = load ptr, ptr %34, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImFontConfig, ptr %622, i32 0, i32 4
  %624 = load float, ptr %623, align 4, !tbaa !73
  %625 = load ptr, ptr %33, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %625, i32 0, i32 1
  %627 = getelementptr inbounds %struct.stbtt_pack_range, ptr %626, i32 0, i32 0
  store float %624, ptr %627, align 8, !tbaa !74
  %628 = load ptr, ptr %33, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %628, i32 0, i32 1
  %630 = getelementptr inbounds %struct.stbtt_pack_range, ptr %629, i32 0, i32 1
  store i32 0, ptr %630, align 4, !tbaa !75
  %631 = load ptr, ptr %33, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %631, i32 0, i32 9
  %633 = getelementptr inbounds %struct.ImVector.13, ptr %632, i32 0, i32 2
  %634 = load ptr, ptr %633, align 8, !tbaa !76
  %635 = load ptr, ptr %33, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %635, i32 0, i32 1
  %637 = getelementptr inbounds %struct.stbtt_pack_range, ptr %636, i32 0, i32 2
  store ptr %634, ptr %637, align 8, !tbaa !77
  %638 = load ptr, ptr %33, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %638, i32 0, i32 9
  %640 = getelementptr inbounds %struct.ImVector.13, ptr %639, i32 0, i32 0
  %641 = load i32, ptr %640, align 8, !tbaa !63
  %642 = load ptr, ptr %33, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %642, i32 0, i32 1
  %644 = getelementptr inbounds %struct.stbtt_pack_range, ptr %643, i32 0, i32 3
  store i32 %641, ptr %644, align 8, !tbaa !78
  %645 = load ptr, ptr %33, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %645, i32 0, i32 3
  %647 = load ptr, ptr %646, align 8, !tbaa !72
  %648 = load ptr, ptr %33, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %648, i32 0, i32 1
  %650 = getelementptr inbounds %struct.stbtt_pack_range, ptr %649, i32 0, i32 4
  store ptr %647, ptr %650, align 8, !tbaa !79
  %651 = load ptr, ptr %34, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.ImFontConfig, ptr %651, i32 0, i32 5
  %653 = load i32, ptr %652, align 8, !tbaa !80
  %654 = trunc i32 %653 to i8
  %655 = load ptr, ptr %33, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %655, i32 0, i32 1
  %657 = getelementptr inbounds %struct.stbtt_pack_range, ptr %656, i32 0, i32 5
  store i8 %654, ptr %657, align 8, !tbaa !81
  %658 = load ptr, ptr %34, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImFontConfig, ptr %658, i32 0, i32 6
  %660 = load i32, ptr %659, align 4, !tbaa !82
  %661 = trunc i32 %660 to i8
  %662 = load ptr, ptr %33, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %662, i32 0, i32 1
  %664 = getelementptr inbounds %struct.stbtt_pack_range, ptr %663, i32 0, i32 6
  store i8 %661, ptr %664, align 1, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  %665 = load ptr, ptr %34, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImFontConfig, ptr %665, i32 0, i32 4
  %667 = load float, ptr %666, align 4, !tbaa !73
  %668 = fcmp ogt float %667, 0.000000e+00
  br i1 %668, label %669, label %677

669:                                              ; preds = %621
  %670 = load ptr, ptr %33, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %670, i32 0, i32 0
  %672 = load ptr, ptr %34, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImFontConfig, ptr %672, i32 0, i32 4
  %674 = load float, ptr %673, align 4, !tbaa !73
  %675 = invoke noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef %671, float noundef %674)
          to label %676 unwind label %703

676:                                              ; preds = %669
  br label %686

677:                                              ; preds = %621
  %678 = load ptr, ptr %33, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %678, i32 0, i32 0
  %680 = load ptr, ptr %34, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImFontConfig, ptr %680, i32 0, i32 4
  %682 = load float, ptr %681, align 4, !tbaa !73
  %683 = fneg float %682
  %684 = invoke noundef float @_ZL31stbtt_ScaleForMappingEmToPixelsPK14stbtt_fontinfof(ptr noundef %679, float noundef %683)
          to label %685 unwind label %703

685:                                              ; preds = %677
  br label %686

686:                                              ; preds = %685, %676
  %687 = phi float [ %675, %676 ], [ %684, %685 ]
  store float %687, ptr %35, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  %688 = load ptr, ptr %3, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImFontAtlas, ptr %688, i32 0, i32 5
  %690 = load i32, ptr %689, align 4, !tbaa !84
  store i32 %690, ptr %36, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  store i32 0, ptr %37, align 4, !tbaa !28
  br label %691

691:                                              ; preds = %801, %686
  %692 = load i32, ptr %37, align 4, !tbaa !28
  %693 = load ptr, ptr %33, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %693, i32 0, i32 9
  %695 = getelementptr inbounds %struct.ImVector.13, ptr %694, i32 0, i32 0
  %696 = load i32, ptr %695, align 8, !tbaa !63
  %697 = icmp slt i32 %692, %696
  br i1 %697, label %707, label %698

698:                                              ; preds = %691
  store i32 29, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %804

699:                                              ; preds = %604
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %8, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %9, align 4
  br label %812

703:                                              ; preds = %677, %669
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %8, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %9, align 4
  br label %811

707:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #11
  %708 = load ptr, ptr %33, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %708, i32 0, i32 0
  %710 = load ptr, ptr %33, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %710, i32 0, i32 9
  %712 = load i32, ptr %37, align 4, !tbaa !28
  %713 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiEixEi(ptr noundef nonnull align 8 dereferenceable(16) %711, i32 noundef %712)
          to label %714 unwind label %722

714:                                              ; preds = %707
  %715 = load i32, ptr %713, align 4, !tbaa !28
  %716 = invoke noundef i32 @_ZL20stbtt_FindGlyphIndexPK14stbtt_fontinfoi(ptr noundef %709, i32 noundef %715)
          to label %717 unwind label %722

717:                                              ; preds = %714
  store i32 %716, ptr %42, align 4, !tbaa !28
  %718 = load i32, ptr %42, align 4, !tbaa !28
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %721

720:                                              ; preds = %717
  br label %727

721:                                              ; preds = %717
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.1, i32 noundef 1978, ptr noundef @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #10
  unreachable

722:                                              ; preds = %727, %714, %707
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %8, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %811

726:                                              ; No predecessors!
  br label %727

727:                                              ; preds = %726, %720
  %728 = load ptr, ptr %33, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %728, i32 0, i32 0
  %730 = load i32, ptr %42, align 4, !tbaa !28
  %731 = load float, ptr %35, align 4, !tbaa !22
  %732 = load ptr, ptr %34, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.ImFontConfig, ptr %732, i32 0, i32 5
  %734 = load i32, ptr %733, align 8, !tbaa !80
  %735 = sitofp i32 %734 to float
  %736 = fmul float %731, %735
  %737 = load float, ptr %35, align 4, !tbaa !22
  %738 = load ptr, ptr %34, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.ImFontConfig, ptr %738, i32 0, i32 6
  %740 = load i32, ptr %739, align 4, !tbaa !82
  %741 = sitofp i32 %740 to float
  %742 = fmul float %737, %741
  invoke void @_ZL31stbtt_GetGlyphBitmapBoxSubpixelPK14stbtt_fontinfoiffffPiS2_S2_S2_(ptr noundef %729, i32 noundef %730, float noundef %736, float noundef %742, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41)
          to label %743 unwind label %722

743:                                              ; preds = %727
  %744 = load i32, ptr %40, align 4, !tbaa !28
  %745 = load i32, ptr %38, align 4, !tbaa !28
  %746 = sub nsw i32 %744, %745
  %747 = load i32, ptr %36, align 4, !tbaa !28
  %748 = add nsw i32 %746, %747
  %749 = load ptr, ptr %34, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImFontConfig, ptr %749, i32 0, i32 5
  %751 = load i32, ptr %750, align 8, !tbaa !80
  %752 = add nsw i32 %748, %751
  %753 = sub nsw i32 %752, 1
  %754 = trunc i32 %753 to i16
  %755 = load ptr, ptr %33, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %755, i32 0, i32 2
  %757 = load ptr, ptr %756, align 8, !tbaa !71
  %758 = load i32, ptr %37, align 4, !tbaa !28
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds %struct.stbrp_rect, ptr %757, i64 %759
  %761 = getelementptr inbounds %struct.stbrp_rect, ptr %760, i32 0, i32 1
  store i16 %754, ptr %761, align 4, !tbaa !85
  %762 = load i32, ptr %41, align 4, !tbaa !28
  %763 = load i32, ptr %39, align 4, !tbaa !28
  %764 = sub nsw i32 %762, %763
  %765 = load i32, ptr %36, align 4, !tbaa !28
  %766 = add nsw i32 %764, %765
  %767 = load ptr, ptr %34, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.ImFontConfig, ptr %767, i32 0, i32 6
  %769 = load i32, ptr %768, align 4, !tbaa !82
  %770 = add nsw i32 %766, %769
  %771 = sub nsw i32 %770, 1
  %772 = trunc i32 %771 to i16
  %773 = load ptr, ptr %33, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %773, i32 0, i32 2
  %775 = load ptr, ptr %774, align 8, !tbaa !71
  %776 = load i32, ptr %37, align 4, !tbaa !28
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds %struct.stbrp_rect, ptr %775, i64 %777
  %779 = getelementptr inbounds %struct.stbrp_rect, ptr %778, i32 0, i32 2
  store i16 %772, ptr %779, align 2, !tbaa !87
  %780 = load ptr, ptr %33, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %780, i32 0, i32 2
  %782 = load ptr, ptr %781, align 8, !tbaa !71
  %783 = load i32, ptr %37, align 4, !tbaa !28
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %struct.stbrp_rect, ptr %782, i64 %784
  %786 = getelementptr inbounds %struct.stbrp_rect, ptr %785, i32 0, i32 1
  %787 = load i16, ptr %786, align 4, !tbaa !85
  %788 = zext i16 %787 to i32
  %789 = load ptr, ptr %33, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %789, i32 0, i32 2
  %791 = load ptr, ptr %790, align 8, !tbaa !71
  %792 = load i32, ptr %37, align 4, !tbaa !28
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds %struct.stbrp_rect, ptr %791, i64 %793
  %795 = getelementptr inbounds %struct.stbrp_rect, ptr %794, i32 0, i32 2
  %796 = load i16, ptr %795, align 2, !tbaa !87
  %797 = zext i16 %796 to i32
  %798 = mul nsw i32 %788, %797
  %799 = load i32, ptr %29, align 4, !tbaa !28
  %800 = add nsw i32 %799, %798
  store i32 %800, ptr %29, align 4, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %801

801:                                              ; preds = %743
  %802 = load i32, ptr %37, align 4, !tbaa !28
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr %37, align 4, !tbaa !28
  br label %691, !llvm.loop !88

804:                                              ; preds = %698
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  store i32 0, ptr %11, align 4
  br label %805

805:                                              ; preds = %804, %591
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  %806 = load i32, ptr %11, align 4
  switch i32 %806, label %1416 [
    i32 0, label %807
    i32 28, label %808
  ]

807:                                              ; preds = %805
  br label %808

808:                                              ; preds = %807, %805
  %809 = load i32, ptr %32, align 4, !tbaa !28
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %32, align 4, !tbaa !28
  br label %561, !llvm.loop !89

811:                                              ; preds = %722, %703
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %812

812:                                              ; preds = %811, %699
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  br label %813

813:                                              ; preds = %812, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %1402

814:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #11
  %815 = load i32, ptr %29, align 4, !tbaa !28
  %816 = sitofp i32 %815 to float
  %817 = invoke noundef float @_ZL6ImSqrtf(float noundef %816)
          to label %818 unwind label %833

818:                                              ; preds = %814
  %819 = fptosi float %817 to i32
  %820 = add nsw i32 %819, 1
  store i32 %820, ptr %43, align 4, !tbaa !28
  %821 = load ptr, ptr %3, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImFontAtlas, ptr %821, i32 0, i32 9
  store i32 0, ptr %822, align 4, !tbaa !19
  %823 = load ptr, ptr %3, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImFontAtlas, ptr %823, i32 0, i32 4
  %825 = load i32, ptr %824, align 8, !tbaa !90
  %826 = icmp sgt i32 %825, 0
  br i1 %826, label %827, label %837

827:                                              ; preds = %818
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.ImFontAtlas, ptr %828, i32 0, i32 4
  %830 = load i32, ptr %829, align 8, !tbaa !90
  %831 = load ptr, ptr %3, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImFontAtlas, ptr %831, i32 0, i32 8
  store i32 %830, ptr %832, align 8, !tbaa !20
  br label %859

833:                                              ; preds = %814
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %8, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %9, align 4
  br label %1401

837:                                              ; preds = %818
  %838 = load i32, ptr %43, align 4, !tbaa !28
  %839 = sitofp i32 %838 to float
  %840 = fcmp oge float %839, 0x40A6666660000000
  br i1 %840, label %841, label %842

841:                                              ; preds = %837
  br label %855

842:                                              ; preds = %837
  %843 = load i32, ptr %43, align 4, !tbaa !28
  %844 = sitofp i32 %843 to float
  %845 = fcmp oge float %844, 0x4096666660000000
  br i1 %845, label %846, label %847

846:                                              ; preds = %842
  br label %853

847:                                              ; preds = %842
  %848 = load i32, ptr %43, align 4, !tbaa !28
  %849 = sitofp i32 %848 to float
  %850 = fcmp oge float %849, 0x4086666660000000
  %851 = zext i1 %850 to i64
  %852 = select i1 %850, i32 1024, i32 512
  br label %853

853:                                              ; preds = %847, %846
  %854 = phi i32 [ 2048, %846 ], [ %852, %847 ]
  br label %855

855:                                              ; preds = %853, %841
  %856 = phi i32 [ 4096, %841 ], [ %854, %853 ]
  %857 = load ptr, ptr %3, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.ImFontAtlas, ptr %857, i32 0, i32 8
  store i32 %856, ptr %858, align 8, !tbaa !20
  br label %859

859:                                              ; preds = %855, %827
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  store i32 32768, ptr %44, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 64, ptr %45) #11
  call void @llvm.memset.p0.i64(ptr align 8 %45, i8 0, i64 64, i1 false)
  %860 = load ptr, ptr %3, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.ImFontAtlas, ptr %860, i32 0, i32 8
  %862 = load i32, ptr %861, align 8, !tbaa !20
  %863 = load ptr, ptr %3, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImFontAtlas, ptr %863, i32 0, i32 5
  %865 = load i32, ptr %864, align 4, !tbaa !84
  %866 = invoke noundef i32 @_ZL15stbtt_PackBeginP18stbtt_pack_contextPhiiiiPv(ptr noundef %45, ptr noundef null, i32 noundef %862, i32 noundef 32768, i32 noundef 0, i32 noundef %865, ptr noundef null)
          to label %867 unwind label %878

867:                                              ; preds = %859
  %868 = load ptr, ptr %3, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.stbtt_pack_context, ptr %45, i32 0, i32 1
  %870 = load ptr, ptr %869, align 8, !tbaa !91
  invoke void @_Z31ImFontAtlasBuildPackCustomRectsP11ImFontAtlasPv(ptr noundef %868, ptr noundef %870)
          to label %871 unwind label %878

871:                                              ; preds = %867
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  store i32 0, ptr %46, align 4, !tbaa !28
  br label %872

872:                                              ; preds = %962, %871
  %873 = load i32, ptr %46, align 4, !tbaa !28
  %874 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %875 = load i32, ptr %874, align 8, !tbaa !57
  %876 = icmp slt i32 %873, %875
  br i1 %876, label %882, label %877

877:                                              ; preds = %872
  store i32 32, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  br label %966

878:                                              ; preds = %1397, %1141, %1140, %997, %977, %867, %859
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %8, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %9, align 4
  br label %1400

882:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %883 = load i32, ptr %46, align 4, !tbaa !28
  %884 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %883)
          to label %885 unwind label %891

885:                                              ; preds = %882
  store ptr %884, ptr %47, align 8, !tbaa !5
  %886 = load ptr, ptr %47, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %886, i32 0, i32 7
  %888 = load i32, ptr %887, align 8, !tbaa !58
  %889 = icmp eq i32 %888, 0
  br i1 %889, label %890, label %895

890:                                              ; preds = %885
  store i32 34, ptr %11, align 4
  br label %959

891:                                              ; preds = %895, %882
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %8, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %9, align 4
  br label %965

895:                                              ; preds = %885
  %896 = getelementptr inbounds %struct.stbtt_pack_context, ptr %45, i32 0, i32 1
  %897 = load ptr, ptr %896, align 8, !tbaa !91
  %898 = load ptr, ptr %47, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %898, i32 0, i32 2
  %900 = load ptr, ptr %899, align 8, !tbaa !71
  %901 = load ptr, ptr %47, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %901, i32 0, i32 7
  %903 = load i32, ptr %902, align 8, !tbaa !58
  %904 = invoke noundef i32 @_ZL16stbrp_pack_rectsP13stbrp_contextP10stbrp_recti(ptr noundef %897, ptr noundef %900, i32 noundef %903)
          to label %905 unwind label %891

905:                                              ; preds = %895
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  store i32 0, ptr %48, align 4, !tbaa !28
  br label %906

906:                                              ; preds = %955, %905
  %907 = load i32, ptr %48, align 4, !tbaa !28
  %908 = load ptr, ptr %47, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %908, i32 0, i32 7
  %910 = load i32, ptr %909, align 8, !tbaa !58
  %911 = icmp slt i32 %907, %910
  br i1 %911, label %913, label %912

912:                                              ; preds = %906
  store i32 35, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  br label %958

913:                                              ; preds = %906
  %914 = load ptr, ptr %47, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %914, i32 0, i32 2
  %916 = load ptr, ptr %915, align 8, !tbaa !71
  %917 = load i32, ptr %48, align 4, !tbaa !28
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.stbrp_rect, ptr %916, i64 %918
  %920 = getelementptr inbounds %struct.stbrp_rect, ptr %919, i32 0, i32 5
  %921 = load i32, ptr %920, align 4, !tbaa !93
  %922 = icmp ne i32 %921, 0
  br i1 %922, label %923, label %954

923:                                              ; preds = %913
  %924 = load ptr, ptr %3, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImFontAtlas, ptr %924, i32 0, i32 9
  %926 = load i32, ptr %925, align 4, !tbaa !19
  %927 = load ptr, ptr %47, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %927, i32 0, i32 2
  %929 = load ptr, ptr %928, align 8, !tbaa !71
  %930 = load i32, ptr %48, align 4, !tbaa !28
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds %struct.stbrp_rect, ptr %929, i64 %931
  %933 = getelementptr inbounds %struct.stbrp_rect, ptr %932, i32 0, i32 4
  %934 = load i16, ptr %933, align 2, !tbaa !94
  %935 = zext i16 %934 to i32
  %936 = load ptr, ptr %47, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %936, i32 0, i32 2
  %938 = load ptr, ptr %937, align 8, !tbaa !71
  %939 = load i32, ptr %48, align 4, !tbaa !28
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds %struct.stbrp_rect, ptr %938, i64 %940
  %942 = getelementptr inbounds %struct.stbrp_rect, ptr %941, i32 0, i32 2
  %943 = load i16, ptr %942, align 2, !tbaa !87
  %944 = zext i16 %943 to i32
  %945 = add nsw i32 %935, %944
  %946 = invoke noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %926, i32 noundef %945)
          to label %947 unwind label %950

947:                                              ; preds = %923
  %948 = load ptr, ptr %3, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.ImFontAtlas, ptr %948, i32 0, i32 9
  store i32 %946, ptr %949, align 4, !tbaa !19
  br label %954

950:                                              ; preds = %923
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %8, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  br label %965

954:                                              ; preds = %947, %913
  br label %955

955:                                              ; preds = %954
  %956 = load i32, ptr %48, align 4, !tbaa !28
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr %48, align 4, !tbaa !28
  br label %906, !llvm.loop !95

958:                                              ; preds = %912
  store i32 0, ptr %11, align 4
  br label %959

959:                                              ; preds = %958, %890
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  %960 = load i32, ptr %11, align 4
  switch i32 %960, label %1416 [
    i32 0, label %961
    i32 34, label %962
  ]

961:                                              ; preds = %959
  br label %962

962:                                              ; preds = %961, %959
  %963 = load i32, ptr %46, align 4, !tbaa !28
  %964 = add nsw i32 %963, 1
  store i32 %964, ptr %46, align 4, !tbaa !28
  br label %872, !llvm.loop !96

965:                                              ; preds = %950, %891
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  br label %1400

966:                                              ; preds = %877
  %967 = load ptr, ptr %3, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.ImFontAtlas, ptr %967, i32 0, i32 2
  %969 = load i32, ptr %968, align 4, !tbaa !97
  %970 = and i32 %969, 1
  %971 = icmp ne i32 %970, 0
  br i1 %971, label %972, label %977

972:                                              ; preds = %966
  %973 = load ptr, ptr %3, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImFontAtlas, ptr %973, i32 0, i32 9
  %975 = load i32, ptr %974, align 4, !tbaa !19
  %976 = add nsw i32 %975, 1
  br label %983

977:                                              ; preds = %966
  %978 = load ptr, ptr %3, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.ImFontAtlas, ptr %978, i32 0, i32 9
  %980 = load i32, ptr %979, align 4, !tbaa !19
  %981 = invoke noundef i32 @_ZL17ImUpperPowerOfTwoi(i32 noundef %980)
          to label %982 unwind label %878

982:                                              ; preds = %977
  br label %983

983:                                              ; preds = %982, %972
  %984 = phi i32 [ %976, %972 ], [ %981, %982 ]
  %985 = load ptr, ptr %3, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.ImFontAtlas, ptr %985, i32 0, i32 9
  store i32 %984, ptr %986, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %987 = load ptr, ptr %3, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImFontAtlas, ptr %987, i32 0, i32 8
  %989 = load i32, ptr %988, align 8, !tbaa !20
  %990 = sitofp i32 %989 to float
  %991 = fdiv float 1.000000e+00, %990
  %992 = load ptr, ptr %3, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImFontAtlas, ptr %992, i32 0, i32 9
  %994 = load i32, ptr %993, align 4, !tbaa !19
  %995 = sitofp i32 %994 to float
  %996 = fdiv float 1.000000e+00, %995
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %991, float noundef %996)
          to label %997 unwind label %1037

997:                                              ; preds = %983
  %998 = load ptr, ptr %3, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.ImFontAtlas, ptr %998, i32 0, i32 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %999, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  %1000 = load ptr, ptr %3, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImFontAtlas, ptr %1000, i32 0, i32 8
  %1002 = load i32, ptr %1001, align 8, !tbaa !20
  %1003 = load ptr, ptr %3, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImFontAtlas, ptr %1003, i32 0, i32 9
  %1005 = load i32, ptr %1004, align 4, !tbaa !19
  %1006 = mul nsw i32 %1002, %1005
  %1007 = sext i32 %1006 to i64
  %1008 = invoke noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1007)
          to label %1009 unwind label %878

1009:                                             ; preds = %997
  %1010 = load ptr, ptr %3, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.ImFontAtlas, ptr %1010, i32 0, i32 6
  store ptr %1008, ptr %1011, align 8, !tbaa !98
  %1012 = load ptr, ptr %3, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.ImFontAtlas, ptr %1012, i32 0, i32 6
  %1014 = load ptr, ptr %1013, align 8, !tbaa !98
  %1015 = load ptr, ptr %3, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImFontAtlas, ptr %1015, i32 0, i32 8
  %1017 = load i32, ptr %1016, align 8, !tbaa !20
  %1018 = load ptr, ptr %3, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.ImFontAtlas, ptr %1018, i32 0, i32 9
  %1020 = load i32, ptr %1019, align 4, !tbaa !19
  %1021 = mul nsw i32 %1017, %1020
  %1022 = sext i32 %1021 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %1014, i8 0, i64 %1022, i1 false)
  %1023 = load ptr, ptr %3, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.ImFontAtlas, ptr %1023, i32 0, i32 6
  %1025 = load ptr, ptr %1024, align 8, !tbaa !98
  %1026 = getelementptr inbounds %struct.stbtt_pack_context, ptr %45, i32 0, i32 9
  store ptr %1025, ptr %1026, align 8, !tbaa !99
  %1027 = load ptr, ptr %3, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.ImFontAtlas, ptr %1027, i32 0, i32 9
  %1029 = load i32, ptr %1028, align 4, !tbaa !19
  %1030 = getelementptr inbounds %struct.stbtt_pack_context, ptr %45, i32 0, i32 3
  store i32 %1029, ptr %1030, align 4, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 0, ptr %50, align 4, !tbaa !28
  br label %1031

1031:                                             ; preds = %1136, %1009
  %1032 = load i32, ptr %50, align 4, !tbaa !28
  %1033 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %1034 = load i32, ptr %1033, align 8, !tbaa !57
  %1035 = icmp slt i32 %1032, %1034
  br i1 %1035, label %1041, label %1036

1036:                                             ; preds = %1031
  store i32 38, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1140

1037:                                             ; preds = %983
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %8, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  br label %1400

1041:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %1042 = load ptr, ptr %3, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.ImFontAtlas, ptr %1042, i32 0, i32 14
  %1044 = load i32, ptr %50, align 4, !tbaa !28
  %1045 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1043, i32 noundef %1044)
          to label %1046 unwind label %1055

1046:                                             ; preds = %1041
  store ptr %1045, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %1047 = load i32, ptr %50, align 4, !tbaa !28
  %1048 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %1047)
          to label %1049 unwind label %1059

1049:                                             ; preds = %1046
  store ptr %1048, ptr %52, align 8, !tbaa !5
  %1050 = load ptr, ptr %52, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1050, i32 0, i32 7
  %1052 = load i32, ptr %1051, align 8, !tbaa !58
  %1053 = icmp eq i32 %1052, 0
  br i1 %1053, label %1054, label %1063

1054:                                             ; preds = %1049
  store i32 40, ptr %11, align 4
  br label %1133

1055:                                             ; preds = %1041
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %8, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %9, align 4
  br label %1139

1059:                                             ; preds = %1063, %1046
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %8, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  br label %1139

1063:                                             ; preds = %1049
  %1064 = load ptr, ptr %52, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1064, i32 0, i32 0
  %1066 = load ptr, ptr %52, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1066, i32 0, i32 1
  %1068 = load ptr, ptr %52, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1068, i32 0, i32 2
  %1070 = load ptr, ptr %1069, align 8, !tbaa !71
  %1071 = invoke noundef i32 @_ZL35stbtt_PackFontRangesRenderIntoRectsP18stbtt_pack_contextPK14stbtt_fontinfoP16stbtt_pack_rangeiP10stbrp_rect(ptr noundef %45, ptr noundef %1065, ptr noundef %1067, i32 noundef 1, ptr noundef %1070)
          to label %1072 unwind label %1059

1072:                                             ; preds = %1063
  %1073 = load ptr, ptr %51, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImFontConfig, ptr %1073, i32 0, i32 15
  %1075 = load float, ptr %1074, align 8, !tbaa !101
  %1076 = fcmp une float %1075, 1.000000e+00
  br i1 %1076, label %1077, label %1130

1077:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 256, ptr %53) #11
  %1078 = getelementptr inbounds [256 x i8], ptr %53, i64 0, i64 0
  %1079 = load ptr, ptr %51, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.ImFontConfig, ptr %1079, i32 0, i32 15
  %1081 = load float, ptr %1080, align 8, !tbaa !101
  call void @_Z39ImFontAtlasBuildMultiplyCalcLookupTablePhf(ptr noundef %1078, float noundef %1081)
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %1082 = load ptr, ptr %52, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1082, i32 0, i32 2
  %1084 = load ptr, ptr %1083, align 8, !tbaa !71
  %1085 = getelementptr inbounds %struct.stbrp_rect, ptr %1084, i64 0
  store ptr %1085, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #11
  store i32 0, ptr %55, align 4, !tbaa !28
  br label %1086

1086:                                             ; preds = %1124, %1077
  %1087 = load i32, ptr %55, align 4, !tbaa !28
  %1088 = load ptr, ptr %52, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1088, i32 0, i32 7
  %1090 = load i32, ptr %1089, align 8, !tbaa !58
  %1091 = icmp slt i32 %1087, %1090
  br i1 %1091, label %1093, label %1092

1092:                                             ; preds = %1086
  store i32 41, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #11
  br label %1129

1093:                                             ; preds = %1086
  %1094 = load ptr, ptr %54, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.stbrp_rect, ptr %1094, i32 0, i32 5
  %1096 = load i32, ptr %1095, align 4, !tbaa !93
  %1097 = icmp ne i32 %1096, 0
  br i1 %1097, label %1098, label %1123

1098:                                             ; preds = %1093
  %1099 = getelementptr inbounds [256 x i8], ptr %53, i64 0, i64 0
  %1100 = load ptr, ptr %3, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImFontAtlas, ptr %1100, i32 0, i32 6
  %1102 = load ptr, ptr %1101, align 8, !tbaa !98
  %1103 = load ptr, ptr %54, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.stbrp_rect, ptr %1103, i32 0, i32 3
  %1105 = load i16, ptr %1104, align 4, !tbaa !102
  %1106 = zext i16 %1105 to i32
  %1107 = load ptr, ptr %54, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.stbrp_rect, ptr %1107, i32 0, i32 4
  %1109 = load i16, ptr %1108, align 2, !tbaa !94
  %1110 = zext i16 %1109 to i32
  %1111 = load ptr, ptr %54, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.stbrp_rect, ptr %1111, i32 0, i32 1
  %1113 = load i16, ptr %1112, align 4, !tbaa !85
  %1114 = zext i16 %1113 to i32
  %1115 = load ptr, ptr %54, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.stbrp_rect, ptr %1115, i32 0, i32 2
  %1117 = load i16, ptr %1116, align 2, !tbaa !87
  %1118 = zext i16 %1117 to i32
  %1119 = load ptr, ptr %3, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.ImFontAtlas, ptr %1119, i32 0, i32 8
  %1121 = load i32, ptr %1120, align 8, !tbaa !20
  %1122 = mul nsw i32 %1121, 1
  call void @_Z34ImFontAtlasBuildMultiplyRectAlpha8PKhPhiiiii(ptr noundef %1099, ptr noundef %1102, i32 noundef %1106, i32 noundef %1110, i32 noundef %1114, i32 noundef %1118, i32 noundef %1122)
  br label %1123

1123:                                             ; preds = %1098, %1093
  br label %1124

1124:                                             ; preds = %1123
  %1125 = load i32, ptr %55, align 4, !tbaa !28
  %1126 = add nsw i32 %1125, 1
  store i32 %1126, ptr %55, align 4, !tbaa !28
  %1127 = load ptr, ptr %54, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.stbrp_rect, ptr %1127, i32 1
  store ptr %1128, ptr %54, align 8, !tbaa !5
  br label %1086, !llvm.loop !103

1129:                                             ; preds = %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %53) #11
  br label %1130

1130:                                             ; preds = %1129, %1072
  %1131 = load ptr, ptr %52, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1131, i32 0, i32 2
  store ptr null, ptr %1132, align 8, !tbaa !71
  store i32 0, ptr %11, align 4
  br label %1133

1133:                                             ; preds = %1130, %1054
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  %1134 = load i32, ptr %11, align 4
  switch i32 %1134, label %1416 [
    i32 0, label %1135
    i32 40, label %1136
  ]

1135:                                             ; preds = %1133
  br label %1136

1136:                                             ; preds = %1135, %1133
  %1137 = load i32, ptr %50, align 4, !tbaa !28
  %1138 = add nsw i32 %1137, 1
  store i32 %1138, ptr %50, align 4, !tbaa !28
  br label %1031, !llvm.loop !104

1139:                                             ; preds = %1059, %1055
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1400

1140:                                             ; preds = %1036
  invoke void @_ZL13stbtt_PackEndP18stbtt_pack_context(ptr noundef %45)
          to label %1141 unwind label %878

1141:                                             ; preds = %1140
  invoke void @_ZN8ImVectorI10stbrp_rectE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
          to label %1142 unwind label %878

1142:                                             ; preds = %1141
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #11
  store i32 0, ptr %56, align 4, !tbaa !28
  br label %1143

1143:                                             ; preds = %1370, %1142
  %1144 = load i32, ptr %56, align 4, !tbaa !28
  %1145 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %1146 = load i32, ptr %1145, align 8, !tbaa !57
  %1147 = icmp slt i32 %1144, %1146
  br i1 %1147, label %1149, label %1148

1148:                                             ; preds = %1143
  store i32 44, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1379

1149:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %1150 = load i32, ptr %56, align 4, !tbaa !28
  %1151 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %1150)
          to label %1152 unwind label %1158

1152:                                             ; preds = %1149
  store ptr %1151, ptr %57, align 8, !tbaa !5
  %1153 = load ptr, ptr %57, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1153, i32 0, i32 7
  %1155 = load i32, ptr %1154, align 8, !tbaa !58
  %1156 = icmp eq i32 %1155, 0
  br i1 %1156, label %1157, label %1162

1157:                                             ; preds = %1152
  store i32 46, ptr %11, align 4
  br label %1367

1158:                                             ; preds = %1149
  %1159 = landingpad { ptr, i32 }
          cleanup
  %1160 = extractvalue { ptr, i32 } %1159, 0
  store ptr %1160, ptr %8, align 8
  %1161 = extractvalue { ptr, i32 } %1159, 1
  store i32 %1161, ptr %9, align 4
  br label %1378

1162:                                             ; preds = %1152
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %1163 = load ptr, ptr %3, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImFontAtlas, ptr %1163, i32 0, i32 14
  %1165 = load i32, ptr %56, align 4, !tbaa !28
  %1166 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1164, i32 noundef %1165)
          to label %1167 unwind label %1233

1167:                                             ; preds = %1162
  store ptr %1166, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %1168 = load ptr, ptr %58, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImFontConfig, ptr %1168, i32 0, i32 18
  %1170 = load ptr, ptr %1169, align 8, !tbaa !29
  store ptr %1170, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #11
  %1171 = load ptr, ptr %57, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1171, i32 0, i32 0
  %1173 = load ptr, ptr %58, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.ImFontConfig, ptr %1173, i32 0, i32 4
  %1175 = load float, ptr %1174, align 4, !tbaa !73
  %1176 = invoke noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef %1172, float noundef %1175)
          to label %1177 unwind label %1237

1177:                                             ; preds = %1167
  store float %1176, ptr %60, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  %1178 = load ptr, ptr %57, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1178, i32 0, i32 0
  invoke void @_ZL21stbtt_GetFontVMetricsPK14stbtt_fontinfoPiS2_S2_(ptr noundef %1179, ptr noundef %61, ptr noundef %62, ptr noundef %63)
          to label %1180 unwind label %1241

1180:                                             ; preds = %1177
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  %1181 = load i32, ptr %61, align 4, !tbaa !28
  %1182 = sitofp i32 %1181 to float
  %1183 = load float, ptr %60, align 4, !tbaa !22
  %1184 = load i32, ptr %61, align 4, !tbaa !28
  %1185 = sitofp i32 %1184 to float
  %1186 = fcmp ogt float %1185, 0.000000e+00
  %1187 = zext i1 %1186 to i64
  %1188 = select i1 %1186, i32 1, i32 -1
  %1189 = sitofp i32 %1188 to float
  %1190 = call float @llvm.fmuladd.f32(float %1182, float %1183, float %1189)
  %1191 = invoke noundef float @_ZL7ImFloorf(float noundef %1190)
          to label %1192 unwind label %1245

1192:                                             ; preds = %1180
  store float %1191, ptr %64, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  %1193 = load i32, ptr %62, align 4, !tbaa !28
  %1194 = sitofp i32 %1193 to float
  %1195 = load float, ptr %60, align 4, !tbaa !22
  %1196 = load i32, ptr %62, align 4, !tbaa !28
  %1197 = sitofp i32 %1196 to float
  %1198 = fcmp ogt float %1197, 0.000000e+00
  %1199 = zext i1 %1198 to i64
  %1200 = select i1 %1198, i32 1, i32 -1
  %1201 = sitofp i32 %1200 to float
  %1202 = call float @llvm.fmuladd.f32(float %1194, float %1195, float %1201)
  %1203 = invoke noundef float @_ZL7ImFloorf(float noundef %1202)
          to label %1204 unwind label %1249

1204:                                             ; preds = %1192
  store float %1203, ptr %65, align 4, !tbaa !22
  %1205 = load ptr, ptr %3, align 8, !tbaa !5
  %1206 = load ptr, ptr %59, align 8, !tbaa !5
  %1207 = load ptr, ptr %58, align 8, !tbaa !5
  %1208 = load float, ptr %64, align 4, !tbaa !22
  %1209 = load float, ptr %65, align 4, !tbaa !22
  invoke void @_Z25ImFontAtlasBuildSetupFontP11ImFontAtlasP6ImFontP12ImFontConfigff(ptr noundef %1205, ptr noundef %1206, ptr noundef %1207, float noundef %1208, float noundef %1209)
          to label %1210 unwind label %1249

1210:                                             ; preds = %1204
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #11
  %1211 = load ptr, ptr %58, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.ImFontConfig, ptr %1211, i32 0, i32 9
  %1213 = getelementptr inbounds %struct.ImVec2, ptr %1212, i32 0, i32 0
  %1214 = load float, ptr %1213, align 4, !tbaa !105
  store float %1214, ptr %66, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #11
  %1215 = load ptr, ptr %58, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImFontConfig, ptr %1215, i32 0, i32 9
  %1217 = getelementptr inbounds %struct.ImVec2, ptr %1216, i32 0, i32 1
  %1218 = load float, ptr %1217, align 4, !tbaa !106
  %1219 = load ptr, ptr %59, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.ImFont, ptr %1219, i32 0, i32 14
  %1221 = load float, ptr %1220, align 4, !tbaa !107
  %1222 = fadd float %1221, 5.000000e-01
  %1223 = fptosi float %1222 to i32
  %1224 = sitofp i32 %1223 to float
  %1225 = fadd float %1218, %1224
  store float %1225, ptr %67, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #11
  store i32 0, ptr %68, align 4, !tbaa !28
  br label %1226

1226:                                             ; preds = %1356, %1210
  %1227 = load i32, ptr %68, align 4, !tbaa !28
  %1228 = load ptr, ptr %57, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1228, i32 0, i32 7
  %1230 = load i32, ptr %1229, align 8, !tbaa !58
  %1231 = icmp slt i32 %1227, %1230
  br i1 %1231, label %1253, label %1232

1232:                                             ; preds = %1226
  store i32 47, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  br label %1366

1233:                                             ; preds = %1162
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %8, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %9, align 4
  br label %1377

1237:                                             ; preds = %1167
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %8, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %9, align 4
  br label %1376

1241:                                             ; preds = %1177
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %8, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %9, align 4
  br label %1375

1245:                                             ; preds = %1180
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %8, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %9, align 4
  br label %1374

1249:                                             ; preds = %1204, %1192
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %8, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %9, align 4
  br label %1373

1253:                                             ; preds = %1226
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #11
  %1254 = load ptr, ptr %57, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1254, i32 0, i32 9
  %1256 = load i32, ptr %68, align 4, !tbaa !28
  %1257 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1255, i32 noundef %1256)
          to label %1258 unwind label %1303

1258:                                             ; preds = %1253
  %1259 = load i32, ptr %1257, align 4, !tbaa !28
  store i32 %1259, ptr %69, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %1260 = load ptr, ptr %57, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1260, i32 0, i32 3
  %1262 = load ptr, ptr %1261, align 8, !tbaa !72
  %1263 = load i32, ptr %68, align 4, !tbaa !28
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds %struct.stbtt_packedchar, ptr %1262, i64 %1264
  store ptr %1265, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  %1266 = load ptr, ptr %70, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.stbtt_packedchar, ptr %1266, i32 0, i32 6
  %1268 = load float, ptr %1267, align 4, !tbaa !108
  store float %1268, ptr %71, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #11
  %1269 = load float, ptr %71, align 4, !tbaa !22
  %1270 = load ptr, ptr %58, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ImFontConfig, ptr %1270, i32 0, i32 11
  %1272 = load float, ptr %1271, align 8, !tbaa !110
  %1273 = load ptr, ptr %58, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImFontConfig, ptr %1273, i32 0, i32 12
  %1275 = load float, ptr %1274, align 4, !tbaa !111
  %1276 = invoke noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %1269, float noundef %1272, float noundef %1275)
          to label %1277 unwind label %1307

1277:                                             ; preds = %1258
  store float %1276, ptr %72, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #11
  %1278 = load float, ptr %66, align 4, !tbaa !22
  store float %1278, ptr %73, align 4, !tbaa !22
  %1279 = load float, ptr %71, align 4, !tbaa !22
  %1280 = load float, ptr %72, align 4, !tbaa !22
  %1281 = fcmp une float %1279, %1280
  br i1 %1281, label %1282, label %1315

1282:                                             ; preds = %1277
  %1283 = load ptr, ptr %58, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ImFontConfig, ptr %1283, i32 0, i32 7
  %1285 = load i8, ptr %1284, align 8, !tbaa !112, !range !113, !noundef !114
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1294

1287:                                             ; preds = %1282
  %1288 = load float, ptr %72, align 4, !tbaa !22
  %1289 = load float, ptr %71, align 4, !tbaa !22
  %1290 = fsub float %1288, %1289
  %1291 = fmul float %1290, 5.000000e-01
  %1292 = invoke noundef float @_ZL7ImFloorf(float noundef %1291)
          to label %1293 unwind label %1311

1293:                                             ; preds = %1287
  br label %1299

1294:                                             ; preds = %1282
  %1295 = load float, ptr %72, align 4, !tbaa !22
  %1296 = load float, ptr %71, align 4, !tbaa !22
  %1297 = fsub float %1295, %1296
  %1298 = fmul float %1297, 5.000000e-01
  br label %1299

1299:                                             ; preds = %1294, %1293
  %1300 = phi float [ %1292, %1293 ], [ %1298, %1294 ]
  %1301 = load float, ptr %73, align 4, !tbaa !22
  %1302 = fadd float %1301, %1300
  store float %1302, ptr %73, align 4, !tbaa !22
  br label %1315

1303:                                             ; preds = %1253
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %8, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %9, align 4
  br label %1365

1307:                                             ; preds = %1258
  %1308 = landingpad { ptr, i32 }
          cleanup
  %1309 = extractvalue { ptr, i32 } %1308, 0
  store ptr %1309, ptr %8, align 8
  %1310 = extractvalue { ptr, i32 } %1308, 1
  store i32 %1310, ptr %9, align 4
  br label %1364

1311:                                             ; preds = %1287
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %8, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %9, align 4
  br label %1363

1315:                                             ; preds = %1299, %1277
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #11
  store float 0.000000e+00, ptr %75, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  store float 0.000000e+00, ptr %76, align 4, !tbaa !22
  %1316 = load ptr, ptr %57, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.ImFontBuildSrcData, ptr %1316, i32 0, i32 3
  %1318 = load ptr, ptr %1317, align 8, !tbaa !72
  %1319 = load ptr, ptr %3, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.ImFontAtlas, ptr %1319, i32 0, i32 8
  %1321 = load i32, ptr %1320, align 8, !tbaa !20
  %1322 = load ptr, ptr %3, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.ImFontAtlas, ptr %1322, i32 0, i32 9
  %1324 = load i32, ptr %1323, align 4, !tbaa !19
  %1325 = load i32, ptr %68, align 4, !tbaa !28
  invoke void @_ZL19stbtt_GetPackedQuadPK16stbtt_packedchariiiPfS2_P18stbtt_aligned_quadi(ptr noundef %1318, i32 noundef %1321, i32 noundef %1324, i32 noundef %1325, ptr noundef %75, ptr noundef %76, ptr noundef %74, i32 noundef 0)
          to label %1326 unwind label %1359

1326:                                             ; preds = %1315
  %1327 = load ptr, ptr %59, align 8, !tbaa !5
  %1328 = load i32, ptr %69, align 4, !tbaa !28
  %1329 = trunc i32 %1328 to i16
  %1330 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 0
  %1331 = load float, ptr %1330, align 4, !tbaa !115
  %1332 = load float, ptr %73, align 4, !tbaa !22
  %1333 = fadd float %1331, %1332
  %1334 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 1
  %1335 = load float, ptr %1334, align 4, !tbaa !117
  %1336 = load float, ptr %67, align 4, !tbaa !22
  %1337 = fadd float %1335, %1336
  %1338 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 4
  %1339 = load float, ptr %1338, align 4, !tbaa !118
  %1340 = load float, ptr %73, align 4, !tbaa !22
  %1341 = fadd float %1339, %1340
  %1342 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 5
  %1343 = load float, ptr %1342, align 4, !tbaa !119
  %1344 = load float, ptr %67, align 4, !tbaa !22
  %1345 = fadd float %1343, %1344
  %1346 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 2
  %1347 = load float, ptr %1346, align 4, !tbaa !120
  %1348 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 3
  %1349 = load float, ptr %1348, align 4, !tbaa !121
  %1350 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 6
  %1351 = load float, ptr %1350, align 4, !tbaa !122
  %1352 = getelementptr inbounds %struct.stbtt_aligned_quad, ptr %74, i32 0, i32 7
  %1353 = load float, ptr %1352, align 4, !tbaa !123
  %1354 = load float, ptr %72, align 4, !tbaa !22
  invoke void @_ZN6ImFont8AddGlyphEtfffffffff(ptr noundef nonnull align 8 dereferenceable(113) %1327, i16 noundef zeroext %1329, float noundef %1333, float noundef %1337, float noundef %1341, float noundef %1345, float noundef %1347, float noundef %1349, float noundef %1351, float noundef %1353, float noundef %1354)
          to label %1355 unwind label %1359

1355:                                             ; preds = %1326
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #11
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i32, ptr %68, align 4, !tbaa !28
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %68, align 4, !tbaa !28
  br label %1226, !llvm.loop !124

1359:                                             ; preds = %1326, %1315
  %1360 = landingpad { ptr, i32 }
          cleanup
  %1361 = extractvalue { ptr, i32 } %1360, 0
  store ptr %1361, ptr %8, align 8
  %1362 = extractvalue { ptr, i32 } %1360, 1
  store i32 %1362, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #11
  br label %1363

1363:                                             ; preds = %1359, %1311
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #11
  br label %1364

1364:                                             ; preds = %1363, %1307
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  br label %1365

1365:                                             ; preds = %1364, %1303
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  br label %1373

1366:                                             ; preds = %1232
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  store i32 0, ptr %11, align 4
  br label %1367

1367:                                             ; preds = %1366, %1157
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  %1368 = load i32, ptr %11, align 4
  switch i32 %1368, label %1416 [
    i32 0, label %1369
    i32 46, label %1370
  ]

1369:                                             ; preds = %1367
  br label %1370

1370:                                             ; preds = %1369, %1367
  %1371 = load i32, ptr %56, align 4, !tbaa !28
  %1372 = add nsw i32 %1371, 1
  store i32 %1372, ptr %56, align 4, !tbaa !28
  br label %1143, !llvm.loop !125

1373:                                             ; preds = %1365, %1249
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %1374

1374:                                             ; preds = %1373, %1245
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %1375

1375:                                             ; preds = %1374, %1241
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  br label %1376

1376:                                             ; preds = %1375, %1237
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  br label %1377

1377:                                             ; preds = %1376, %1233
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  br label %1378

1378:                                             ; preds = %1377, %1158
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1400

1379:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #11
  store i32 0, ptr %77, align 4, !tbaa !28
  br label %1380

1380:                                             ; preds = %1390, %1379
  %1381 = load i32, ptr %77, align 4, !tbaa !28
  %1382 = getelementptr inbounds %struct.ImVector.11, ptr %6, i32 0, i32 0
  %1383 = load i32, ptr %1382, align 8, !tbaa !57
  %1384 = icmp slt i32 %1381, %1383
  br i1 %1384, label %1386, label %1385

1385:                                             ; preds = %1380
  store i32 50, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #11
  br label %1397

1386:                                             ; preds = %1380
  %1387 = load i32, ptr %77, align 4, !tbaa !28
  %1388 = invoke noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %1387)
          to label %1389 unwind label %1393

1389:                                             ; preds = %1386
  call void @_ZN18ImFontBuildSrcDataD2Ev(ptr noundef nonnull align 8 dereferenceable(272) %1388) #11
  br label %1390

1390:                                             ; preds = %1389
  %1391 = load i32, ptr %77, align 4, !tbaa !28
  %1392 = add nsw i32 %1391, 1
  store i32 %1392, ptr %77, align 4, !tbaa !28
  br label %1380, !llvm.loop !126

1393:                                             ; preds = %1386
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %8, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #11
  br label %1400

1397:                                             ; preds = %1385
  %1398 = load ptr, ptr %3, align 8, !tbaa !5
  invoke void @_Z22ImFontAtlasBuildFinishP11ImFontAtlas(ptr noundef %1398)
          to label %1399 unwind label %878

1399:                                             ; preds = %1397
  store i1 true, ptr %2, align 1
  store i32 1, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  call void @_ZN8ImVectorI16stbtt_packedcharED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  call void @_ZN8ImVectorI10stbrp_rectED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %1407

1400:                                             ; preds = %1393, %1378, %1139, %1037, %965, %878
  call void @llvm.lifetime.end.p0(i64 64, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1401

1401:                                             ; preds = %1400, %833
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %1402

1402:                                             ; preds = %1401, %813
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  br label %1403

1403:                                             ; preds = %1402, %579
  call void @_ZN8ImVectorI16stbtt_packedcharED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #11
  br label %1404

1404:                                             ; preds = %1403, %575
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  call void @_ZN8ImVectorI10stbrp_rectED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #11
  br label %1405

1405:                                             ; preds = %1404, %571
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  br label %1406

1406:                                             ; preds = %1405, %567, %539, %514, %478
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  br label %1409

1407:                                             ; preds = %1399, %352
  call void @_ZN8ImVectorI18ImFontBuildDstDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #11
  call void @_ZN8ImVectorI18ImFontBuildSrcDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #11
  %1408 = load i1, ptr %2, align 1
  ret i1 %1408

1409:                                             ; preds = %1406, %351, %132
  call void @_ZN8ImVectorI18ImFontBuildDstDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #11
  br label %1410

1410:                                             ; preds = %1409, %128
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #11
  call void @_ZN8ImVectorI18ImFontBuildSrcDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #11
  br label %1411

1411:                                             ; preds = %1410
  %1412 = load ptr, ptr %8, align 8
  %1413 = load i32, ptr %9, align 4
  %1414 = insertvalue { ptr, i32 } poison, ptr %1412, 0
  %1415 = insertvalue { ptr, i32 } %1414, i32 %1413, 1
  resume { ptr, i32 } %1415

1416:                                             ; preds = %1367, %1133, %959, %805
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z39ImFontAtlasBuildMultiplyCalcLookupTablePhf(ptr noundef, float noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z34ImFontAtlasBuildMultiplyRectAlpha8PKhPhiiiii(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z42ImFontAtlasBuildRegisterDefaultCustomRectsP11ImFontAtlas(ptr noundef) #8

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(113)) #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef, i32 noundef) #6

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) #8 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL31UnpackBoolVectorToFlatIndexListPK12ImBoolVectorP8ImVectorIiE(ptr noundef, ptr noundef) #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI18ImFontBuildDstDataE5clearEv(ptr noundef nonnull align 8 dereferenceable(16)) #9 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef, float noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL31stbtt_ScaleForMappingEmToPixelsPK14stbtt_fontinfof(ptr noundef, float noundef) #2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL31stbtt_GetGlyphBitmapBoxSubpixelPK14stbtt_fontinfoiffffPiS2_S2_S2_(ptr noundef, i32 noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z31ImFontAtlasBuildPackCustomRectsP11ImFontAtlasPv(ptr noundef, ptr noundef) #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL17ImUpperPowerOfTwoi(i32 noundef) #6

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13stbtt_PackEndP18stbtt_pack_context(ptr noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI10stbrp_rectE5clearEv(ptr noundef nonnull align 8 dereferenceable(16)) #9 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z25ImFontAtlasBuildSetupFontP11ImFontAtlasP6ImFontP12ImFontConfigff(ptr noundef, ptr noundef, ptr noundef, float noundef, float noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImFont8AddGlyphEtfffffffff(ptr noundef nonnull align 8 dereferenceable(113), i16 noundef zeroext, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef) #8 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22ImFontAtlasBuildFinishP11ImFontAtlas(ptr noundef) #8

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 96}
!10 = !{!"_ZTS11ImFontAtlas", !11, i64 0, !12, i64 4, !6, i64 8, !12, i64 16, !12, i64 20, !6, i64 24, !6, i64 32, !12, i64 40, !12, i64 44, !13, i64 48, !13, i64 56, !15, i64 64, !16, i64 80, !17, i64 96, !7, i64 112}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"_ZTS8ImVectorIP6ImFontE", !12, i64 0, !12, i64 4, !6, i64 8}
!16 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !12, i64 0, !12, i64 4, !6, i64 8}
!17 = !{!"_ZTS8ImVectorI12ImFontConfigE", !12, i64 0, !12, i64 4, !6, i64 8}
!18 = !{!10, !6, i64 8}
!19 = !{!10, !12, i64 44}
!20 = !{!10, !12, i64 40}
!21 = !{i64 0, i64 4, !22, i64 4, i64 4, !22}
!22 = !{!14, !14, i64 0}
!23 = !{!10, !12, i64 64}
!24 = !{!25, !6, i64 8}
!25 = !{!"_ZTS8ImVectorI18ImFontBuildSrcDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!26 = !{!27, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI18ImFontBuildDstDataE", !12, i64 0, !12, i64 4, !6, i64 8}
!28 = !{!12, !12, i64 0}
!29 = !{!30, !6, i64 128}
!30 = !{!"_ZTS12ImFontConfig", !6, i64 0, !12, i64 8, !11, i64 12, !12, i64 16, !14, i64 20, !12, i64 24, !12, i64 28, !11, i64 32, !13, i64 36, !13, i64 44, !6, i64 56, !14, i64 64, !14, i64 68, !11, i64 72, !12, i64 76, !14, i64 80, !31, i64 84, !7, i64 86, !6, i64 128}
!31 = !{!"short", !7, i64 0}
!32 = !{!33, !6, i64 72}
!33 = !{!"_ZTS6ImFont", !34, i64 0, !14, i64 16, !14, i64 20, !35, i64 24, !36, i64 40, !6, i64 56, !13, i64 64, !6, i64 72, !6, i64 80, !31, i64 88, !31, i64 90, !31, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !12, i64 108, !11, i64 112}
!34 = !{!"_ZTS8ImVectorIfE", !12, i64 0, !12, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorItE", !12, i64 0, !12, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !12, i64 0, !12, i64 4, !6, i64 8}
!37 = !{!38, !12, i64 224}
!38 = !{!"_ZTS18ImFontBuildSrcData", !39, i64 0, !41, i64 160, !6, i64 200, !6, i64 208, !6, i64 216, !12, i64 224, !12, i64 228, !12, i64 232, !42, i64 240, !43, i64 256}
!39 = !{!"_ZTS14stbtt_fontinfo", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !40, i64 64, !40, i64 80, !40, i64 96, !40, i64 112, !40, i64 128, !40, i64 144}
!40 = !{!"_ZTS10stbtt__buf", !6, i64 0, !12, i64 8, !12, i64 12}
!41 = !{!"_ZTS16stbtt_pack_range", !14, i64 0, !12, i64 4, !6, i64 8, !12, i64 16, !6, i64 24, !7, i64 32, !7, i64 33}
!42 = !{!"_ZTS12ImBoolVector", !43, i64 0}
!43 = !{!"_ZTS8ImVectorIiE", !12, i64 0, !12, i64 4, !6, i64 8}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!30, !6, i64 0}
!47 = !{!30, !12, i64 16}
!48 = !{!30, !6, i64 56}
!49 = !{!38, !6, i64 216}
!50 = !{!31, !31, i64 0}
!51 = !{!38, !12, i64 228}
!52 = distinct !{!52, !45}
!53 = !{!54, !12, i64 0}
!54 = !{!"_ZTS18ImFontBuildDstData", !12, i64 0, !12, i64 4, !12, i64 8, !42, i64 16}
!55 = !{!54, !12, i64 4}
!56 = distinct !{!56, !45}
!57 = !{!25, !12, i64 0}
!58 = !{!38, !12, i64 232}
!59 = !{!54, !12, i64 8}
!60 = distinct !{!60, !45}
!61 = distinct !{!61, !45}
!62 = distinct !{!62, !45}
!63 = !{!38, !12, i64 256}
!64 = distinct !{!64, !45}
!65 = !{!27, !12, i64 0}
!66 = distinct !{!66, !45}
!67 = !{!68, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI10stbrp_rectE", !12, i64 0, !12, i64 4, !6, i64 8}
!69 = !{!70, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI16stbtt_packedcharE", !12, i64 0, !12, i64 4, !6, i64 8}
!71 = !{!38, !6, i64 200}
!72 = !{!38, !6, i64 208}
!73 = !{!30, !14, i64 20}
!74 = !{!38, !14, i64 160}
!75 = !{!38, !12, i64 164}
!76 = !{!38, !6, i64 264}
!77 = !{!38, !6, i64 168}
!78 = !{!38, !12, i64 176}
!79 = !{!38, !6, i64 184}
!80 = !{!30, !12, i64 24}
!81 = !{!38, !7, i64 192}
!82 = !{!30, !12, i64 28}
!83 = !{!38, !7, i64 193}
!84 = !{!10, !12, i64 20}
!85 = !{!86, !31, i64 4}
!86 = !{!"_ZTS10stbrp_rect", !12, i64 0, !31, i64 4, !31, i64 6, !31, i64 8, !31, i64 10, !12, i64 12}
!87 = !{!86, !31, i64 6}
!88 = distinct !{!88, !45}
!89 = distinct !{!89, !45}
!90 = !{!10, !12, i64 16}
!91 = !{!92, !6, i64 8}
!92 = !{!"_ZTS18stbtt_pack_context", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !6, i64 48, !6, i64 56}
!93 = !{!86, !12, i64 12}
!94 = !{!86, !31, i64 10}
!95 = distinct !{!95, !45}
!96 = distinct !{!96, !45}
!97 = !{!10, !12, i64 4}
!98 = !{!10, !6, i64 24}
!99 = !{!92, !6, i64 48}
!100 = !{!92, !12, i64 20}
!101 = !{!30, !14, i64 80}
!102 = !{!86, !31, i64 8}
!103 = distinct !{!103, !45}
!104 = distinct !{!104, !45}
!105 = !{!30, !14, i64 44}
!106 = !{!30, !14, i64 48}
!107 = !{!33, !14, i64 100}
!108 = !{!109, !14, i64 16}
!109 = !{!"_ZTS16stbtt_packedchar", !31, i64 0, !31, i64 2, !31, i64 4, !31, i64 6, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24}
!110 = !{!30, !14, i64 64}
!111 = !{!30, !14, i64 68}
!112 = !{!30, !11, i64 32}
!113 = !{i8 0, i8 2}
!114 = !{}
!115 = !{!116, !14, i64 0}
!116 = !{!"_ZTS18stbtt_aligned_quad", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28}
!117 = !{!116, !14, i64 4}
!118 = !{!116, !14, i64 16}
!119 = !{!116, !14, i64 20}
!120 = !{!116, !14, i64 8}
!121 = !{!116, !14, i64 12}
!122 = !{!116, !14, i64 24}
!123 = !{!116, !14, i64 28}
!124 = distinct !{!124, !45}
!125 = distinct !{!125, !45}
!126 = distinct !{!126, !45}


; 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.ImVec2 = type { float, float }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.stbtt_pack_context = type { ptr, ptr, i32, i32, i32, i32, i32, i32, i32, ptr, ptr }
%struct.stbtt_aligned_quad = type { float, float, float, float, float, float, float, float }
%struct.stbrp_rect = type { i32, i16, i16, i16, i16, i32 }
%struct.stbtt_packedchar = type { i16, i16, i16, i16, float, float, float, float, float }

@.str.1 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas = external hidden unnamed_addr constant [52 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [25 x i8], align 1

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

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImSqrtf(float noundef) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef, float noundef, float noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11ImFontAtlas12ClearTexDataEv(ptr noundef nonnull align 8 dereferenceable(116)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas(ptr noundef %0) local_unnamed_addr #7 personality ptr @__gxx_personality_v0 {
  %2 = alloca %struct.ImVec2, align 8
  %3 = alloca %struct.ImVec2, align 8
  %4 = alloca %struct.ImVector.11, align 8
  %5 = alloca %struct.ImVector.12, align 8
  %6 = alloca %struct.ImVector.14, align 8
  %7 = alloca %struct.ImVector.15, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %struct.stbtt_pack_context, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca [256 x i8], align 16
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %struct.stbtt_aligned_quad, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = getelementptr inbounds i8, ptr %0, i64 96
  %22 = load i32, ptr %21, align 8, !tbaa !5
  %23 = icmp sgt i32 %22, 0
  br i1 %23, label %25, label %24

24:                                               ; preds = %1
  tail call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.1, i32 noundef 1847, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

25:                                               ; preds = %1
  tail call void @_Z42ImFontAtlasBuildRegisterDefaultCustomRectsP11ImFontAtlas(ptr noundef nonnull %0)
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  store ptr null, ptr %26, align 8, !tbaa !17
  %27 = getelementptr inbounds i8, ptr %0, i64 44
  store i32 0, ptr %27, align 4, !tbaa !18
  %28 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 0, ptr %28, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %2, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %29 = getelementptr inbounds i8, ptr %0, i64 48
  %30 = load i64, ptr %2, align 8
  store i64 %30, ptr %29, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %3, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %31 = getelementptr inbounds i8, ptr %0, i64 56
  %32 = load i64, ptr %3, align 8
  store i64 %32, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN11ImFontAtlas12ClearTexDataEv(ptr noundef nonnull align 8 dereferenceable(116) %0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  call void @_ZN8ImVectorI18ImFontBuildSrcDataEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN8ImVectorI18ImFontBuildDstDataEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %33 = load i32, ptr %21, align 8, !tbaa !5
  invoke void @_ZN8ImVectorI18ImFontBuildSrcDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %33)
          to label %34 unwind label %49

34:                                               ; preds = %25
  %35 = getelementptr inbounds i8, ptr %0, i64 64
  %36 = load i32, ptr %35, align 8, !tbaa !20
  invoke void @_ZN8ImVectorI18ImFontBuildDstDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %36)
          to label %37 unwind label %49

37:                                               ; preds = %34
  %38 = getelementptr inbounds i8, ptr %4, i64 8
  %39 = load ptr, ptr %38, align 8, !tbaa !21
  %40 = call noundef i32 @_ZNK8ImVectorI18ImFontBuildSrcDataE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %4)
  %41 = sext i32 %40 to i64
  call void @llvm.memset.p0.i64(ptr align 8 %39, i8 0, i64 %41, i1 false)
  %42 = getelementptr inbounds i8, ptr %5, i64 8
  %43 = load ptr, ptr %42, align 8, !tbaa !23
  %44 = call noundef i32 @_ZNK8ImVectorI18ImFontBuildDstDataE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %45 = sext i32 %44 to i64
  call void @llvm.memset.p0.i64(ptr align 8 %43, i8 0, i64 %45, i1 false)
  %46 = load i32, ptr %21, align 8, !tbaa !5
  %.not355405 = icmp slt i32 %46, 1
  br i1 %.not355405, label %.critedge378.preheader, label %.lr.ph409

.critedge378.preheader:                           ; preds = %._crit_edge, %37
  %47 = load i32, ptr %4, align 8, !tbaa !25
  %48 = icmp sgt i32 %47, 0
  br i1 %48, label %.lr.ph428, label %.preheader384

49:                                               ; preds = %34, %25
  %50 = landingpad { ptr, i32 }
          cleanup
  br label %559

.lr.ph409:                                        ; preds = %37, %._crit_edge
  %.0306406 = phi i32 [ %116, %._crit_edge ], [ 0, %37 ]
  %51 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0306406)
  %52 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef %.0306406)
  %53 = getelementptr inbounds i8, ptr %52, i64 128
  %54 = load ptr, ptr %53, align 8, !tbaa !26
  %.not = icmp eq ptr %54, null
  br i1 %.not, label %.critedge, label %55

55:                                               ; preds = %.lr.ph409
  %56 = call noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(113) %54)
  br i1 %56, label %57, label %.critedge3

57:                                               ; preds = %55
  %58 = load ptr, ptr %53, align 8, !tbaa !26
  %59 = getelementptr inbounds i8, ptr %58, i64 72
  %60 = load ptr, ptr %59, align 8, !tbaa !29
  %61 = icmp eq ptr %60, %0
  br i1 %61, label %.critedge3, label %.critedge

.critedge:                                        ; preds = %.lr.ph409, %57
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.1, i32 noundef 1871, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

.critedge3:                                       ; preds = %55, %57
  %62 = getelementptr inbounds i8, ptr %51, i64 224
  store i32 -1, ptr %62, align 8, !tbaa !34
  %63 = load i32, ptr %35, align 8, !tbaa !20
  %64 = icmp sgt i32 %63, 0
  br i1 %64, label %.lr.ph, label %.critedge471

.critedge5:                                       ; preds = %69
  br i1 %73, label %.critedge471, label %74

.lr.ph:                                           ; preds = %.critedge3, %69
  %.0311400 = phi i32 [ %70, %69 ], [ 0, %.critedge3 ]
  %65 = load ptr, ptr %53, align 8, !tbaa !26
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8ImVectorIP6ImFontEixEi(ptr noundef nonnull align 8 dereferenceable(16) %35, i32 noundef %.0311400)
  %67 = load ptr, ptr %66, align 8, !tbaa !41
  %68 = icmp eq ptr %65, %67
  br i1 %68, label %.critedge5.thread, label %69

.critedge5.thread:                                ; preds = %.lr.ph
  store i32 %.0311400, ptr %62, align 8, !tbaa !34
  br label %74

69:                                               ; preds = %.lr.ph
  %.pr.pre = load i32, ptr %62, align 8
  %70 = add nuw nsw i32 %.0311400, 1
  %71 = load i32, ptr %35, align 8, !tbaa !20
  %72 = icmp slt i32 %70, %71
  %73 = icmp eq i32 %.pr.pre, -1
  %or.cond = select i1 %72, i1 %73, i1 false
  br i1 %or.cond, label %.lr.ph, label %.critedge5, !llvm.loop !42

.critedge471:                                     ; preds = %.critedge3, %.critedge5
  call void @__assert_fail(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str.1, i32 noundef 1878, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

74:                                               ; preds = %.critedge5.thread, %.critedge5
  %75 = load ptr, ptr %52, align 8, !tbaa !44
  %76 = getelementptr inbounds i8, ptr %52, i64 16
  %77 = load i32, ptr %76, align 8, !tbaa !45
  %78 = invoke noundef i32 @_ZL27stbtt_GetFontOffsetForIndexPKhi(ptr noundef %75, i32 noundef %77)
          to label %79 unwind label %82

79:                                               ; preds = %74
  %80 = icmp sgt i32 %78, -1
  br i1 %80, label %84, label %81

81:                                               ; preds = %79
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.1, i32 noundef 1884, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

82:                                               ; preds = %84, %74
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %559

84:                                               ; preds = %79
  %85 = load ptr, ptr %52, align 8, !tbaa !44
  %86 = invoke noundef i32 @_ZL14stbtt_InitFontP14stbtt_fontinfoPKhi(ptr noundef nonnull %51, ptr noundef %85, i32 noundef %78)
          to label %87 unwind label %82

87:                                               ; preds = %84
  %.not351.not = icmp eq i32 %86, 0
  br i1 %.not351.not, label %.critedge377, label %88

88:                                               ; preds = %87
  %89 = load i32, ptr %62, align 8, !tbaa !34
  %90 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %89)
  %91 = getelementptr inbounds i8, ptr %52, i64 56
  %92 = load ptr, ptr %91, align 8, !tbaa !46
  %.not352 = icmp eq ptr %92, null
  br i1 %.not352, label %93, label %95

93:                                               ; preds = %88
  %94 = call noundef ptr @_ZN11ImFontAtlas21GetGlyphRangesDefaultEv(ptr noundef nonnull align 8 dereferenceable(116) %0)
  br label %95

95:                                               ; preds = %88, %93
  %96 = phi ptr [ %94, %93 ], [ %92, %88 ]
  %97 = getelementptr inbounds i8, ptr %51, i64 216
  store ptr %96, ptr %97, align 8, !tbaa !47
  %98 = load i16, ptr %96, align 2, !tbaa !48
  %.not353401 = icmp eq i16 %98, 0
  br i1 %.not353401, label %._crit_edge, label %.lr.ph403

.lr.ph403:                                        ; preds = %95
  %99 = getelementptr inbounds i8, ptr %51, i64 228
  br label %100

100:                                              ; preds = %.lr.ph403, %103
  %.0312402 = phi ptr [ %96, %.lr.ph403 ], [ %107, %103 ]
  %101 = getelementptr inbounds i8, ptr %.0312402, i64 2
  %102 = load i16, ptr %101, align 2, !tbaa !48
  %.not354 = icmp eq i16 %102, 0
  br i1 %.not354, label %._crit_edge, label %103

103:                                              ; preds = %100
  %104 = load i32, ptr %99, align 4, !tbaa !49
  %105 = zext i16 %102 to i32
  %106 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %104, i32 noundef %105)
  store i32 %106, ptr %99, align 4, !tbaa !49
  %107 = getelementptr inbounds i8, ptr %.0312402, i64 4
  %108 = load i16, ptr %107, align 2, !tbaa !48
  %.not353 = icmp eq i16 %108, 0
  br i1 %.not353, label %._crit_edge, label %100, !llvm.loop !50

._crit_edge:                                      ; preds = %103, %100, %95
  %109 = load i32, ptr %90, align 8, !tbaa !51
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %90, align 8, !tbaa !51
  %111 = getelementptr inbounds i8, ptr %90, i64 4
  %112 = load i32, ptr %111, align 4, !tbaa !53
  %113 = getelementptr inbounds i8, ptr %51, i64 228
  %114 = load i32, ptr %113, align 4, !tbaa !49
  %115 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %112, i32 noundef %114)
  store i32 %115, ptr %111, align 4, !tbaa !53
  %116 = add nuw nsw i32 %.0306406, 1
  %117 = load i32, ptr %21, align 8, !tbaa !5
  %.not355.not = icmp slt i32 %116, %117
  br i1 %.not355.not, label %.lr.ph409, label %.critedge378.preheader, !llvm.loop !54

.preheader385:                                    ; preds = %.critedge9
  %118 = icmp sgt i32 %147, 0
  br i1 %118, label %.lr.ph431, label %.preheader384

.lr.ph428:                                        ; preds = %.critedge378.preheader, %.critedge9
  %.0313427 = phi i32 [ %.1314.lcssa, %.critedge9 ], [ 0, %.critedge378.preheader ]
  %.0317426 = phi i32 [ %146, %.critedge9 ], [ 0, %.critedge378.preheader ]
  %119 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0317426)
  %120 = getelementptr inbounds i8, ptr %119, i64 224
  %121 = load i32, ptr %120, align 8, !tbaa !34
  %122 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %121)
  %123 = getelementptr inbounds i8, ptr %119, i64 240
  %124 = getelementptr inbounds i8, ptr %119, i64 228
  %125 = load i32, ptr %124, align 4, !tbaa !49
  %126 = add nsw i32 %125, 1
  invoke void @_ZN12ImBoolVector6ResizeEi(ptr noundef nonnull align 8 dereferenceable(16) %123, i32 noundef %126)
          to label %127 unwind label %134

127:                                              ; preds = %.lr.ph428
  %128 = getelementptr inbounds i8, ptr %122, i64 16
  %129 = call noundef zeroext i1 @_ZNK8ImVectorIiE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %128)
  br i1 %129, label %130, label %136

130:                                              ; preds = %127
  %131 = getelementptr inbounds i8, ptr %122, i64 4
  %132 = load i32, ptr %131, align 4, !tbaa !53
  %133 = add nsw i32 %132, 1
  invoke void @_ZN12ImBoolVector6ResizeEi(ptr noundef nonnull align 8 dereferenceable(16) %128, i32 noundef %133)
          to label %136 unwind label %134

134:                                              ; preds = %130, %.lr.ph428
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %559

136:                                              ; preds = %130, %127
  %137 = getelementptr inbounds i8, ptr %119, i64 216
  %138 = load ptr, ptr %137, align 8, !tbaa !47
  %139 = load i16, ptr %138, align 2, !tbaa !48
  %.not367418 = icmp eq i16 %139, 0
  br i1 %.not367418, label %.critedge9, label %.lr.ph422

.lr.ph422:                                        ; preds = %136
  %140 = getelementptr inbounds i8, ptr %119, i64 232
  %141 = getelementptr inbounds i8, ptr %122, i64 8
  br label %142

142:                                              ; preds = %.lr.ph422, %._crit_edge416
  %143 = phi i16 [ %139, %.lr.ph422 ], [ %152, %._crit_edge416 ]
  %.1314420 = phi i32 [ %.0313427, %.lr.ph422 ], [ %.2315.lcssa, %._crit_edge416 ]
  %.0318419 = phi ptr [ %138, %.lr.ph422 ], [ %151, %._crit_edge416 ]
  %144 = getelementptr inbounds i8, ptr %.0318419, i64 2
  %145 = load i16, ptr %144, align 2, !tbaa !48
  %.not368 = icmp eq i16 %145, 0
  br i1 %.not368, label %.critedge9, label %149

.critedge9:                                       ; preds = %142, %._crit_edge416, %136
  %.1314.lcssa = phi i32 [ %.0313427, %136 ], [ %.2315.lcssa, %._crit_edge416 ], [ %.1314420, %142 ]
  %146 = add nuw nsw i32 %.0317426, 1
  %147 = load i32, ptr %4, align 8, !tbaa !25
  %148 = icmp slt i32 %146, %147
  br i1 %148, label %.lr.ph428, label %.preheader385, !llvm.loop !55

149:                                              ; preds = %142
  %.not369411 = icmp ugt i16 %143, %145
  br i1 %.not369411, label %._crit_edge416, label %.lr.ph415.preheader

.lr.ph415.preheader:                              ; preds = %149
  %150 = zext i16 %143 to i32
  br label %.lr.ph415

._crit_edge416:                                   ; preds = %168, %149
  %.2315.lcssa = phi i32 [ %.1314420, %149 ], [ %.3316, %168 ]
  %151 = getelementptr inbounds i8, ptr %.0318419, i64 4
  %152 = load i16, ptr %151, align 2, !tbaa !48
  %.not367 = icmp eq i16 %152, 0
  br i1 %.not367, label %.critedge9, label %142, !llvm.loop !56

.lr.ph415:                                        ; preds = %.lr.ph415.preheader, %168
  %.2315413 = phi i32 [ %.3316, %168 ], [ %.1314420, %.lr.ph415.preheader ]
  %.0319412 = phi i32 [ %169, %168 ], [ %150, %.lr.ph415.preheader ]
  %153 = invoke noundef zeroext i1 @_ZNK12ImBoolVector6GetBitEi(ptr noundef nonnull align 8 dereferenceable(16) %128, i32 noundef %.0319412)
          to label %154 unwind label %155

154:                                              ; preds = %.lr.ph415
  br i1 %153, label %168, label %157

155:                                              ; preds = %165, %160, %157, %.lr.ph415
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %559

157:                                              ; preds = %154
  %158 = invoke noundef i32 @_ZL20stbtt_FindGlyphIndexPK14stbtt_fontinfoi(ptr noundef nonnull %119, i32 noundef %.0319412)
          to label %159 unwind label %155

159:                                              ; preds = %157
  %.not370 = icmp eq i32 %158, 0
  br i1 %.not370, label %168, label %160

160:                                              ; preds = %159
  %161 = load i32, ptr %140, align 8, !tbaa !57
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %140, align 8, !tbaa !57
  %163 = load i32, ptr %141, align 8, !tbaa !58
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %141, align 8, !tbaa !58
  invoke void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16) %123, i32 noundef %.0319412, i1 noundef zeroext true)
          to label %165 unwind label %155

165:                                              ; preds = %160
  invoke void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16) %128, i32 noundef %.0319412, i1 noundef zeroext true)
          to label %166 unwind label %155

166:                                              ; preds = %165
  %167 = add nsw i32 %.2315413, 1
  br label %168

168:                                              ; preds = %159, %154, %166
  %.3316 = phi i32 [ %.2315413, %154 ], [ %167, %166 ], [ %.2315413, %159 ]
  %169 = add nuw nsw i32 %.0319412, 1
  %170 = load i16, ptr %144, align 2, !tbaa !48
  %171 = zext i16 %170 to i32
  %.not369.not = icmp ult i32 %.0319412, %171
  br i1 %.not369.not, label %.lr.ph415, label %._crit_edge416, !llvm.loop !59

172:                                              ; preds = %185
  %173 = add nuw nsw i32 %.0320430, 1
  %174 = load i32, ptr %4, align 8, !tbaa !25
  %175 = icmp slt i32 %173, %174
  br i1 %175, label %.lr.ph431, label %.preheader384, !llvm.loop !60

.preheader384:                                    ; preds = %172, %.critedge378.preheader, %.preheader385
  %.0313.lcssa491 = phi i32 [ %.1314.lcssa, %.preheader385 ], [ 0, %.critedge378.preheader ], [ %.1314.lcssa, %172 ]
  %176 = load i32, ptr %5, align 8, !tbaa !61
  %177 = icmp sgt i32 %176, 0
  br i1 %177, label %.lr.ph433, label %._crit_edge434

.lr.ph431:                                        ; preds = %.preheader385, %172
  %.0320430 = phi i32 [ %173, %172 ], [ 0, %.preheader385 ]
  %178 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0320430)
  %179 = getelementptr inbounds i8, ptr %178, i64 256
  %180 = getelementptr inbounds i8, ptr %178, i64 232
  %181 = load i32, ptr %180, align 8, !tbaa !57
  invoke void @_ZN8ImVectorIiE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %179, i32 noundef %181)
          to label %182 unwind label %190

182:                                              ; preds = %.lr.ph431
  %183 = getelementptr inbounds i8, ptr %178, i64 240
  invoke void @_ZL31UnpackBoolVectorToFlatIndexListPK12ImBoolVectorP8ImVectorIiE(ptr noundef nonnull %183, ptr noundef nonnull %179)
          to label %184 unwind label %190

184:                                              ; preds = %182
  invoke void @_ZN12ImBoolVector5ClearEv(ptr noundef nonnull align 8 dereferenceable(16) %183)
          to label %185 unwind label %190

185:                                              ; preds = %184
  %186 = load i32, ptr %179, align 8, !tbaa !62
  %187 = load i32, ptr %180, align 8, !tbaa !57
  %188 = icmp eq i32 %186, %187
  br i1 %188, label %172, label %189

189:                                              ; preds = %185
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.1, i32 noundef 1931, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

190:                                              ; preds = %184, %182, %.lr.ph431
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %559

._crit_edge434:                                   ; preds = %194, %.preheader384
  invoke void @_ZN8ImVectorI18ImFontBuildDstDataE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %200 unwind label %219

.lr.ph433:                                        ; preds = %.preheader384, %194
  %.0324432 = phi i32 [ %195, %194 ], [ 0, %.preheader384 ]
  %192 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN8ImVectorI18ImFontBuildDstDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %.0324432)
  %193 = getelementptr inbounds i8, ptr %192, i64 16
  invoke void @_ZN12ImBoolVector5ClearEv(ptr noundef nonnull align 8 dereferenceable(16) %193)
          to label %194 unwind label %198

194:                                              ; preds = %.lr.ph433
  %195 = add nuw nsw i32 %.0324432, 1
  %196 = load i32, ptr %5, align 8, !tbaa !61
  %197 = icmp slt i32 %195, %196
  br i1 %197, label %.lr.ph433, label %._crit_edge434, !llvm.loop !63

198:                                              ; preds = %.lr.ph433
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %559

200:                                              ; preds = %._crit_edge434
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  call void @_ZN8ImVectorI10stbrp_rectEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #10
  call void @_ZN8ImVectorI16stbtt_packedcharEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7)
  invoke void @_ZN8ImVectorI10stbrp_rectE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %.0313.lcssa491)
          to label %201 unwind label %221

201:                                              ; preds = %200
  invoke void @_ZN8ImVectorI16stbtt_packedcharE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.0313.lcssa491)
          to label %202 unwind label %221

202:                                              ; preds = %201
  %203 = getelementptr inbounds i8, ptr %6, i64 8
  %204 = load ptr, ptr %203, align 8, !tbaa !64
  %205 = call noundef i32 @_ZNK8ImVectorI10stbrp_rectE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
  %206 = sext i32 %205 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %204, i8 0, i64 %206, i1 false)
  %207 = getelementptr inbounds i8, ptr %7, i64 8
  %208 = load ptr, ptr %207, align 8, !tbaa !66
  %209 = call noundef i32 @_ZNK8ImVectorI16stbtt_packedcharE13size_in_bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %210 = sext i32 %209 to i64
  call void @llvm.memset.p0.i64(ptr align 4 %208, i8 0, i64 %210, i1 false)
  %211 = load i32, ptr %4, align 8, !tbaa !25
  %212 = icmp sgt i32 %211, 0
  br i1 %212, label %.lr.ph445, label %._crit_edge446

.lr.ph445:                                        ; preds = %202
  %213 = getelementptr inbounds i8, ptr %0, i64 20
  br label %223

._crit_edge446:                                   ; preds = %.loopexit383, %202
  %.0325.lcssa = phi i32 [ 0, %202 ], [ %.2327, %.loopexit383 ]
  %214 = uitofp nneg i32 %.0325.lcssa to float
  %215 = call noundef float @_ZL6ImSqrtf(float noundef %214)
  store i32 0, ptr %27, align 4, !tbaa !18
  %216 = getelementptr inbounds i8, ptr %0, i64 16
  %217 = load i32, ptr %216, align 8, !tbaa !68
  %218 = icmp sgt i32 %217, 0
  br i1 %218, label %321, label %313

219:                                              ; preds = %._crit_edge434
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %559

221:                                              ; preds = %201, %200
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %558

223:                                              ; preds = %.lr.ph445, %.loopexit383
  %.0325443 = phi i32 [ 0, %.lr.ph445 ], [ %.2327, %.loopexit383 ]
  %.0330442 = phi i32 [ 0, %.lr.ph445 ], [ %.1331, %.loopexit383 ]
  %.0333441 = phi i32 [ 0, %.lr.ph445 ], [ %.1334, %.loopexit383 ]
  %.0335440 = phi i32 [ 0, %.lr.ph445 ], [ %310, %.loopexit383 ]
  %224 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0335440)
  %225 = getelementptr inbounds i8, ptr %224, i64 232
  %226 = load i32, ptr %225, align 8, !tbaa !57
  %227 = icmp eq i32 %226, 0
  br i1 %227, label %.loopexit383, label %228

228:                                              ; preds = %223
  %229 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8ImVectorI10stbrp_rectEixEi(ptr noundef nonnull align 8 dereferenceable(16) %6, i32 noundef %.0330442)
  %230 = getelementptr inbounds i8, ptr %224, i64 200
  store ptr %229, ptr %230, align 8, !tbaa !69
  %231 = call noundef nonnull align 4 dereferenceable(28) ptr @_ZN8ImVectorI16stbtt_packedcharEixEi(ptr noundef nonnull align 8 dereferenceable(16) %7, i32 noundef %.0333441)
  %232 = getelementptr inbounds i8, ptr %224, i64 208
  store ptr %231, ptr %232, align 8, !tbaa !70
  %233 = load i32, ptr %225, align 8, !tbaa !57
  %234 = add nsw i32 %233, %.0330442
  %235 = add nsw i32 %233, %.0333441
  %236 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef %.0335440)
  %237 = getelementptr inbounds i8, ptr %236, i64 20
  %238 = load float, ptr %237, align 4, !tbaa !71
  %239 = getelementptr inbounds i8, ptr %224, i64 160
  store float %238, ptr %239, align 8, !tbaa !72
  %240 = getelementptr inbounds i8, ptr %224, i64 164
  store i32 0, ptr %240, align 4, !tbaa !73
  %241 = getelementptr inbounds i8, ptr %224, i64 256
  %242 = getelementptr inbounds i8, ptr %224, i64 264
  %243 = load ptr, ptr %242, align 8, !tbaa !74
  %244 = getelementptr inbounds i8, ptr %224, i64 168
  store ptr %243, ptr %244, align 8, !tbaa !75
  %245 = load i32, ptr %241, align 8, !tbaa !62
  %246 = getelementptr inbounds i8, ptr %224, i64 176
  store i32 %245, ptr %246, align 8, !tbaa !76
  %247 = load ptr, ptr %232, align 8, !tbaa !70
  %248 = getelementptr inbounds i8, ptr %224, i64 184
  store ptr %247, ptr %248, align 8, !tbaa !77
  %249 = getelementptr inbounds i8, ptr %236, i64 24
  %250 = load i32, ptr %249, align 8, !tbaa !78
  %251 = trunc i32 %250 to i8
  %252 = getelementptr inbounds i8, ptr %224, i64 192
  store i8 %251, ptr %252, align 8, !tbaa !79
  %253 = getelementptr inbounds i8, ptr %236, i64 28
  %254 = load i32, ptr %253, align 4, !tbaa !80
  %255 = trunc i32 %254 to i8
  %256 = getelementptr inbounds i8, ptr %224, i64 193
  store i8 %255, ptr %256, align 1, !tbaa !81
  %257 = fcmp ogt float %238, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %228
  %259 = call noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef nonnull %224, float noundef %238)
  br label %263

260:                                              ; preds = %228
  %261 = fneg float %238
  %262 = call noundef float @_ZL31stbtt_ScaleForMappingEmToPixelsPK14stbtt_fontinfof(ptr noundef nonnull %224, float noundef %261)
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi float [ %259, %258 ], [ %262, %260 ]
  %265 = load i32, ptr %213, align 4, !tbaa !82
  %266 = load i32, ptr %241, align 8, !tbaa !62
  %267 = icmp sgt i32 %266, 0
  br i1 %267, label %.lr.ph438, label %.loopexit383

.lr.ph438:                                        ; preds = %263, %283
  %indvars.iv = phi i64 [ %indvars.iv.next, %283 ], [ 0, %263 ]
  %.1326436 = phi i32 [ %306, %283 ], [ %.0325443, %263 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  %268 = trunc nuw nsw i64 %indvars.iv to i32
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiEixEi(ptr noundef nonnull align 8 dereferenceable(16) %241, i32 noundef %268)
  %270 = load i32, ptr %269, align 4, !tbaa !83
  %271 = invoke noundef i32 @_ZL20stbtt_FindGlyphIndexPK14stbtt_fontinfoi(ptr noundef nonnull %224, i32 noundef %270)
          to label %272 unwind label %274

272:                                              ; preds = %.lr.ph438
  %.not363 = icmp eq i32 %271, 0
  br i1 %.not363, label %273, label %276

273:                                              ; preds = %272
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.1, i32 noundef 1978, ptr noundef nonnull @__PRETTY_FUNCTION__._Z31ImFontAtlasBuildWithStbTruetypeP11ImFontAtlas) #9
  unreachable

274:                                              ; preds = %276, %.lr.ph438
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  br label %558

276:                                              ; preds = %272
  %277 = load i32, ptr %249, align 8, !tbaa !78
  %278 = sitofp i32 %277 to float
  %279 = fmul float %264, %278
  %280 = load i32, ptr %253, align 4, !tbaa !80
  %281 = sitofp i32 %280 to float
  %282 = fmul float %264, %281
  invoke void @_ZL31stbtt_GetGlyphBitmapBoxSubpixelPK14stbtt_fontinfoiffffPiS2_S2_S2_(ptr noundef nonnull %224, i32 noundef %271, float noundef %279, float noundef %282, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11)
          to label %283 unwind label %274

283:                                              ; preds = %276
  %284 = load i32, ptr %10, align 4, !tbaa !83
  %285 = load i32, ptr %8, align 4, !tbaa !83
  %286 = load i32, ptr %249, align 8, !tbaa !78
  %287 = add i32 %284, %265
  %288 = sub i32 %287, %285
  %289 = add nsw i32 %288, %286
  %290 = trunc i32 %289 to i16
  %291 = add i16 %290, -1
  %292 = load ptr, ptr %230, align 8, !tbaa !69
  %293 = getelementptr inbounds %struct.stbrp_rect, ptr %292, i64 %indvars.iv, i32 1
  store i16 %291, ptr %293, align 4, !tbaa !84
  %294 = load i32, ptr %11, align 4, !tbaa !83
  %295 = load i32, ptr %9, align 4, !tbaa !83
  %296 = load i32, ptr %253, align 4, !tbaa !80
  %297 = add i32 %294, %265
  %298 = sub i32 %297, %295
  %299 = add nsw i32 %298, %296
  %300 = trunc i32 %299 to i16
  %301 = add i16 %300, -1
  %302 = getelementptr inbounds %struct.stbrp_rect, ptr %292, i64 %indvars.iv, i32 2
  store i16 %301, ptr %302, align 2, !tbaa !86
  %303 = zext i16 %291 to i32
  %304 = zext i16 %301 to i32
  %305 = mul nuw nsw i32 %304, %303
  %306 = add nuw nsw i32 %305, %.1326436
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %307 = load i32, ptr %241, align 8, !tbaa !62
  %308 = sext i32 %307 to i64
  %309 = icmp slt i64 %indvars.iv.next, %308
  br i1 %309, label %.lr.ph438, label %.loopexit383, !llvm.loop !87

.loopexit383:                                     ; preds = %283, %263, %223
  %.1334 = phi i32 [ %.0333441, %223 ], [ %235, %263 ], [ %235, %283 ]
  %.1331 = phi i32 [ %.0330442, %223 ], [ %234, %263 ], [ %234, %283 ]
  %.2327 = phi i32 [ %.0325443, %223 ], [ %.0325443, %263 ], [ %306, %283 ]
  %310 = add nuw nsw i32 %.0335440, 1
  %311 = load i32, ptr %4, align 8, !tbaa !25
  %312 = icmp slt i32 %310, %311
  br i1 %312, label %223, label %._crit_edge446, !llvm.loop !88

313:                                              ; preds = %._crit_edge446
  %314 = fptosi float %215 to i32
  %315 = icmp sgt i32 %314, 2866
  br i1 %315, label %321, label %316

316:                                              ; preds = %313
  %317 = icmp sgt i32 %314, 1432
  br i1 %317, label %321, label %318

318:                                              ; preds = %316
  %319 = icmp sgt i32 %314, 715
  %320 = select i1 %319, i32 1024, i32 512
  br label %321

321:                                              ; preds = %313, %316, %318, %._crit_edge446
  %storemerge = phi i32 [ %217, %._crit_edge446 ], [ 4096, %313 ], [ %320, %318 ], [ 2048, %316 ]
  store i32 %storemerge, ptr %28, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  %322 = getelementptr inbounds i8, ptr %0, i64 20
  %323 = load i32, ptr %322, align 4, !tbaa !82
  %324 = invoke noundef i32 @_ZL15stbtt_PackBeginP18stbtt_pack_contextPhiiiiPv(ptr noundef nonnull %12, ptr noundef null, i32 noundef %storemerge, i32 noundef 32768, i32 noundef 0, i32 noundef %323, ptr noundef null)
          to label %325 unwind label %334

325:                                              ; preds = %321
  %326 = getelementptr inbounds i8, ptr %12, i64 8
  %327 = load ptr, ptr %326, align 8, !tbaa !89
  invoke void @_Z31ImFontAtlasBuildPackCustomRectsP11ImFontAtlasPv(ptr noundef nonnull %0, ptr noundef %327)
          to label %.preheader382 unwind label %334

.preheader382:                                    ; preds = %325
  %328 = load i32, ptr %4, align 8, !tbaa !25
  %329 = icmp sgt i32 %328, 0
  br i1 %329, label %.lr.ph451, label %._crit_edge452

._crit_edge452:                                   ; preds = %.loopexit, %.preheader382
  %330 = getelementptr inbounds i8, ptr %0, i64 4
  %331 = load i32, ptr %330, align 4, !tbaa !91
  %332 = and i32 %331, 1
  %.not356 = icmp eq i32 %332, 0
  %333 = load i32, ptr %27, align 4, !tbaa !18
  br i1 %.not356, label %373, label %371

334:                                              ; preds = %._crit_edge470, %448, %._crit_edge461, %375, %325, %321
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %557

.lr.ph451:                                        ; preds = %.preheader382, %.loopexit
  %.0332450 = phi i32 [ %368, %.loopexit ], [ 0, %.preheader382 ]
  %336 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0332450)
  %337 = getelementptr inbounds i8, ptr %336, i64 232
  %338 = load i32, ptr %337, align 8, !tbaa !57
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %.loopexit, label %342

340:                                              ; preds = %342
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %557

342:                                              ; preds = %.lr.ph451
  %343 = load ptr, ptr %326, align 8, !tbaa !89
  %344 = getelementptr inbounds i8, ptr %336, i64 200
  %345 = load ptr, ptr %344, align 8, !tbaa !69
  %346 = invoke noundef i32 @_ZL16stbrp_pack_rectsP13stbrp_contextP10stbrp_recti(ptr noundef %343, ptr noundef %345, i32 noundef %338)
          to label %.preheader381 unwind label %340

.preheader381:                                    ; preds = %342
  %347 = load i32, ptr %337, align 8, !tbaa !57
  %348 = icmp sgt i32 %347, 0
  br i1 %348, label %.lr.ph449, label %.loopexit

.lr.ph449:                                        ; preds = %.preheader381, %364
  %349 = phi i32 [ %365, %364 ], [ %347, %.preheader381 ]
  %indvars.iv480 = phi i64 [ %indvars.iv.next481, %364 ], [ 0, %.preheader381 ]
  %350 = load ptr, ptr %344, align 8, !tbaa !69
  %351 = getelementptr inbounds %struct.stbrp_rect, ptr %350, i64 %indvars.iv480
  %352 = getelementptr inbounds i8, ptr %351, i64 12
  %353 = load i32, ptr %352, align 4, !tbaa !92
  %.not362 = icmp eq i32 %353, 0
  br i1 %.not362, label %364, label %354

354:                                              ; preds = %.lr.ph449
  %355 = load i32, ptr %27, align 4, !tbaa !18
  %356 = getelementptr inbounds i8, ptr %351, i64 10
  %357 = load i16, ptr %356, align 2, !tbaa !93
  %358 = zext i16 %357 to i32
  %359 = getelementptr inbounds i8, ptr %351, i64 6
  %360 = load i16, ptr %359, align 2, !tbaa !86
  %361 = zext i16 %360 to i32
  %362 = add nuw nsw i32 %361, %358
  %363 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %355, i32 noundef %362)
  store i32 %363, ptr %27, align 4, !tbaa !18
  %.pre = load i32, ptr %337, align 8, !tbaa !57
  br label %364

364:                                              ; preds = %.lr.ph449, %354
  %365 = phi i32 [ %349, %.lr.ph449 ], [ %.pre, %354 ]
  %indvars.iv.next481 = add nuw nsw i64 %indvars.iv480, 1
  %366 = sext i32 %365 to i64
  %367 = icmp slt i64 %indvars.iv.next481, %366
  br i1 %367, label %.lr.ph449, label %.loopexit, !llvm.loop !94

.loopexit:                                        ; preds = %364, %.preheader381, %.lr.ph451
  %368 = add nuw nsw i32 %.0332450, 1
  %369 = load i32, ptr %4, align 8, !tbaa !25
  %370 = icmp slt i32 %368, %369
  br i1 %370, label %.lr.ph451, label %._crit_edge452, !llvm.loop !95

371:                                              ; preds = %._crit_edge452
  %372 = add nsw i32 %333, 1
  br label %375

373:                                              ; preds = %._crit_edge452
  %374 = call noundef i32 @_ZL17ImUpperPowerOfTwoi(i32 noundef %333)
  br label %375

375:                                              ; preds = %373, %371
  %376 = phi i32 [ %372, %371 ], [ %374, %373 ]
  store i32 %376, ptr %27, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %377 = load i32, ptr %28, align 8, !tbaa !19
  %378 = sitofp i32 %377 to float
  %379 = fdiv float 1.000000e+00, %378
  %380 = sitofp i32 %376 to float
  %381 = fdiv float 1.000000e+00, %380
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %379, float noundef %381)
  %382 = load i64, ptr %13, align 8
  store i64 %382, ptr %29, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  %383 = load i32, ptr %28, align 8, !tbaa !19
  %384 = load i32, ptr %27, align 4, !tbaa !18
  %385 = mul nsw i32 %384, %383
  %386 = sext i32 %385 to i64
  %387 = invoke noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %386)
          to label %388 unwind label %334

388:                                              ; preds = %375
  %389 = getelementptr inbounds i8, ptr %0, i64 24
  store ptr %387, ptr %389, align 8, !tbaa !96
  %390 = load i32, ptr %28, align 8, !tbaa !19
  %391 = load i32, ptr %27, align 4, !tbaa !18
  %392 = mul nsw i32 %391, %390
  %393 = sext i32 %392 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %387, i8 0, i64 %393, i1 false)
  %394 = load ptr, ptr %389, align 8, !tbaa !96
  %395 = getelementptr inbounds i8, ptr %12, i64 48
  store ptr %394, ptr %395, align 8, !tbaa !97
  %396 = load i32, ptr %27, align 4, !tbaa !18
  %397 = getelementptr inbounds i8, ptr %12, i64 20
  store i32 %396, ptr %397, align 4, !tbaa !98
  %398 = load i32, ptr %4, align 8, !tbaa !25
  %399 = icmp sgt i32 %398, 0
  br i1 %399, label %.lr.ph460, label %._crit_edge461

._crit_edge461:                                   ; preds = %444, %388
  invoke void @_ZL13stbtt_PackEndP18stbtt_pack_context(ptr noundef nonnull %12)
          to label %448 unwind label %334

.lr.ph460:                                        ; preds = %388, %444
  %.0328458 = phi i32 [ %445, %444 ], [ 0, %388 ]
  %400 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef %.0328458)
  %401 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0328458)
  %402 = getelementptr inbounds i8, ptr %401, i64 232
  %403 = load i32, ptr %402, align 8, !tbaa !57
  %404 = icmp eq i32 %403, 0
  br i1 %404, label %444, label %407

405:                                              ; preds = %407
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %557

407:                                              ; preds = %.lr.ph460
  %408 = getelementptr inbounds i8, ptr %401, i64 160
  %409 = getelementptr inbounds i8, ptr %401, i64 200
  %410 = load ptr, ptr %409, align 8, !tbaa !69
  %411 = invoke noundef i32 @_ZL35stbtt_PackFontRangesRenderIntoRectsP18stbtt_pack_contextPK14stbtt_fontinfoP16stbtt_pack_rangeiP10stbrp_rect(ptr noundef nonnull %12, ptr noundef nonnull %401, ptr noundef nonnull %408, i32 noundef 1, ptr noundef %410)
          to label %412 unwind label %405

412:                                              ; preds = %407
  %413 = getelementptr inbounds i8, ptr %400, i64 80
  %414 = load float, ptr %413, align 8, !tbaa !99
  %415 = fcmp une float %414, 1.000000e+00
  br i1 %415, label %416, label %443

416:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %14) #10
  call void @_Z39ImFontAtlasBuildMultiplyCalcLookupTablePhf(ptr noundef nonnull %14, float noundef %414)
  %417 = load i32, ptr %402, align 8, !tbaa !57
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %.lr.ph456.preheader, label %._crit_edge457

.lr.ph456.preheader:                              ; preds = %416
  %419 = load ptr, ptr %409, align 8, !tbaa !69
  br label %.lr.ph456

._crit_edge457:                                   ; preds = %438, %416
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %14) #10
  br label %443

.lr.ph456:                                        ; preds = %.lr.ph456.preheader, %438
  %420 = phi i32 [ %439, %438 ], [ %417, %.lr.ph456.preheader ]
  %.0322454 = phi i32 [ %440, %438 ], [ 0, %.lr.ph456.preheader ]
  %.0323453 = phi ptr [ %441, %438 ], [ %419, %.lr.ph456.preheader ]
  %421 = getelementptr inbounds i8, ptr %.0323453, i64 12
  %422 = load i32, ptr %421, align 4, !tbaa !92
  %.not359 = icmp eq i32 %422, 0
  br i1 %.not359, label %438, label %423

423:                                              ; preds = %.lr.ph456
  %424 = load ptr, ptr %389, align 8, !tbaa !96
  %425 = getelementptr inbounds i8, ptr %.0323453, i64 8
  %426 = load i16, ptr %425, align 4, !tbaa !100
  %427 = zext i16 %426 to i32
  %428 = getelementptr inbounds i8, ptr %.0323453, i64 10
  %429 = load i16, ptr %428, align 2, !tbaa !93
  %430 = zext i16 %429 to i32
  %431 = getelementptr inbounds i8, ptr %.0323453, i64 4
  %432 = load i16, ptr %431, align 4, !tbaa !84
  %433 = zext i16 %432 to i32
  %434 = getelementptr inbounds i8, ptr %.0323453, i64 6
  %435 = load i16, ptr %434, align 2, !tbaa !86
  %436 = zext i16 %435 to i32
  %437 = load i32, ptr %28, align 8, !tbaa !19
  call void @_Z34ImFontAtlasBuildMultiplyRectAlpha8PKhPhiiiii(ptr noundef nonnull %14, ptr noundef %424, i32 noundef %427, i32 noundef %430, i32 noundef %433, i32 noundef %436, i32 noundef %437)
  %.pre487 = load i32, ptr %402, align 8, !tbaa !57
  br label %438

438:                                              ; preds = %.lr.ph456, %423
  %439 = phi i32 [ %420, %.lr.ph456 ], [ %.pre487, %423 ]
  %440 = add nuw nsw i32 %.0322454, 1
  %441 = getelementptr inbounds i8, ptr %.0323453, i64 16
  %442 = icmp slt i32 %440, %439
  br i1 %442, label %.lr.ph456, label %._crit_edge457, !llvm.loop !101

443:                                              ; preds = %._crit_edge457, %412
  store ptr null, ptr %409, align 8, !tbaa !69
  br label %444

444:                                              ; preds = %.lr.ph460, %443
  %445 = add nuw nsw i32 %.0328458, 1
  %446 = load i32, ptr %4, align 8, !tbaa !25
  %447 = icmp slt i32 %445, %446
  br i1 %447, label %.lr.ph460, label %._crit_edge461, !llvm.loop !102

448:                                              ; preds = %._crit_edge461
  invoke void @_ZN8ImVectorI10stbrp_rectE5clearEv(ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %.preheader380 unwind label %334

.preheader380:                                    ; preds = %448
  %449 = load i32, ptr %4, align 8, !tbaa !25
  %450 = icmp sgt i32 %449, 0
  br i1 %450, label %.lr.ph467, label %._crit_edge470

.lr.ph467:                                        ; preds = %.preheader380
  %451 = getelementptr inbounds i8, ptr %18, i64 4
  %452 = getelementptr inbounds i8, ptr %18, i64 16
  %453 = getelementptr inbounds i8, ptr %18, i64 20
  %454 = getelementptr inbounds i8, ptr %18, i64 8
  %455 = getelementptr inbounds i8, ptr %18, i64 12
  %456 = getelementptr inbounds i8, ptr %18, i64 24
  %457 = getelementptr inbounds i8, ptr %18, i64 28
  br label %459

.preheader:                                       ; preds = %547
  %458 = icmp sgt i32 %549, 0
  br i1 %458, label %.lr.ph469, label %._crit_edge470

459:                                              ; preds = %.lr.ph467, %547
  %.0321466 = phi i32 [ 0, %.lr.ph467 ], [ %548, %547 ]
  %460 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0321466)
  %461 = getelementptr inbounds i8, ptr %460, i64 232
  %462 = load i32, ptr %461, align 8, !tbaa !57
  %463 = icmp eq i32 %462, 0
  br i1 %463, label %547, label %464

464:                                              ; preds = %459
  %465 = call noundef nonnull align 8 dereferenceable(136) ptr @_ZN8ImVectorI12ImFontConfigEixEi(ptr noundef nonnull align 8 dereferenceable(16) %21, i32 noundef %.0321466)
  %466 = getelementptr inbounds i8, ptr %465, i64 128
  %467 = load ptr, ptr %466, align 8, !tbaa !26
  %468 = getelementptr inbounds i8, ptr %465, i64 20
  %469 = load float, ptr %468, align 4, !tbaa !71
  %470 = call noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef nonnull %460, float noundef %469)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  call void @_ZL21stbtt_GetFontVMetricsPK14stbtt_fontinfoPiS2_S2_(ptr noundef nonnull %460, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17)
  %471 = load i32, ptr %15, align 4, !tbaa !83
  %472 = sitofp i32 %471 to float
  %.inv = icmp slt i32 %471, 1
  %473 = select i1 %.inv, i32 -1, i32 1
  %474 = sitofp i32 %473 to float
  %475 = call float @llvm.fmuladd.f32(float %472, float %470, float %474)
  %476 = call noundef float @_ZL7ImFloorf(float noundef %475)
  %477 = load i32, ptr %16, align 4, !tbaa !83
  %478 = sitofp i32 %477 to float
  %.inv357 = icmp slt i32 %477, 1
  %479 = select i1 %.inv357, i32 -1, i32 1
  %480 = sitofp i32 %479 to float
  %481 = call float @llvm.fmuladd.f32(float %478, float %470, float %480)
  %482 = call noundef float @_ZL7ImFloorf(float noundef %481)
  invoke void @_Z25ImFontAtlasBuildSetupFontP11ImFontAtlasP6ImFontP12ImFontConfigff(ptr noundef nonnull %0, ptr noundef %467, ptr noundef nonnull %465, float noundef %476, float noundef %482)
          to label %483 unwind label %501

483:                                              ; preds = %464
  %484 = getelementptr inbounds i8, ptr %465, i64 44
  %485 = load float, ptr %484, align 4, !tbaa !103
  %486 = getelementptr inbounds i8, ptr %465, i64 48
  %487 = load float, ptr %486, align 8, !tbaa !104
  %488 = getelementptr inbounds i8, ptr %467, i64 100
  %489 = load float, ptr %488, align 4, !tbaa !105
  %490 = fadd float %489, 5.000000e-01
  %491 = fptosi float %490 to i32
  %492 = sitofp i32 %491 to float
  %493 = fadd float %487, %492
  %494 = load i32, ptr %461, align 8, !tbaa !57
  %495 = icmp sgt i32 %494, 0
  br i1 %495, label %.lr.ph464, label %._crit_edge465

.lr.ph464:                                        ; preds = %483
  %496 = getelementptr inbounds i8, ptr %460, i64 256
  %497 = getelementptr inbounds i8, ptr %460, i64 208
  %498 = getelementptr inbounds i8, ptr %465, i64 64
  %499 = getelementptr inbounds i8, ptr %465, i64 68
  %500 = getelementptr inbounds i8, ptr %465, i64 32
  br label %503

._crit_edge465:                                   ; preds = %541, %483
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  br label %547

501:                                              ; preds = %464
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %551

503:                                              ; preds = %.lr.ph464, %541
  %indvars.iv483 = phi i64 [ 0, %.lr.ph464 ], [ %indvars.iv.next484, %541 ]
  %504 = trunc nuw nsw i64 %indvars.iv483 to i32
  %505 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN8ImVectorIiEixEi(ptr noundef nonnull align 8 dereferenceable(16) %496, i32 noundef %504)
  %506 = load i32, ptr %505, align 4, !tbaa !83
  %507 = load ptr, ptr %497, align 8, !tbaa !70
  %508 = getelementptr inbounds %struct.stbtt_packedchar, ptr %507, i64 %indvars.iv483, i32 6
  %509 = load float, ptr %508, align 4, !tbaa !106
  %510 = load float, ptr %498, align 8, !tbaa !108
  %511 = load float, ptr %499, align 4, !tbaa !109
  %512 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %509, float noundef %510, float noundef %511)
  %513 = fcmp une float %509, %512
  br i1 %513, label %514, label %524

514:                                              ; preds = %503
  %515 = load i8, ptr %500, align 8, !tbaa !110, !range !111, !noundef !112
  %516 = trunc nuw i8 %515 to i1
  %517 = fsub float %512, %509
  %518 = fmul float %517, 5.000000e-01
  br i1 %516, label %519, label %521

519:                                              ; preds = %514
  %520 = call noundef float @_ZL7ImFloorf(float noundef %518)
  br label %521

521:                                              ; preds = %514, %519
  %522 = phi float [ %520, %519 ], [ %518, %514 ]
  %523 = fadd float %485, %522
  br label %524

524:                                              ; preds = %521, %503
  %.0292 = phi float [ %523, %521 ], [ %485, %503 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #10
  store float 0.000000e+00, ptr %19, align 4, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #10
  store float 0.000000e+00, ptr %20, align 4, !tbaa !113
  %525 = load ptr, ptr %497, align 8, !tbaa !70
  %526 = load i32, ptr %28, align 8, !tbaa !19
  %527 = load i32, ptr %27, align 4, !tbaa !18
  call void @_ZL19stbtt_GetPackedQuadPK16stbtt_packedchariiiPfS2_P18stbtt_aligned_quadi(ptr noundef %525, i32 noundef %526, i32 noundef %527, i32 noundef %504, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %18, i32 noundef 0)
  %528 = trunc i32 %506 to i16
  %529 = load float, ptr %18, align 4, !tbaa !114
  %530 = fadd float %.0292, %529
  %531 = load float, ptr %451, align 4, !tbaa !116
  %532 = fadd float %493, %531
  %533 = load float, ptr %452, align 4, !tbaa !117
  %534 = fadd float %.0292, %533
  %535 = load float, ptr %453, align 4, !tbaa !118
  %536 = fadd float %493, %535
  %537 = load float, ptr %454, align 4, !tbaa !119
  %538 = load float, ptr %455, align 4, !tbaa !120
  %539 = load float, ptr %456, align 4, !tbaa !121
  %540 = load float, ptr %457, align 4, !tbaa !122
  invoke void @_ZN6ImFont8AddGlyphEtfffffffff(ptr noundef nonnull align 8 dereferenceable(113) %467, i16 noundef zeroext %528, float noundef %530, float noundef %532, float noundef %534, float noundef %536, float noundef %537, float noundef %538, float noundef %539, float noundef %540, float noundef %512)
          to label %541 unwind label %545

541:                                              ; preds = %524
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  %indvars.iv.next484 = add nuw nsw i64 %indvars.iv483, 1
  %542 = load i32, ptr %461, align 8, !tbaa !57
  %543 = sext i32 %542 to i64
  %544 = icmp slt i64 %indvars.iv.next484, %543
  br i1 %544, label %503, label %._crit_edge465, !llvm.loop !123

545:                                              ; preds = %524
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  br label %551

547:                                              ; preds = %459, %._crit_edge465
  %548 = add nuw nsw i32 %.0321466, 1
  %549 = load i32, ptr %4, align 8, !tbaa !25
  %550 = icmp slt i32 %548, %549
  br i1 %550, label %459, label %.preheader, !llvm.loop !124

551:                                              ; preds = %545, %501
  %.pn = phi { ptr, i32 } [ %546, %545 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #10
  br label %557

._crit_edge470:                                   ; preds = %.lr.ph469, %.preheader380, %.preheader
  invoke void @_Z22ImFontAtlasBuildFinishP11ImFontAtlas(ptr noundef nonnull %0)
          to label %556 unwind label %334

.lr.ph469:                                        ; preds = %.preheader, %.lr.ph469
  %.0468 = phi i32 [ %553, %.lr.ph469 ], [ 0, %.preheader ]
  %552 = call noundef nonnull align 8 dereferenceable(272) ptr @_ZN8ImVectorI18ImFontBuildSrcDataEixEi(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %.0468)
  call void @_ZN18ImFontBuildSrcDataD2Ev(ptr noundef nonnull align 8 dereferenceable(272) %552) #10
  %553 = add nuw nsw i32 %.0468, 1
  %554 = load i32, ptr %4, align 8, !tbaa !25
  %555 = icmp slt i32 %553, %554
  br i1 %555, label %.lr.ph469, label %._crit_edge470, !llvm.loop !125

556:                                              ; preds = %._crit_edge470
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #10
  call void @_ZN8ImVectorI16stbtt_packedcharED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  call void @_ZN8ImVectorI10stbrp_rectED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  br label %.critedge377

557:                                              ; preds = %551, %405, %340, %334
  %.pn360 = phi { ptr, i32 } [ %341, %340 ], [ %406, %405 ], [ %.pn, %551 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #10
  br label %558

558:                                              ; preds = %274, %557, %221
  %.pn364.pn = phi { ptr, i32 } [ %222, %221 ], [ %275, %274 ], [ %.pn360, %557 ]
  call void @_ZN8ImVectorI16stbtt_packedcharED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  call void @_ZN8ImVectorI10stbrp_rectED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  br label %559

.critedge377:                                     ; preds = %87, %556
  %.not355399 = phi i1 [ true, %556 ], [ false, %87 ]
  call void @_ZN8ImVectorI18ImFontBuildDstDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN8ImVectorI18ImFontBuildSrcDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  ret i1 %.not355399

559:                                              ; preds = %190, %198, %219, %558, %155, %134, %82, %49
  %.pn371.pn.pn = phi { ptr, i32 } [ %83, %82 ], [ %50, %49 ], [ %191, %190 ], [ %199, %198 ], [ %.pn364.pn, %558 ], [ %220, %219 ], [ %156, %155 ], [ %135, %134 ]
  call void @_ZN8ImVectorI18ImFontBuildDstDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN8ImVectorI18ImFontBuildSrcDataED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  resume { ptr, i32 } %.pn371.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z39ImFontAtlasBuildMultiplyCalcLookupTablePhf(ptr noundef, float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z34ImFontAtlasBuildMultiplyRectAlpha8PKhPhiiiii(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z42ImFontAtlasBuildRegisterDefaultCustomRectsP11ImFontAtlas(ptr noundef) local_unnamed_addr #7

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI18ImFontBuildSrcDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI18ImFontBuildDstDataE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImFont8IsLoadedEv(ptr noundef nonnull align 8 dereferenceable(113)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL27stbtt_GetFontOffsetForIndexPKhi(ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL14stbtt_InitFontP14stbtt_fontinfoPKhi(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImBoolVector6ResizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK12ImBoolVector6GetBitEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL20stbtt_FindGlyphIndexPK14stbtt_fontinfoi(ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImBoolVector6SetBitEib(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIiE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL31UnpackBoolVectorToFlatIndexListPK12ImBoolVectorP8ImVectorIiE(ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImBoolVector5ClearEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI18ImFontBuildDstDataE5clearEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #8 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI10stbrp_rectE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI16stbtt_packedcharE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(28) ptr @_ZN8ImVectorI16stbtt_packedcharEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL25stbtt_ScaleForPixelHeightPK14stbtt_fontinfof(ptr noundef, float noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef float @_ZL31stbtt_ScaleForMappingEmToPixelsPK14stbtt_fontinfof(ptr noundef, float noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL31stbtt_GetGlyphBitmapBoxSubpixelPK14stbtt_fontinfoiffffPiS2_S2_S2_(ptr noundef, i32 noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL15stbtt_PackBeginP18stbtt_pack_contextPhiiiiPv(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z31ImFontAtlasBuildPackCustomRectsP11ImFontAtlasPv(ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16stbrp_pack_rectsP13stbrp_contextP10stbrp_recti(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL17ImUpperPowerOfTwoi(i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL35stbtt_PackFontRangesRenderIntoRectsP18stbtt_pack_contextPK14stbtt_fontinfoP16stbtt_pack_rangeiP10stbrp_rect(ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13stbtt_PackEndP18stbtt_pack_context(ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorI10stbrp_rectE5clearEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL21stbtt_GetFontVMetricsPK14stbtt_fontinfoPiS2_S2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL7ImFloorf(float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z25ImFontAtlasBuildSetupFontP11ImFontAtlasP6ImFontP12ImFontConfigff(ptr noundef, ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL19stbtt_GetPackedQuadPK16stbtt_packedchariiiPfS2_P18stbtt_aligned_quadi(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImFont8AddGlyphEtfffffffff(ptr noundef nonnull align 8 dereferenceable(113), i16 noundef zeroext, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z22ImFontAtlasBuildFinishP11ImFontAtlas(ptr noundef) local_unnamed_addr #7

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { 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 #8 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { noreturn nounwind }
attributes #10 = { 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, !10, i64 96}
!6 = !{!"_ZTS11ImFontAtlas", !7, i64 0, !10, i64 4, !11, i64 8, !10, i64 16, !10, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !12, i64 56, !14, i64 64, !15, i64 80, !16, i64 96, !8, i64 112}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !8, i64 0}
!14 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !11, i64 8}
!15 = !{!"_ZTS8ImVectorI21ImFontAtlasCustomRectE", !10, i64 0, !10, i64 4, !11, i64 8}
!16 = !{!"_ZTS8ImVectorI12ImFontConfigE", !10, i64 0, !10, i64 4, !11, i64 8}
!17 = !{!6, !11, i64 8}
!18 = !{!6, !10, i64 44}
!19 = !{!6, !10, i64 40}
!20 = !{!6, !10, i64 64}
!21 = !{!22, !11, i64 8}
!22 = !{!"_ZTS8ImVectorI18ImFontBuildSrcDataE", !10, i64 0, !10, i64 4, !11, i64 8}
!23 = !{!24, !11, i64 8}
!24 = !{!"_ZTS8ImVectorI18ImFontBuildDstDataE", !10, i64 0, !10, i64 4, !11, i64 8}
!25 = !{!22, !10, i64 0}
!26 = !{!27, !11, i64 128}
!27 = !{!"_ZTS12ImFontConfig", !11, i64 0, !10, i64 8, !7, i64 12, !10, i64 16, !13, i64 20, !10, i64 24, !10, i64 28, !7, i64 32, !12, i64 36, !12, i64 44, !11, i64 56, !13, i64 64, !13, i64 68, !7, i64 72, !10, i64 76, !13, i64 80, !28, i64 84, !8, i64 86, !11, i64 128}
!28 = !{!"short", !8, i64 0}
!29 = !{!30, !11, i64 72}
!30 = !{!"_ZTS6ImFont", !31, i64 0, !13, i64 16, !13, i64 20, !32, i64 24, !33, i64 40, !11, i64 56, !12, i64 64, !11, i64 72, !11, i64 80, !28, i64 88, !28, i64 90, !28, i64 92, !13, i64 96, !13, i64 100, !13, i64 104, !10, i64 108, !7, i64 112}
!31 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !11, i64 8}
!32 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !11, i64 8}
!33 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !11, i64 8}
!34 = !{!35, !10, i64 224}
!35 = !{!"_ZTS18ImFontBuildSrcData", !36, i64 0, !38, i64 160, !11, i64 200, !11, i64 208, !11, i64 216, !10, i64 224, !10, i64 228, !10, i64 232, !39, i64 240, !40, i64 256}
!36 = !{!"_ZTS14stbtt_fontinfo", !11, i64 0, !11, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !37, i64 64, !37, i64 80, !37, i64 96, !37, i64 112, !37, i64 128, !37, i64 144}
!37 = !{!"_ZTS10stbtt__buf", !11, i64 0, !10, i64 8, !10, i64 12}
!38 = !{!"_ZTS16stbtt_pack_range", !13, i64 0, !10, i64 4, !11, i64 8, !10, i64 16, !11, i64 24, !8, i64 32, !8, i64 33}
!39 = !{!"_ZTS12ImBoolVector", !40, i64 0}
!40 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !11, i64 8}
!41 = !{!11, !11, i64 0}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!27, !11, i64 0}
!45 = !{!27, !10, i64 16}
!46 = !{!27, !11, i64 56}
!47 = !{!35, !11, i64 216}
!48 = !{!28, !28, i64 0}
!49 = !{!35, !10, i64 228}
!50 = distinct !{!50, !43}
!51 = !{!52, !10, i64 0}
!52 = !{!"_ZTS18ImFontBuildDstData", !10, i64 0, !10, i64 4, !10, i64 8, !39, i64 16}
!53 = !{!52, !10, i64 4}
!54 = distinct !{!54, !43}
!55 = distinct !{!55, !43}
!56 = distinct !{!56, !43}
!57 = !{!35, !10, i64 232}
!58 = !{!52, !10, i64 8}
!59 = distinct !{!59, !43}
!60 = distinct !{!60, !43}
!61 = !{!24, !10, i64 0}
!62 = !{!35, !10, i64 256}
!63 = distinct !{!63, !43}
!64 = !{!65, !11, i64 8}
!65 = !{!"_ZTS8ImVectorI10stbrp_rectE", !10, i64 0, !10, i64 4, !11, i64 8}
!66 = !{!67, !11, i64 8}
!67 = !{!"_ZTS8ImVectorI16stbtt_packedcharE", !10, i64 0, !10, i64 4, !11, i64 8}
!68 = !{!6, !10, i64 16}
!69 = !{!35, !11, i64 200}
!70 = !{!35, !11, i64 208}
!71 = !{!27, !13, i64 20}
!72 = !{!35, !13, i64 160}
!73 = !{!35, !10, i64 164}
!74 = !{!35, !11, i64 264}
!75 = !{!35, !11, i64 168}
!76 = !{!35, !10, i64 176}
!77 = !{!35, !11, i64 184}
!78 = !{!27, !10, i64 24}
!79 = !{!35, !8, i64 192}
!80 = !{!27, !10, i64 28}
!81 = !{!35, !8, i64 193}
!82 = !{!6, !10, i64 20}
!83 = !{!10, !10, i64 0}
!84 = !{!85, !28, i64 4}
!85 = !{!"_ZTS10stbrp_rect", !10, i64 0, !28, i64 4, !28, i64 6, !28, i64 8, !28, i64 10, !10, i64 12}
!86 = !{!85, !28, i64 6}
!87 = distinct !{!87, !43}
!88 = distinct !{!88, !43}
!89 = !{!90, !11, i64 8}
!90 = !{!"_ZTS18stbtt_pack_context", !11, i64 0, !11, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !11, i64 48, !11, i64 56}
!91 = !{!6, !10, i64 4}
!92 = !{!85, !10, i64 12}
!93 = !{!85, !28, i64 10}
!94 = distinct !{!94, !43}
!95 = distinct !{!95, !43}
!96 = !{!6, !11, i64 24}
!97 = !{!90, !11, i64 48}
!98 = !{!90, !10, i64 20}
!99 = !{!27, !13, i64 80}
!100 = !{!85, !28, i64 8}
!101 = distinct !{!101, !43}
!102 = distinct !{!102, !43}
!103 = !{!27, !13, i64 44}
!104 = !{!27, !13, i64 48}
!105 = !{!30, !13, i64 100}
!106 = !{!107, !13, i64 16}
!107 = !{!"_ZTS16stbtt_packedchar", !28, i64 0, !28, i64 2, !28, i64 4, !28, i64 6, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24}
!108 = !{!27, !13, i64 64}
!109 = !{!27, !13, i64 68}
!110 = !{!27, !7, i64 32}
!111 = !{i8 0, i8 2}
!112 = !{}
!113 = !{!13, !13, i64 0}
!114 = !{!115, !13, i64 0}
!115 = !{!"_ZTS18stbtt_aligned_quad", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28}
!116 = !{!115, !13, i64 4}
!117 = !{!115, !13, i64 16}
!118 = !{!115, !13, i64 20}
!119 = !{!115, !13, i64 8}
!120 = !{!115, !13, i64 12}
!121 = !{!115, !13, i64 24}
!122 = !{!115, !13, i64 28}
!123 = distinct !{!123, !43}
!124 = distinct !{!124, !43}
!125 = distinct !{!125, !43}


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