; LLVM IR from ClementineAccount/Albuquerque :: src/HelloSDL (main)

; 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.stbtt_fontinfo = type { ptr, ptr, i32, 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_vertex = type { i16, i16, i16, i16, i16, i16, i8, i8 }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [7 x i8], align 1
@__PRETTY_FUNCTION__.stbtt_GetGlyphSDF = external hidden unnamed_addr constant [124 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @stbtt_GetGlyphBitmapBoxSubpixel(ptr noundef, i32 noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
define dso_local ptr @stbtt_GetGlyphSDF(ptr noundef %0, float noundef %1, i32 noundef %2, i32 noundef %3, i8 noundef zeroext %4, float noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) #4 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca float, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i8, align 1
  %17 = alloca float, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca float, align 4
  %40 = alloca float, align 4
  %41 = alloca float, align 4
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca float, align 4
  %54 = alloca float, align 4
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca i32, align 4
  %60 = alloca float, align 4
  %61 = alloca float, align 4
  %62 = alloca float, align 4
  %63 = alloca float, align 4
  %64 = alloca float, align 4
  %65 = alloca float, align 4
  %66 = alloca float, align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca float, align 4
  %71 = alloca float, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca float, align 4
  %75 = alloca float, align 4
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca float, align 4
  %79 = alloca i32, align 4
  %80 = alloca float, align 4
  %81 = alloca float, align 4
  %82 = alloca float, align 4
  %83 = alloca float, align 4
  %84 = alloca float, align 4
  %85 = alloca float, align 4
  %86 = alloca [3 x float], align 4
  %87 = alloca float, align 4
  %88 = alloca float, align 4
  %89 = alloca float, align 4
  %90 = alloca float, align 4
  %91 = alloca float, align 4
  %92 = alloca float, align 4
  %93 = alloca float, align 4
  %94 = alloca float, align 4
  %95 = alloca float, align 4
  %96 = alloca float, align 4
  %97 = alloca float, align 4
  %98 = alloca float, align 4
  %99 = alloca float, align 4
  %100 = alloca float, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store float %1, ptr %13, align 4, !tbaa !9
  store i32 %2, ptr %14, align 4, !tbaa !11
  store i32 %3, ptr %15, align 4, !tbaa !11
  store i8 %4, ptr %16, align 1, !tbaa !13
  store float %5, ptr %17, align 4, !tbaa !9
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %101 = load float, ptr %13, align 4, !tbaa !9
  store float %101, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %102 = load float, ptr %13, align 4, !tbaa !9
  store float %102, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %103 = load float, ptr %13, align 4, !tbaa !9
  %104 = fcmp oeq float %103, 0.000000e+00
  br i1 %104, label %105, label %106

105:                                              ; preds = %10
  store ptr null, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1181

106:                                              ; preds = %10
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = load i32, ptr %14, align 4, !tbaa !11
  %109 = load float, ptr %13, align 4, !tbaa !9
  %110 = load float, ptr %13, align 4, !tbaa !9
  call void @stbtt_GetGlyphBitmapBoxSubpixel(ptr noundef %107, i32 noundef %108, float noundef %109, float noundef %110, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27)
  %111 = load i32, ptr %24, align 4, !tbaa !11
  %112 = load i32, ptr %26, align 4, !tbaa !11
  %113 = icmp eq i32 %111, %112
  br i1 %113, label %118, label %114

114:                                              ; preds = %106
  %115 = load i32, ptr %25, align 4, !tbaa !11
  %116 = load i32, ptr %27, align 4, !tbaa !11
  %117 = icmp eq i32 %115, %116
  br i1 %117, label %118, label %119

118:                                              ; preds = %114, %106
  store ptr null, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1181

119:                                              ; preds = %114
  %120 = load i32, ptr %15, align 4, !tbaa !11
  %121 = load i32, ptr %24, align 4, !tbaa !11
  %122 = sub nsw i32 %121, %120
  store i32 %122, ptr %24, align 4, !tbaa !11
  %123 = load i32, ptr %15, align 4, !tbaa !11
  %124 = load i32, ptr %25, align 4, !tbaa !11
  %125 = sub nsw i32 %124, %123
  store i32 %125, ptr %25, align 4, !tbaa !11
  %126 = load i32, ptr %15, align 4, !tbaa !11
  %127 = load i32, ptr %26, align 4, !tbaa !11
  %128 = add nsw i32 %127, %126
  store i32 %128, ptr %26, align 4, !tbaa !11
  %129 = load i32, ptr %15, align 4, !tbaa !11
  %130 = load i32, ptr %27, align 4, !tbaa !11
  %131 = add nsw i32 %130, %129
  store i32 %131, ptr %27, align 4, !tbaa !11
  %132 = load i32, ptr %26, align 4, !tbaa !11
  %133 = load i32, ptr %24, align 4, !tbaa !11
  %134 = sub nsw i32 %132, %133
  store i32 %134, ptr %28, align 4, !tbaa !11
  %135 = load i32, ptr %27, align 4, !tbaa !11
  %136 = load i32, ptr %25, align 4, !tbaa !11
  %137 = sub nsw i32 %135, %136
  store i32 %137, ptr %29, align 4, !tbaa !11
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = icmp ne ptr %138, null
  br i1 %139, label %140, label %143

140:                                              ; preds = %119
  %141 = load i32, ptr %28, align 4, !tbaa !11
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %141, ptr %142, align 4, !tbaa !11
  br label %143

143:                                              ; preds = %140, %119
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  %145 = icmp ne ptr %144, null
  br i1 %145, label %146, label %149

146:                                              ; preds = %143
  %147 = load i32, ptr %29, align 4, !tbaa !11
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  store i32 %147, ptr %148, align 4, !tbaa !11
  br label %149

149:                                              ; preds = %146, %143
  %150 = load ptr, ptr %20, align 8, !tbaa !5
  %151 = icmp ne ptr %150, null
  br i1 %151, label %152, label %155

152:                                              ; preds = %149
  %153 = load i32, ptr %24, align 4, !tbaa !11
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %153, ptr %154, align 4, !tbaa !11
  br label %155

155:                                              ; preds = %152, %149
  %156 = load ptr, ptr %21, align 8, !tbaa !5
  %157 = icmp ne ptr %156, null
  br i1 %157, label %158, label %161

158:                                              ; preds = %155
  %159 = load i32, ptr %25, align 4, !tbaa !11
  %160 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 %159, ptr %160, align 4, !tbaa !11
  br label %161

161:                                              ; preds = %158, %155
  %162 = load float, ptr %23, align 4, !tbaa !9
  %163 = fneg float %162
  store float %163, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  %164 = load ptr, ptr %12, align 8, !tbaa !5
  %165 = load i32, ptr %14, align 4, !tbaa !11
  %166 = call i32 @stbtt_GetGlyphShape(ptr noundef %164, i32 noundef %165, ptr noundef %37)
  store i32 %166, ptr %38, align 4, !tbaa !11
  %167 = load i32, ptr %28, align 4, !tbaa !11
  %168 = load i32, ptr %29, align 4, !tbaa !11
  %169 = mul nsw i32 %167, %168
  %170 = sext i32 %169 to i64
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %171, i32 0, i32 0
  %173 = load ptr, ptr %172, align 8, !tbaa !14
  %174 = call noundef ptr @_ZL15nk_stbtt_mallocmPv(i64 noundef %170, ptr noundef %173)
  store ptr %174, ptr %30, align 8, !tbaa !5
  %175 = load i32, ptr %38, align 4, !tbaa !11
  %176 = sext i32 %175 to i64
  %177 = mul i64 %176, 4
  %178 = load ptr, ptr %12, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %178, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8, !tbaa !14
  %181 = call noundef ptr @_ZL15nk_stbtt_mallocmPv(i64 noundef %177, ptr noundef %180)
  store ptr %181, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !11
  %182 = load i32, ptr %38, align 4, !tbaa !11
  %183 = sub nsw i32 %182, 1
  store i32 %183, ptr %35, align 4, !tbaa !11
  br label %184

184:                                              ; preds = %378, %161
  %185 = load i32, ptr %34, align 4, !tbaa !11
  %186 = load i32, ptr %38, align 4, !tbaa !11
  %187 = icmp slt i32 %185, %186
  br i1 %187, label %188, label %381

188:                                              ; preds = %184
  %189 = load ptr, ptr %37, align 8, !tbaa !5
  %190 = load i32, ptr %34, align 4, !tbaa !11
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds %struct.stbtt_vertex, ptr %189, i64 %191
  %193 = getelementptr inbounds %struct.stbtt_vertex, ptr %192, i32 0, i32 6
  %194 = load i8, ptr %193, align 2, !tbaa !17
  %195 = zext i8 %194 to i32
  %196 = icmp eq i32 %195, 2
  br i1 %196, label %197, label %265

197:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %198 = load ptr, ptr %37, align 8, !tbaa !5
  %199 = load i32, ptr %34, align 4, !tbaa !11
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds %struct.stbtt_vertex, ptr %198, i64 %200
  %202 = getelementptr inbounds %struct.stbtt_vertex, ptr %201, i32 0, i32 0
  %203 = load i16, ptr %202, align 2, !tbaa !20
  %204 = sext i16 %203 to i32
  %205 = sitofp i32 %204 to float
  %206 = load float, ptr %22, align 4, !tbaa !9
  %207 = fmul float %205, %206
  store float %207, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %208 = load ptr, ptr %37, align 8, !tbaa !5
  %209 = load i32, ptr %34, align 4, !tbaa !11
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.stbtt_vertex, ptr %208, i64 %210
  %212 = getelementptr inbounds %struct.stbtt_vertex, ptr %211, i32 0, i32 1
  %213 = load i16, ptr %212, align 2, !tbaa !21
  %214 = sext i16 %213 to i32
  %215 = sitofp i32 %214 to float
  %216 = load float, ptr %23, align 4, !tbaa !9
  %217 = fmul float %215, %216
  store float %217, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %218 = load ptr, ptr %37, align 8, !tbaa !5
  %219 = load i32, ptr %35, align 4, !tbaa !11
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds %struct.stbtt_vertex, ptr %218, i64 %220
  %222 = getelementptr inbounds %struct.stbtt_vertex, ptr %221, i32 0, i32 0
  %223 = load i16, ptr %222, align 2, !tbaa !20
  %224 = sext i16 %223 to i32
  %225 = sitofp i32 %224 to float
  %226 = load float, ptr %22, align 4, !tbaa !9
  %227 = fmul float %225, %226
  store float %227, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %228 = load ptr, ptr %37, align 8, !tbaa !5
  %229 = load i32, ptr %35, align 4, !tbaa !11
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds %struct.stbtt_vertex, ptr %228, i64 %230
  %232 = getelementptr inbounds %struct.stbtt_vertex, ptr %231, i32 0, i32 1
  %233 = load i16, ptr %232, align 2, !tbaa !21
  %234 = sext i16 %233 to i32
  %235 = sitofp i32 %234 to float
  %236 = load float, ptr %23, align 4, !tbaa !9
  %237 = fmul float %235, %236
  store float %237, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %238 = load float, ptr %41, align 4, !tbaa !9
  %239 = load float, ptr %39, align 4, !tbaa !9
  %240 = fsub float %238, %239
  %241 = load float, ptr %41, align 4, !tbaa !9
  %242 = load float, ptr %39, align 4, !tbaa !9
  %243 = fsub float %241, %242
  %244 = load float, ptr %42, align 4, !tbaa !9
  %245 = load float, ptr %40, align 4, !tbaa !9
  %246 = fsub float %244, %245
  %247 = load float, ptr %42, align 4, !tbaa !9
  %248 = load float, ptr %40, align 4, !tbaa !9
  %249 = fsub float %247, %248
  %250 = fmul float %246, %249
  %251 = call float @llvm.fmuladd.f32(float %240, float %243, float %250)
  %252 = call noundef float @_ZSt4sqrtf(float noundef %251)
  store float %252, ptr %43, align 4, !tbaa !9
  %253 = load float, ptr %43, align 4, !tbaa !9
  %254 = fcmp oeq float %253, 0.000000e+00
  br i1 %254, label %255, label %256

255:                                              ; preds = %197
  br label %259

256:                                              ; preds = %197
  %257 = load float, ptr %43, align 4, !tbaa !9
  %258 = fdiv float 1.000000e+00, %257
  br label %259

259:                                              ; preds = %256, %255
  %260 = phi float [ 0.000000e+00, %255 ], [ %258, %256 ]
  %261 = load ptr, ptr %36, align 8, !tbaa !5
  %262 = load i32, ptr %34, align 4, !tbaa !11
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds float, ptr %261, i64 %263
  store float %260, ptr %264, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  br label %377

265:                                              ; preds = %188
  %266 = load ptr, ptr %37, align 8, !tbaa !5
  %267 = load i32, ptr %34, align 4, !tbaa !11
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.stbtt_vertex, ptr %266, i64 %268
  %270 = getelementptr inbounds %struct.stbtt_vertex, ptr %269, i32 0, i32 6
  %271 = load i8, ptr %270, align 2, !tbaa !17
  %272 = zext i8 %271 to i32
  %273 = icmp eq i32 %272, 3
  br i1 %273, label %274, label %371

274:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  %275 = load ptr, ptr %37, align 8, !tbaa !5
  %276 = load i32, ptr %35, align 4, !tbaa !11
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds %struct.stbtt_vertex, ptr %275, i64 %277
  %279 = getelementptr inbounds %struct.stbtt_vertex, ptr %278, i32 0, i32 0
  %280 = load i16, ptr %279, align 2, !tbaa !20
  %281 = sext i16 %280 to i32
  %282 = sitofp i32 %281 to float
  %283 = load float, ptr %22, align 4, !tbaa !9
  %284 = fmul float %282, %283
  store float %284, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %285 = load ptr, ptr %37, align 8, !tbaa !5
  %286 = load i32, ptr %35, align 4, !tbaa !11
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds %struct.stbtt_vertex, ptr %285, i64 %287
  %289 = getelementptr inbounds %struct.stbtt_vertex, ptr %288, i32 0, i32 1
  %290 = load i16, ptr %289, align 2, !tbaa !21
  %291 = sext i16 %290 to i32
  %292 = sitofp i32 %291 to float
  %293 = load float, ptr %23, align 4, !tbaa !9
  %294 = fmul float %292, %293
  store float %294, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %295 = load ptr, ptr %37, align 8, !tbaa !5
  %296 = load i32, ptr %34, align 4, !tbaa !11
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %struct.stbtt_vertex, ptr %295, i64 %297
  %299 = getelementptr inbounds %struct.stbtt_vertex, ptr %298, i32 0, i32 2
  %300 = load i16, ptr %299, align 2, !tbaa !22
  %301 = sext i16 %300 to i32
  %302 = sitofp i32 %301 to float
  %303 = load float, ptr %22, align 4, !tbaa !9
  %304 = fmul float %302, %303
  store float %304, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %305 = load ptr, ptr %37, align 8, !tbaa !5
  %306 = load i32, ptr %34, align 4, !tbaa !11
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %struct.stbtt_vertex, ptr %305, i64 %307
  %309 = getelementptr inbounds %struct.stbtt_vertex, ptr %308, i32 0, i32 3
  %310 = load i16, ptr %309, align 2, !tbaa !23
  %311 = sext i16 %310 to i32
  %312 = sitofp i32 %311 to float
  %313 = load float, ptr %23, align 4, !tbaa !9
  %314 = fmul float %312, %313
  store float %314, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %315 = load ptr, ptr %37, align 8, !tbaa !5
  %316 = load i32, ptr %34, align 4, !tbaa !11
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds %struct.stbtt_vertex, ptr %315, i64 %317
  %319 = getelementptr inbounds %struct.stbtt_vertex, ptr %318, i32 0, i32 0
  %320 = load i16, ptr %319, align 2, !tbaa !20
  %321 = sext i16 %320 to i32
  %322 = sitofp i32 %321 to float
  %323 = load float, ptr %22, align 4, !tbaa !9
  %324 = fmul float %322, %323
  store float %324, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #6
  %325 = load ptr, ptr %37, align 8, !tbaa !5
  %326 = load i32, ptr %34, align 4, !tbaa !11
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.stbtt_vertex, ptr %325, i64 %327
  %329 = getelementptr inbounds %struct.stbtt_vertex, ptr %328, i32 0, i32 1
  %330 = load i16, ptr %329, align 2, !tbaa !21
  %331 = sext i16 %330 to i32
  %332 = sitofp i32 %331 to float
  %333 = load float, ptr %23, align 4, !tbaa !9
  %334 = fmul float %332, %333
  store float %334, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %335 = load float, ptr %48, align 4, !tbaa !9
  %336 = load float, ptr %46, align 4, !tbaa !9
  %337 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %336, float %335)
  %338 = load float, ptr %44, align 4, !tbaa !9
  %339 = fadd float %337, %338
  store float %339, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %340 = load float, ptr %49, align 4, !tbaa !9
  %341 = load float, ptr %47, align 4, !tbaa !9
  %342 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %341, float %340)
  %343 = load float, ptr %45, align 4, !tbaa !9
  %344 = fadd float %342, %343
  store float %344, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %345 = load float, ptr %50, align 4, !tbaa !9
  %346 = load float, ptr %50, align 4, !tbaa !9
  %347 = load float, ptr %51, align 4, !tbaa !9
  %348 = load float, ptr %51, align 4, !tbaa !9
  %349 = fmul float %347, %348
  %350 = call float @llvm.fmuladd.f32(float %345, float %346, float %349)
  store float %350, ptr %52, align 4, !tbaa !9
  %351 = load float, ptr %52, align 4, !tbaa !9
  %352 = fcmp une float %351, 0.000000e+00
  br i1 %352, label %353, label %365

353:                                              ; preds = %274
  %354 = load float, ptr %50, align 4, !tbaa !9
  %355 = load float, ptr %50, align 4, !tbaa !9
  %356 = load float, ptr %51, align 4, !tbaa !9
  %357 = load float, ptr %51, align 4, !tbaa !9
  %358 = fmul float %356, %357
  %359 = call float @llvm.fmuladd.f32(float %354, float %355, float %358)
  %360 = fdiv float 1.000000e+00, %359
  %361 = load ptr, ptr %36, align 8, !tbaa !5
  %362 = load i32, ptr %34, align 4, !tbaa !11
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds float, ptr %361, i64 %363
  store float %360, ptr %364, align 4, !tbaa !9
  br label %370

365:                                              ; preds = %274
  %366 = load ptr, ptr %36, align 8, !tbaa !5
  %367 = load i32, ptr %34, align 4, !tbaa !11
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds float, ptr %366, i64 %368
  store float 0.000000e+00, ptr %369, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %365, %353
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %376

371:                                              ; preds = %265
  %372 = load ptr, ptr %36, align 8, !tbaa !5
  %373 = load i32, ptr %34, align 4, !tbaa !11
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds float, ptr %372, i64 %374
  store float 0.000000e+00, ptr %375, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %371, %370
  br label %377

377:                                              ; preds = %376, %259
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %34, align 4, !tbaa !11
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %34, align 4, !tbaa !11
  store i32 %379, ptr %35, align 4, !tbaa !11
  br label %184, !llvm.loop !24

381:                                              ; preds = %184
  %382 = load i32, ptr %25, align 4, !tbaa !11
  store i32 %382, ptr %33, align 4, !tbaa !11
  br label %383

383:                                              ; preds = %1168, %381
  %384 = load i32, ptr %33, align 4, !tbaa !11
  %385 = load i32, ptr %27, align 4, !tbaa !11
  %386 = icmp slt i32 %384, %385
  br i1 %386, label %387, label %1171

387:                                              ; preds = %383
  %388 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %388, ptr %32, align 4, !tbaa !11
  br label %389

389:                                              ; preds = %1164, %387
  %390 = load i32, ptr %32, align 4, !tbaa !11
  %391 = load i32, ptr %26, align 4, !tbaa !11
  %392 = icmp slt i32 %390, %391
  br i1 %392, label %393, label %1167

393:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  store float 9.999990e+05, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %394 = load i32, ptr %32, align 4, !tbaa !11
  %395 = sitofp i32 %394 to float
  %396 = fadd float %395, 5.000000e-01
  store float %396, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %397 = load i32, ptr %33, align 4, !tbaa !11
  %398 = sitofp i32 %397 to float
  %399 = fadd float %398, 5.000000e-01
  store float %399, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %400 = load float, ptr %55, align 4, !tbaa !9
  %401 = load float, ptr %22, align 4, !tbaa !9
  %402 = fdiv float %400, %401
  store float %402, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %403 = load float, ptr %56, align 4, !tbaa !9
  %404 = load float, ptr %23, align 4, !tbaa !9
  %405 = fdiv float %403, %404
  store float %405, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %406 = load float, ptr %57, align 4, !tbaa !9
  %407 = load float, ptr %58, align 4, !tbaa !9
  %408 = load i32, ptr %38, align 4, !tbaa !11
  %409 = load ptr, ptr %37, align 8, !tbaa !5
  %410 = call noundef i32 @_ZL26stbtt__compute_crossings_xffiP12stbtt_vertex(float noundef %406, float noundef %407, i32 noundef %408, ptr noundef %409)
  store i32 %410, ptr %59, align 4, !tbaa !11
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %411

411:                                              ; preds = %1125, %393
  %412 = load i32, ptr %34, align 4, !tbaa !11
  %413 = load i32, ptr %38, align 4, !tbaa !11
  %414 = icmp slt i32 %412, %413
  br i1 %414, label %415, label %1128

415:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  %416 = load ptr, ptr %37, align 8, !tbaa !5
  %417 = load i32, ptr %34, align 4, !tbaa !11
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.stbtt_vertex, ptr %416, i64 %418
  %420 = getelementptr inbounds %struct.stbtt_vertex, ptr %419, i32 0, i32 0
  %421 = load i16, ptr %420, align 2, !tbaa !20
  %422 = sext i16 %421 to i32
  %423 = sitofp i32 %422 to float
  %424 = load float, ptr %22, align 4, !tbaa !9
  %425 = fmul float %423, %424
  store float %425, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  %426 = load ptr, ptr %37, align 8, !tbaa !5
  %427 = load i32, ptr %34, align 4, !tbaa !11
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.stbtt_vertex, ptr %426, i64 %428
  %430 = getelementptr inbounds %struct.stbtt_vertex, ptr %429, i32 0, i32 1
  %431 = load i16, ptr %430, align 2, !tbaa !21
  %432 = sext i16 %431 to i32
  %433 = sitofp i32 %432 to float
  %434 = load float, ptr %23, align 4, !tbaa !9
  %435 = fmul float %433, %434
  store float %435, ptr %61, align 4, !tbaa !9
  %436 = load ptr, ptr %37, align 8, !tbaa !5
  %437 = load i32, ptr %34, align 4, !tbaa !11
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds %struct.stbtt_vertex, ptr %436, i64 %438
  %440 = getelementptr inbounds %struct.stbtt_vertex, ptr %439, i32 0, i32 6
  %441 = load i8, ptr %440, align 2, !tbaa !17
  %442 = zext i8 %441 to i32
  %443 = icmp eq i32 %442, 2
  br i1 %443, label %444, label %564

444:                                              ; preds = %415
  %445 = load ptr, ptr %36, align 8, !tbaa !5
  %446 = load i32, ptr %34, align 4, !tbaa !11
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds float, ptr %445, i64 %447
  %449 = load float, ptr %448, align 4, !tbaa !9
  %450 = fcmp une float %449, 0.000000e+00
  br i1 %450, label %451, label %564

451:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load i32, ptr %34, align 4, !tbaa !11
  %454 = sub nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.stbtt_vertex, ptr %452, i64 %455
  %457 = getelementptr inbounds %struct.stbtt_vertex, ptr %456, i32 0, i32 0
  %458 = load i16, ptr %457, align 2, !tbaa !20
  %459 = sext i16 %458 to i32
  %460 = sitofp i32 %459 to float
  %461 = load float, ptr %22, align 4, !tbaa !9
  %462 = fmul float %460, %461
  store float %462, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  %463 = load ptr, ptr %37, align 8, !tbaa !5
  %464 = load i32, ptr %34, align 4, !tbaa !11
  %465 = sub nsw i32 %464, 1
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds %struct.stbtt_vertex, ptr %463, i64 %466
  %468 = getelementptr inbounds %struct.stbtt_vertex, ptr %467, i32 0, i32 1
  %469 = load i16, ptr %468, align 2, !tbaa !21
  %470 = sext i16 %469 to i32
  %471 = sitofp i32 %470 to float
  %472 = load float, ptr %23, align 4, !tbaa !9
  %473 = fmul float %471, %472
  store float %473, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  %474 = load float, ptr %60, align 4, !tbaa !9
  %475 = load float, ptr %55, align 4, !tbaa !9
  %476 = fsub float %474, %475
  %477 = load float, ptr %60, align 4, !tbaa !9
  %478 = load float, ptr %55, align 4, !tbaa !9
  %479 = fsub float %477, %478
  %480 = load float, ptr %61, align 4, !tbaa !9
  %481 = load float, ptr %56, align 4, !tbaa !9
  %482 = fsub float %480, %481
  %483 = load float, ptr %61, align 4, !tbaa !9
  %484 = load float, ptr %56, align 4, !tbaa !9
  %485 = fsub float %483, %484
  %486 = fmul float %482, %485
  %487 = call float @llvm.fmuladd.f32(float %476, float %479, float %486)
  store float %487, ptr %65, align 4, !tbaa !9
  %488 = load float, ptr %65, align 4, !tbaa !9
  %489 = load float, ptr %54, align 4, !tbaa !9
  %490 = load float, ptr %54, align 4, !tbaa !9
  %491 = fmul float %489, %490
  %492 = fcmp olt float %488, %491
  br i1 %492, label %493, label %496

493:                                              ; preds = %451
  %494 = load float, ptr %65, align 4, !tbaa !9
  %495 = call noundef float @_ZSt4sqrtf(float noundef %494)
  store float %495, ptr %54, align 4, !tbaa !9
  br label %496

496:                                              ; preds = %493, %451
  %497 = load float, ptr %62, align 4, !tbaa !9
  %498 = load float, ptr %60, align 4, !tbaa !9
  %499 = fsub float %497, %498
  %500 = load float, ptr %61, align 4, !tbaa !9
  %501 = load float, ptr %56, align 4, !tbaa !9
  %502 = fsub float %500, %501
  %503 = load float, ptr %63, align 4, !tbaa !9
  %504 = load float, ptr %61, align 4, !tbaa !9
  %505 = fsub float %503, %504
  %506 = load float, ptr %60, align 4, !tbaa !9
  %507 = load float, ptr %55, align 4, !tbaa !9
  %508 = fsub float %506, %507
  %509 = fmul float %505, %508
  %510 = fneg float %509
  %511 = call float @llvm.fmuladd.f32(float %499, float %502, float %510)
  %512 = call noundef float @_ZSt4fabsf(float noundef %511)
  %513 = load ptr, ptr %36, align 8, !tbaa !5
  %514 = load i32, ptr %34, align 4, !tbaa !11
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds float, ptr %513, i64 %515
  %517 = load float, ptr %516, align 4, !tbaa !9
  %518 = fmul float %512, %517
  store float %518, ptr %64, align 4, !tbaa !9
  %519 = load i32, ptr %34, align 4, !tbaa !11
  %520 = icmp ne i32 %519, 0
  br i1 %520, label %521, label %522

521:                                              ; preds = %496
  br label %524

522:                                              ; preds = %496
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str.1, i32 noundef 16021, ptr noundef @__PRETTY_FUNCTION__.stbtt_GetGlyphSDF) #7
  unreachable

523:                                              ; No predecessors!
  br label %524

524:                                              ; preds = %523, %521
  %525 = load float, ptr %64, align 4, !tbaa !9
  %526 = load float, ptr %54, align 4, !tbaa !9
  %527 = fcmp olt float %525, %526
  br i1 %527, label %528, label %563

528:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %529 = load float, ptr %62, align 4, !tbaa !9
  %530 = load float, ptr %60, align 4, !tbaa !9
  %531 = fsub float %529, %530
  store float %531, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %532 = load float, ptr %63, align 4, !tbaa !9
  %533 = load float, ptr %61, align 4, !tbaa !9
  %534 = fsub float %532, %533
  store float %534, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %535 = load float, ptr %60, align 4, !tbaa !9
  %536 = load float, ptr %55, align 4, !tbaa !9
  %537 = fsub float %535, %536
  store float %537, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %538 = load float, ptr %61, align 4, !tbaa !9
  %539 = load float, ptr %56, align 4, !tbaa !9
  %540 = fsub float %538, %539
  store float %540, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  %541 = load float, ptr %68, align 4, !tbaa !9
  %542 = load float, ptr %66, align 4, !tbaa !9
  %543 = load float, ptr %69, align 4, !tbaa !9
  %544 = load float, ptr %67, align 4, !tbaa !9
  %545 = fmul float %543, %544
  %546 = call float @llvm.fmuladd.f32(float %541, float %542, float %545)
  %547 = fneg float %546
  %548 = load float, ptr %66, align 4, !tbaa !9
  %549 = load float, ptr %66, align 4, !tbaa !9
  %550 = load float, ptr %67, align 4, !tbaa !9
  %551 = load float, ptr %67, align 4, !tbaa !9
  %552 = fmul float %550, %551
  %553 = call float @llvm.fmuladd.f32(float %548, float %549, float %552)
  %554 = fdiv float %547, %553
  store float %554, ptr %70, align 4, !tbaa !9
  %555 = load float, ptr %70, align 4, !tbaa !9
  %556 = fcmp oge float %555, 0.000000e+00
  br i1 %556, label %557, label %562

557:                                              ; preds = %528
  %558 = load float, ptr %70, align 4, !tbaa !9
  %559 = fcmp ole float %558, 1.000000e+00
  br i1 %559, label %560, label %562

560:                                              ; preds = %557
  %561 = load float, ptr %64, align 4, !tbaa !9
  store float %561, ptr %54, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %560, %557, %528
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  br label %563

563:                                              ; preds = %562, %524
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %1124

564:                                              ; preds = %444, %415
  %565 = load ptr, ptr %37, align 8, !tbaa !5
  %566 = load i32, ptr %34, align 4, !tbaa !11
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.stbtt_vertex, ptr %565, i64 %567
  %569 = getelementptr inbounds %struct.stbtt_vertex, ptr %568, i32 0, i32 6
  %570 = load i8, ptr %569, align 2, !tbaa !17
  %571 = zext i8 %570 to i32
  %572 = icmp eq i32 %571, 3
  br i1 %572, label %573, label %1123

573:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  %574 = load ptr, ptr %37, align 8, !tbaa !5
  %575 = load i32, ptr %34, align 4, !tbaa !11
  %576 = sub nsw i32 %575, 1
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.stbtt_vertex, ptr %574, i64 %577
  %579 = getelementptr inbounds %struct.stbtt_vertex, ptr %578, i32 0, i32 0
  %580 = load i16, ptr %579, align 2, !tbaa !20
  %581 = sext i16 %580 to i32
  %582 = sitofp i32 %581 to float
  %583 = load float, ptr %22, align 4, !tbaa !9
  %584 = fmul float %582, %583
  store float %584, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #6
  %585 = load ptr, ptr %37, align 8, !tbaa !5
  %586 = load i32, ptr %34, align 4, !tbaa !11
  %587 = sub nsw i32 %586, 1
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds %struct.stbtt_vertex, ptr %585, i64 %588
  %590 = getelementptr inbounds %struct.stbtt_vertex, ptr %589, i32 0, i32 1
  %591 = load i16, ptr %590, align 2, !tbaa !21
  %592 = sext i16 %591 to i32
  %593 = sitofp i32 %592 to float
  %594 = load float, ptr %23, align 4, !tbaa !9
  %595 = fmul float %593, %594
  store float %595, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #6
  %596 = load ptr, ptr %37, align 8, !tbaa !5
  %597 = load i32, ptr %34, align 4, !tbaa !11
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.stbtt_vertex, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.stbtt_vertex, ptr %599, i32 0, i32 2
  %601 = load i16, ptr %600, align 2, !tbaa !22
  %602 = sext i16 %601 to i32
  %603 = sitofp i32 %602 to float
  %604 = load float, ptr %22, align 4, !tbaa !9
  %605 = fmul float %603, %604
  store float %605, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  %606 = load ptr, ptr %37, align 8, !tbaa !5
  %607 = load i32, ptr %34, align 4, !tbaa !11
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds %struct.stbtt_vertex, ptr %606, i64 %608
  %610 = getelementptr inbounds %struct.stbtt_vertex, ptr %609, i32 0, i32 3
  %611 = load i16, ptr %610, align 2, !tbaa !23
  %612 = sext i16 %611 to i32
  %613 = sitofp i32 %612 to float
  %614 = load float, ptr %23, align 4, !tbaa !9
  %615 = fmul float %613, %614
  store float %615, ptr %74, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #6
  %616 = load float, ptr %60, align 4, !tbaa !9
  %617 = load float, ptr %73, align 4, !tbaa !9
  %618 = fcmp olt float %616, %617
  br i1 %618, label %619, label %621

619:                                              ; preds = %573
  %620 = load float, ptr %60, align 4, !tbaa !9
  br label %623

621:                                              ; preds = %573
  %622 = load float, ptr %73, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %621, %619
  %624 = phi float [ %620, %619 ], [ %622, %621 ]
  %625 = load float, ptr %71, align 4, !tbaa !9
  %626 = fcmp olt float %624, %625
  br i1 %626, label %627, label %637

627:                                              ; preds = %623
  %628 = load float, ptr %60, align 4, !tbaa !9
  %629 = load float, ptr %73, align 4, !tbaa !9
  %630 = fcmp olt float %628, %629
  br i1 %630, label %631, label %633

631:                                              ; preds = %627
  %632 = load float, ptr %60, align 4, !tbaa !9
  br label %635

633:                                              ; preds = %627
  %634 = load float, ptr %73, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %633, %631
  %636 = phi float [ %632, %631 ], [ %634, %633 ]
  br label %639

637:                                              ; preds = %623
  %638 = load float, ptr %71, align 4, !tbaa !9
  br label %639

639:                                              ; preds = %637, %635
  %640 = phi float [ %636, %635 ], [ %638, %637 ]
  store float %640, ptr %75, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #6
  %641 = load float, ptr %61, align 4, !tbaa !9
  %642 = load float, ptr %74, align 4, !tbaa !9
  %643 = fcmp olt float %641, %642
  br i1 %643, label %644, label %646

644:                                              ; preds = %639
  %645 = load float, ptr %61, align 4, !tbaa !9
  br label %648

646:                                              ; preds = %639
  %647 = load float, ptr %74, align 4, !tbaa !9
  br label %648

648:                                              ; preds = %646, %644
  %649 = phi float [ %645, %644 ], [ %647, %646 ]
  %650 = load float, ptr %72, align 4, !tbaa !9
  %651 = fcmp olt float %649, %650
  br i1 %651, label %652, label %662

652:                                              ; preds = %648
  %653 = load float, ptr %61, align 4, !tbaa !9
  %654 = load float, ptr %74, align 4, !tbaa !9
  %655 = fcmp olt float %653, %654
  br i1 %655, label %656, label %658

656:                                              ; preds = %652
  %657 = load float, ptr %61, align 4, !tbaa !9
  br label %660

658:                                              ; preds = %652
  %659 = load float, ptr %74, align 4, !tbaa !9
  br label %660

660:                                              ; preds = %658, %656
  %661 = phi float [ %657, %656 ], [ %659, %658 ]
  br label %664

662:                                              ; preds = %648
  %663 = load float, ptr %72, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %662, %660
  %665 = phi float [ %661, %660 ], [ %663, %662 ]
  store float %665, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  %666 = load float, ptr %60, align 4, !tbaa !9
  %667 = load float, ptr %73, align 4, !tbaa !9
  %668 = fcmp olt float %666, %667
  br i1 %668, label %669, label %671

669:                                              ; preds = %664
  %670 = load float, ptr %73, align 4, !tbaa !9
  br label %673

671:                                              ; preds = %664
  %672 = load float, ptr %60, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %671, %669
  %674 = phi float [ %670, %669 ], [ %672, %671 ]
  %675 = load float, ptr %71, align 4, !tbaa !9
  %676 = fcmp olt float %674, %675
  br i1 %676, label %677, label %679

677:                                              ; preds = %673
  %678 = load float, ptr %71, align 4, !tbaa !9
  br label %689

679:                                              ; preds = %673
  %680 = load float, ptr %60, align 4, !tbaa !9
  %681 = load float, ptr %73, align 4, !tbaa !9
  %682 = fcmp olt float %680, %681
  br i1 %682, label %683, label %685

683:                                              ; preds = %679
  %684 = load float, ptr %73, align 4, !tbaa !9
  br label %687

685:                                              ; preds = %679
  %686 = load float, ptr %60, align 4, !tbaa !9
  br label %687

687:                                              ; preds = %685, %683
  %688 = phi float [ %684, %683 ], [ %686, %685 ]
  br label %689

689:                                              ; preds = %687, %677
  %690 = phi float [ %678, %677 ], [ %688, %687 ]
  store float %690, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  %691 = load float, ptr %61, align 4, !tbaa !9
  %692 = load float, ptr %74, align 4, !tbaa !9
  %693 = fcmp olt float %691, %692
  br i1 %693, label %694, label %696

694:                                              ; preds = %689
  %695 = load float, ptr %74, align 4, !tbaa !9
  br label %698

696:                                              ; preds = %689
  %697 = load float, ptr %61, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %696, %694
  %699 = phi float [ %695, %694 ], [ %697, %696 ]
  %700 = load float, ptr %72, align 4, !tbaa !9
  %701 = fcmp olt float %699, %700
  br i1 %701, label %702, label %704

702:                                              ; preds = %698
  %703 = load float, ptr %72, align 4, !tbaa !9
  br label %714

704:                                              ; preds = %698
  %705 = load float, ptr %61, align 4, !tbaa !9
  %706 = load float, ptr %74, align 4, !tbaa !9
  %707 = fcmp olt float %705, %706
  br i1 %707, label %708, label %710

708:                                              ; preds = %704
  %709 = load float, ptr %74, align 4, !tbaa !9
  br label %712

710:                                              ; preds = %704
  %711 = load float, ptr %61, align 4, !tbaa !9
  br label %712

712:                                              ; preds = %710, %708
  %713 = phi float [ %709, %708 ], [ %711, %710 ]
  br label %714

714:                                              ; preds = %712, %702
  %715 = phi float [ %703, %702 ], [ %713, %712 ]
  store float %715, ptr %78, align 4, !tbaa !9
  %716 = load float, ptr %55, align 4, !tbaa !9
  %717 = load float, ptr %75, align 4, !tbaa !9
  %718 = load float, ptr %54, align 4, !tbaa !9
  %719 = fsub float %717, %718
  %720 = fcmp ogt float %716, %719
  br i1 %720, label %721, label %1122

721:                                              ; preds = %714
  %722 = load float, ptr %55, align 4, !tbaa !9
  %723 = load float, ptr %77, align 4, !tbaa !9
  %724 = load float, ptr %54, align 4, !tbaa !9
  %725 = fadd float %723, %724
  %726 = fcmp olt float %722, %725
  br i1 %726, label %727, label %1122

727:                                              ; preds = %721
  %728 = load float, ptr %56, align 4, !tbaa !9
  %729 = load float, ptr %76, align 4, !tbaa !9
  %730 = load float, ptr %54, align 4, !tbaa !9
  %731 = fsub float %729, %730
  %732 = fcmp ogt float %728, %731
  br i1 %732, label %733, label %1122

733:                                              ; preds = %727
  %734 = load float, ptr %56, align 4, !tbaa !9
  %735 = load float, ptr %78, align 4, !tbaa !9
  %736 = load float, ptr %54, align 4, !tbaa !9
  %737 = fadd float %735, %736
  %738 = fcmp olt float %734, %737
  br i1 %738, label %739, label %1122

739:                                              ; preds = %733
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #6
  store i32 0, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  %740 = load float, ptr %73, align 4, !tbaa !9
  %741 = load float, ptr %60, align 4, !tbaa !9
  %742 = fsub float %740, %741
  store float %742, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  %743 = load float, ptr %74, align 4, !tbaa !9
  %744 = load float, ptr %61, align 4, !tbaa !9
  %745 = fsub float %743, %744
  store float %745, ptr %81, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %746 = load float, ptr %60, align 4, !tbaa !9
  %747 = load float, ptr %73, align 4, !tbaa !9
  %748 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %747, float %746)
  %749 = load float, ptr %71, align 4, !tbaa !9
  %750 = fadd float %748, %749
  store float %750, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %751 = load float, ptr %61, align 4, !tbaa !9
  %752 = load float, ptr %74, align 4, !tbaa !9
  %753 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %752, float %751)
  %754 = load float, ptr %72, align 4, !tbaa !9
  %755 = fadd float %753, %754
  store float %755, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %756 = load float, ptr %60, align 4, !tbaa !9
  %757 = load float, ptr %55, align 4, !tbaa !9
  %758 = fsub float %756, %757
  store float %758, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  %759 = load float, ptr %61, align 4, !tbaa !9
  %760 = load float, ptr %56, align 4, !tbaa !9
  %761 = fsub float %759, %760
  store float %761, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %86) #6
  call void @llvm.memset.p0.i64(ptr align 4 %86, i8 0, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #6
  %762 = load ptr, ptr %36, align 8, !tbaa !5
  %763 = load i32, ptr %34, align 4, !tbaa !11
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds float, ptr %762, i64 %764
  %766 = load float, ptr %765, align 4, !tbaa !9
  store float %766, ptr %92, align 4, !tbaa !9
  %767 = load float, ptr %92, align 4, !tbaa !9
  %768 = fpext float %767 to double
  %769 = fcmp oeq double %768, 0.000000e+00
  br i1 %769, label %770, label %847

770:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #6
  %771 = load float, ptr %80, align 4, !tbaa !9
  %772 = load float, ptr %82, align 4, !tbaa !9
  %773 = load float, ptr %81, align 4, !tbaa !9
  %774 = load float, ptr %83, align 4, !tbaa !9
  %775 = fmul float %773, %774
  %776 = call float @llvm.fmuladd.f32(float %771, float %772, float %775)
  %777 = fmul float 3.000000e+00, %776
  store float %777, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %778 = load float, ptr %80, align 4, !tbaa !9
  %779 = load float, ptr %80, align 4, !tbaa !9
  %780 = load float, ptr %81, align 4, !tbaa !9
  %781 = load float, ptr %81, align 4, !tbaa !9
  %782 = fmul float %780, %781
  %783 = call float @llvm.fmuladd.f32(float %778, float %779, float %782)
  %784 = load float, ptr %84, align 4, !tbaa !9
  %785 = load float, ptr %82, align 4, !tbaa !9
  %786 = load float, ptr %85, align 4, !tbaa !9
  %787 = load float, ptr %83, align 4, !tbaa !9
  %788 = fmul float %786, %787
  %789 = call float @llvm.fmuladd.f32(float %784, float %785, float %788)
  %790 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %783, float %789)
  store float %790, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  %791 = load float, ptr %84, align 4, !tbaa !9
  %792 = load float, ptr %80, align 4, !tbaa !9
  %793 = load float, ptr %85, align 4, !tbaa !9
  %794 = load float, ptr %81, align 4, !tbaa !9
  %795 = fmul float %793, %794
  %796 = call float @llvm.fmuladd.f32(float %791, float %792, float %795)
  store float %796, ptr %95, align 4, !tbaa !9
  %797 = load float, ptr %93, align 4, !tbaa !9
  %798 = fpext float %797 to double
  %799 = fcmp oeq double %798, 0.000000e+00
  br i1 %799, label %800, label %814

800:                                              ; preds = %770
  %801 = load float, ptr %94, align 4, !tbaa !9
  %802 = fpext float %801 to double
  %803 = fcmp une double %802, 0.000000e+00
  br i1 %803, label %804, label %813

804:                                              ; preds = %800
  %805 = load float, ptr %95, align 4, !tbaa !9
  %806 = fneg float %805
  %807 = load float, ptr %94, align 4, !tbaa !9
  %808 = fdiv float %806, %807
  %809 = load i32, ptr %79, align 4, !tbaa !11
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %79, align 4, !tbaa !11
  %811 = sext i32 %809 to i64
  %812 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 %811
  store float %808, ptr %812, align 4, !tbaa !9
  br label %813

813:                                              ; preds = %804, %800
  br label %846

814:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  %815 = load float, ptr %94, align 4, !tbaa !9
  %816 = load float, ptr %94, align 4, !tbaa !9
  %817 = load float, ptr %93, align 4, !tbaa !9
  %818 = fmul float 4.000000e+00, %817
  %819 = load float, ptr %95, align 4, !tbaa !9
  %820 = fmul float %818, %819
  %821 = fneg float %820
  %822 = call float @llvm.fmuladd.f32(float %815, float %816, float %821)
  store float %822, ptr %96, align 4, !tbaa !9
  %823 = load float, ptr %96, align 4, !tbaa !9
  %824 = fcmp olt float %823, 0.000000e+00
  br i1 %824, label %825, label %826

825:                                              ; preds = %814
  store i32 0, ptr %79, align 4, !tbaa !11
  br label %845

826:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  %827 = load float, ptr %96, align 4, !tbaa !9
  %828 = call noundef float @_ZSt4sqrtf(float noundef %827)
  store float %828, ptr %97, align 4, !tbaa !9
  %829 = load float, ptr %94, align 4, !tbaa !9
  %830 = fneg float %829
  %831 = load float, ptr %97, align 4, !tbaa !9
  %832 = fsub float %830, %831
  %833 = load float, ptr %93, align 4, !tbaa !9
  %834 = fmul float 2.000000e+00, %833
  %835 = fdiv float %832, %834
  %836 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  store float %835, ptr %836, align 4, !tbaa !9
  %837 = load float, ptr %94, align 4, !tbaa !9
  %838 = fneg float %837
  %839 = load float, ptr %97, align 4, !tbaa !9
  %840 = fadd float %838, %839
  %841 = load float, ptr %93, align 4, !tbaa !9
  %842 = fmul float 2.000000e+00, %841
  %843 = fdiv float %840, %842
  %844 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  store float %843, ptr %844, align 4, !tbaa !9
  store i32 2, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  br label %845

845:                                              ; preds = %826, %825
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  br label %846

846:                                              ; preds = %845, %813
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  br label %885

847:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #6
  %848 = load float, ptr %80, align 4, !tbaa !9
  %849 = load float, ptr %82, align 4, !tbaa !9
  %850 = load float, ptr %81, align 4, !tbaa !9
  %851 = load float, ptr %83, align 4, !tbaa !9
  %852 = fmul float %850, %851
  %853 = call float @llvm.fmuladd.f32(float %848, float %849, float %852)
  %854 = fmul float 3.000000e+00, %853
  %855 = load float, ptr %92, align 4, !tbaa !9
  %856 = fmul float %854, %855
  store float %856, ptr %98, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #6
  %857 = load float, ptr %80, align 4, !tbaa !9
  %858 = load float, ptr %80, align 4, !tbaa !9
  %859 = load float, ptr %81, align 4, !tbaa !9
  %860 = load float, ptr %81, align 4, !tbaa !9
  %861 = fmul float %859, %860
  %862 = call float @llvm.fmuladd.f32(float %857, float %858, float %861)
  %863 = load float, ptr %84, align 4, !tbaa !9
  %864 = load float, ptr %82, align 4, !tbaa !9
  %865 = load float, ptr %85, align 4, !tbaa !9
  %866 = load float, ptr %83, align 4, !tbaa !9
  %867 = fmul float %865, %866
  %868 = call float @llvm.fmuladd.f32(float %863, float %864, float %867)
  %869 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %862, float %868)
  %870 = load float, ptr %92, align 4, !tbaa !9
  %871 = fmul float %869, %870
  store float %871, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #6
  %872 = load float, ptr %84, align 4, !tbaa !9
  %873 = load float, ptr %80, align 4, !tbaa !9
  %874 = load float, ptr %85, align 4, !tbaa !9
  %875 = load float, ptr %81, align 4, !tbaa !9
  %876 = fmul float %874, %875
  %877 = call float @llvm.fmuladd.f32(float %872, float %873, float %876)
  %878 = load float, ptr %92, align 4, !tbaa !9
  %879 = fmul float %877, %878
  store float %879, ptr %100, align 4, !tbaa !9
  %880 = load float, ptr %98, align 4, !tbaa !9
  %881 = load float, ptr %99, align 4, !tbaa !9
  %882 = load float, ptr %100, align 4, !tbaa !9
  %883 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %884 = call noundef i32 @_ZL18stbtt__solve_cubicfffPf(float noundef %880, float noundef %881, float noundef %882, ptr noundef %883)
  store i32 %884, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #6
  br label %885

885:                                              ; preds = %847, %846
  %886 = load float, ptr %60, align 4, !tbaa !9
  %887 = load float, ptr %55, align 4, !tbaa !9
  %888 = fsub float %886, %887
  %889 = load float, ptr %60, align 4, !tbaa !9
  %890 = load float, ptr %55, align 4, !tbaa !9
  %891 = fsub float %889, %890
  %892 = load float, ptr %61, align 4, !tbaa !9
  %893 = load float, ptr %56, align 4, !tbaa !9
  %894 = fsub float %892, %893
  %895 = load float, ptr %61, align 4, !tbaa !9
  %896 = load float, ptr %56, align 4, !tbaa !9
  %897 = fsub float %895, %896
  %898 = fmul float %894, %897
  %899 = call float @llvm.fmuladd.f32(float %888, float %891, float %898)
  store float %899, ptr %91, align 4, !tbaa !9
  %900 = load float, ptr %91, align 4, !tbaa !9
  %901 = load float, ptr %54, align 4, !tbaa !9
  %902 = load float, ptr %54, align 4, !tbaa !9
  %903 = fmul float %901, %902
  %904 = fcmp olt float %900, %903
  br i1 %904, label %905, label %908

905:                                              ; preds = %885
  %906 = load float, ptr %91, align 4, !tbaa !9
  %907 = call noundef float @_ZSt4sqrtf(float noundef %906)
  store float %907, ptr %54, align 4, !tbaa !9
  br label %908

908:                                              ; preds = %905, %885
  %909 = load i32, ptr %79, align 4, !tbaa !11
  %910 = icmp sge i32 %909, 1
  br i1 %910, label %911, label %979

911:                                              ; preds = %908
  %912 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %913 = load float, ptr %912, align 4, !tbaa !9
  %914 = fcmp oge float %913, 0.000000e+00
  br i1 %914, label %915, label %979

915:                                              ; preds = %911
  %916 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %917 = load float, ptr %916, align 4, !tbaa !9
  %918 = fcmp ole float %917, 1.000000e+00
  br i1 %918, label %919, label %979

919:                                              ; preds = %915
  %920 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %921 = load float, ptr %920, align 4, !tbaa !9
  store float %921, ptr %89, align 4, !tbaa !9
  %922 = load float, ptr %89, align 4, !tbaa !9
  %923 = fsub float 1.000000e+00, %922
  store float %923, ptr %90, align 4, !tbaa !9
  %924 = load float, ptr %90, align 4, !tbaa !9
  %925 = load float, ptr %90, align 4, !tbaa !9
  %926 = fmul float %924, %925
  %927 = load float, ptr %60, align 4, !tbaa !9
  %928 = load float, ptr %89, align 4, !tbaa !9
  %929 = fmul float 2.000000e+00, %928
  %930 = load float, ptr %90, align 4, !tbaa !9
  %931 = fmul float %929, %930
  %932 = load float, ptr %73, align 4, !tbaa !9
  %933 = fmul float %931, %932
  %934 = call float @llvm.fmuladd.f32(float %926, float %927, float %933)
  %935 = load float, ptr %89, align 4, !tbaa !9
  %936 = load float, ptr %89, align 4, !tbaa !9
  %937 = fmul float %935, %936
  %938 = load float, ptr %71, align 4, !tbaa !9
  %939 = call float @llvm.fmuladd.f32(float %937, float %938, float %934)
  store float %939, ptr %87, align 4, !tbaa !9
  %940 = load float, ptr %90, align 4, !tbaa !9
  %941 = load float, ptr %90, align 4, !tbaa !9
  %942 = fmul float %940, %941
  %943 = load float, ptr %61, align 4, !tbaa !9
  %944 = load float, ptr %89, align 4, !tbaa !9
  %945 = fmul float 2.000000e+00, %944
  %946 = load float, ptr %90, align 4, !tbaa !9
  %947 = fmul float %945, %946
  %948 = load float, ptr %74, align 4, !tbaa !9
  %949 = fmul float %947, %948
  %950 = call float @llvm.fmuladd.f32(float %942, float %943, float %949)
  %951 = load float, ptr %89, align 4, !tbaa !9
  %952 = load float, ptr %89, align 4, !tbaa !9
  %953 = fmul float %951, %952
  %954 = load float, ptr %72, align 4, !tbaa !9
  %955 = call float @llvm.fmuladd.f32(float %953, float %954, float %950)
  store float %955, ptr %88, align 4, !tbaa !9
  %956 = load float, ptr %87, align 4, !tbaa !9
  %957 = load float, ptr %55, align 4, !tbaa !9
  %958 = fsub float %956, %957
  %959 = load float, ptr %87, align 4, !tbaa !9
  %960 = load float, ptr %55, align 4, !tbaa !9
  %961 = fsub float %959, %960
  %962 = load float, ptr %88, align 4, !tbaa !9
  %963 = load float, ptr %56, align 4, !tbaa !9
  %964 = fsub float %962, %963
  %965 = load float, ptr %88, align 4, !tbaa !9
  %966 = load float, ptr %56, align 4, !tbaa !9
  %967 = fsub float %965, %966
  %968 = fmul float %964, %967
  %969 = call float @llvm.fmuladd.f32(float %958, float %961, float %968)
  store float %969, ptr %91, align 4, !tbaa !9
  %970 = load float, ptr %91, align 4, !tbaa !9
  %971 = load float, ptr %54, align 4, !tbaa !9
  %972 = load float, ptr %54, align 4, !tbaa !9
  %973 = fmul float %971, %972
  %974 = fcmp olt float %970, %973
  br i1 %974, label %975, label %978

975:                                              ; preds = %919
  %976 = load float, ptr %91, align 4, !tbaa !9
  %977 = call noundef float @_ZSt4sqrtf(float noundef %976)
  store float %977, ptr %54, align 4, !tbaa !9
  br label %978

978:                                              ; preds = %975, %919
  br label %979

979:                                              ; preds = %978, %915, %911, %908
  %980 = load i32, ptr %79, align 4, !tbaa !11
  %981 = icmp sge i32 %980, 2
  br i1 %981, label %982, label %1050

982:                                              ; preds = %979
  %983 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  %984 = load float, ptr %983, align 4, !tbaa !9
  %985 = fcmp oge float %984, 0.000000e+00
  br i1 %985, label %986, label %1050

986:                                              ; preds = %982
  %987 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  %988 = load float, ptr %987, align 4, !tbaa !9
  %989 = fcmp ole float %988, 1.000000e+00
  br i1 %989, label %990, label %1050

990:                                              ; preds = %986
  %991 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  %992 = load float, ptr %991, align 4, !tbaa !9
  store float %992, ptr %89, align 4, !tbaa !9
  %993 = load float, ptr %89, align 4, !tbaa !9
  %994 = fsub float 1.000000e+00, %993
  store float %994, ptr %90, align 4, !tbaa !9
  %995 = load float, ptr %90, align 4, !tbaa !9
  %996 = load float, ptr %90, align 4, !tbaa !9
  %997 = fmul float %995, %996
  %998 = load float, ptr %60, align 4, !tbaa !9
  %999 = load float, ptr %89, align 4, !tbaa !9
  %1000 = fmul float 2.000000e+00, %999
  %1001 = load float, ptr %90, align 4, !tbaa !9
  %1002 = fmul float %1000, %1001
  %1003 = load float, ptr %73, align 4, !tbaa !9
  %1004 = fmul float %1002, %1003
  %1005 = call float @llvm.fmuladd.f32(float %997, float %998, float %1004)
  %1006 = load float, ptr %89, align 4, !tbaa !9
  %1007 = load float, ptr %89, align 4, !tbaa !9
  %1008 = fmul float %1006, %1007
  %1009 = load float, ptr %71, align 4, !tbaa !9
  %1010 = call float @llvm.fmuladd.f32(float %1008, float %1009, float %1005)
  store float %1010, ptr %87, align 4, !tbaa !9
  %1011 = load float, ptr %90, align 4, !tbaa !9
  %1012 = load float, ptr %90, align 4, !tbaa !9
  %1013 = fmul float %1011, %1012
  %1014 = load float, ptr %61, align 4, !tbaa !9
  %1015 = load float, ptr %89, align 4, !tbaa !9
  %1016 = fmul float 2.000000e+00, %1015
  %1017 = load float, ptr %90, align 4, !tbaa !9
  %1018 = fmul float %1016, %1017
  %1019 = load float, ptr %74, align 4, !tbaa !9
  %1020 = fmul float %1018, %1019
  %1021 = call float @llvm.fmuladd.f32(float %1013, float %1014, float %1020)
  %1022 = load float, ptr %89, align 4, !tbaa !9
  %1023 = load float, ptr %89, align 4, !tbaa !9
  %1024 = fmul float %1022, %1023
  %1025 = load float, ptr %72, align 4, !tbaa !9
  %1026 = call float @llvm.fmuladd.f32(float %1024, float %1025, float %1021)
  store float %1026, ptr %88, align 4, !tbaa !9
  %1027 = load float, ptr %87, align 4, !tbaa !9
  %1028 = load float, ptr %55, align 4, !tbaa !9
  %1029 = fsub float %1027, %1028
  %1030 = load float, ptr %87, align 4, !tbaa !9
  %1031 = load float, ptr %55, align 4, !tbaa !9
  %1032 = fsub float %1030, %1031
  %1033 = load float, ptr %88, align 4, !tbaa !9
  %1034 = load float, ptr %56, align 4, !tbaa !9
  %1035 = fsub float %1033, %1034
  %1036 = load float, ptr %88, align 4, !tbaa !9
  %1037 = load float, ptr %56, align 4, !tbaa !9
  %1038 = fsub float %1036, %1037
  %1039 = fmul float %1035, %1038
  %1040 = call float @llvm.fmuladd.f32(float %1029, float %1032, float %1039)
  store float %1040, ptr %91, align 4, !tbaa !9
  %1041 = load float, ptr %91, align 4, !tbaa !9
  %1042 = load float, ptr %54, align 4, !tbaa !9
  %1043 = load float, ptr %54, align 4, !tbaa !9
  %1044 = fmul float %1042, %1043
  %1045 = fcmp olt float %1041, %1044
  br i1 %1045, label %1046, label %1049

1046:                                             ; preds = %990
  %1047 = load float, ptr %91, align 4, !tbaa !9
  %1048 = call noundef float @_ZSt4sqrtf(float noundef %1047)
  store float %1048, ptr %54, align 4, !tbaa !9
  br label %1049

1049:                                             ; preds = %1046, %990
  br label %1050

1050:                                             ; preds = %1049, %986, %982, %979
  %1051 = load i32, ptr %79, align 4, !tbaa !11
  %1052 = icmp sge i32 %1051, 3
  br i1 %1052, label %1053, label %1121

1053:                                             ; preds = %1050
  %1054 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 2
  %1055 = load float, ptr %1054, align 4, !tbaa !9
  %1056 = fcmp oge float %1055, 0.000000e+00
  br i1 %1056, label %1057, label %1121

1057:                                             ; preds = %1053
  %1058 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 2
  %1059 = load float, ptr %1058, align 4, !tbaa !9
  %1060 = fcmp ole float %1059, 1.000000e+00
  br i1 %1060, label %1061, label %1121

1061:                                             ; preds = %1057
  %1062 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 2
  %1063 = load float, ptr %1062, align 4, !tbaa !9
  store float %1063, ptr %89, align 4, !tbaa !9
  %1064 = load float, ptr %89, align 4, !tbaa !9
  %1065 = fsub float 1.000000e+00, %1064
  store float %1065, ptr %90, align 4, !tbaa !9
  %1066 = load float, ptr %90, align 4, !tbaa !9
  %1067 = load float, ptr %90, align 4, !tbaa !9
  %1068 = fmul float %1066, %1067
  %1069 = load float, ptr %60, align 4, !tbaa !9
  %1070 = load float, ptr %89, align 4, !tbaa !9
  %1071 = fmul float 2.000000e+00, %1070
  %1072 = load float, ptr %90, align 4, !tbaa !9
  %1073 = fmul float %1071, %1072
  %1074 = load float, ptr %73, align 4, !tbaa !9
  %1075 = fmul float %1073, %1074
  %1076 = call float @llvm.fmuladd.f32(float %1068, float %1069, float %1075)
  %1077 = load float, ptr %89, align 4, !tbaa !9
  %1078 = load float, ptr %89, align 4, !tbaa !9
  %1079 = fmul float %1077, %1078
  %1080 = load float, ptr %71, align 4, !tbaa !9
  %1081 = call float @llvm.fmuladd.f32(float %1079, float %1080, float %1076)
  store float %1081, ptr %87, align 4, !tbaa !9
  %1082 = load float, ptr %90, align 4, !tbaa !9
  %1083 = load float, ptr %90, align 4, !tbaa !9
  %1084 = fmul float %1082, %1083
  %1085 = load float, ptr %61, align 4, !tbaa !9
  %1086 = load float, ptr %89, align 4, !tbaa !9
  %1087 = fmul float 2.000000e+00, %1086
  %1088 = load float, ptr %90, align 4, !tbaa !9
  %1089 = fmul float %1087, %1088
  %1090 = load float, ptr %74, align 4, !tbaa !9
  %1091 = fmul float %1089, %1090
  %1092 = call float @llvm.fmuladd.f32(float %1084, float %1085, float %1091)
  %1093 = load float, ptr %89, align 4, !tbaa !9
  %1094 = load float, ptr %89, align 4, !tbaa !9
  %1095 = fmul float %1093, %1094
  %1096 = load float, ptr %72, align 4, !tbaa !9
  %1097 = call float @llvm.fmuladd.f32(float %1095, float %1096, float %1092)
  store float %1097, ptr %88, align 4, !tbaa !9
  %1098 = load float, ptr %87, align 4, !tbaa !9
  %1099 = load float, ptr %55, align 4, !tbaa !9
  %1100 = fsub float %1098, %1099
  %1101 = load float, ptr %87, align 4, !tbaa !9
  %1102 = load float, ptr %55, align 4, !tbaa !9
  %1103 = fsub float %1101, %1102
  %1104 = load float, ptr %88, align 4, !tbaa !9
  %1105 = load float, ptr %56, align 4, !tbaa !9
  %1106 = fsub float %1104, %1105
  %1107 = load float, ptr %88, align 4, !tbaa !9
  %1108 = load float, ptr %56, align 4, !tbaa !9
  %1109 = fsub float %1107, %1108
  %1110 = fmul float %1106, %1109
  %1111 = call float @llvm.fmuladd.f32(float %1100, float %1103, float %1110)
  store float %1111, ptr %91, align 4, !tbaa !9
  %1112 = load float, ptr %91, align 4, !tbaa !9
  %1113 = load float, ptr %54, align 4, !tbaa !9
  %1114 = load float, ptr %54, align 4, !tbaa !9
  %1115 = fmul float %1113, %1114
  %1116 = fcmp olt float %1112, %1115
  br i1 %1116, label %1117, label %1120

1117:                                             ; preds = %1061
  %1118 = load float, ptr %91, align 4, !tbaa !9
  %1119 = call noundef float @_ZSt4sqrtf(float noundef %1118)
  store float %1119, ptr %54, align 4, !tbaa !9
  br label %1120

1120:                                             ; preds = %1117, %1061
  br label %1121

1121:                                             ; preds = %1120, %1057, %1053, %1050
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #6
  br label %1122

1122:                                             ; preds = %1121, %733, %727, %721, %714
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  br label %1123

1123:                                             ; preds = %1122, %564
  br label %1124

1124:                                             ; preds = %1123, %563
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  br label %1125

1125:                                             ; preds = %1124
  %1126 = load i32, ptr %34, align 4, !tbaa !11
  %1127 = add nsw i32 %1126, 1
  store i32 %1127, ptr %34, align 4, !tbaa !11
  br label %411, !llvm.loop !26

1128:                                             ; preds = %411
  %1129 = load i32, ptr %59, align 4, !tbaa !11
  %1130 = icmp eq i32 %1129, 0
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1128
  %1132 = load float, ptr %54, align 4, !tbaa !9
  %1133 = fneg float %1132
  store float %1133, ptr %54, align 4, !tbaa !9
  br label %1134

1134:                                             ; preds = %1131, %1128
  %1135 = load i8, ptr %16, align 1, !tbaa !13
  %1136 = zext i8 %1135 to i32
  %1137 = sitofp i32 %1136 to float
  %1138 = load float, ptr %17, align 4, !tbaa !9
  %1139 = load float, ptr %54, align 4, !tbaa !9
  %1140 = call float @llvm.fmuladd.f32(float %1138, float %1139, float %1137)
  store float %1140, ptr %53, align 4, !tbaa !9
  %1141 = load float, ptr %53, align 4, !tbaa !9
  %1142 = fcmp olt float %1141, 0.000000e+00
  br i1 %1142, label %1143, label %1144

1143:                                             ; preds = %1134
  store float 0.000000e+00, ptr %53, align 4, !tbaa !9
  br label %1149

1144:                                             ; preds = %1134
  %1145 = load float, ptr %53, align 4, !tbaa !9
  %1146 = fcmp ogt float %1145, 2.550000e+02
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1144
  store float 2.550000e+02, ptr %53, align 4, !tbaa !9
  br label %1148

1148:                                             ; preds = %1147, %1144
  br label %1149

1149:                                             ; preds = %1148, %1143
  %1150 = load float, ptr %53, align 4, !tbaa !9
  %1151 = fptoui float %1150 to i8
  %1152 = load ptr, ptr %30, align 8, !tbaa !5
  %1153 = load i32, ptr %33, align 4, !tbaa !11
  %1154 = load i32, ptr %25, align 4, !tbaa !11
  %1155 = sub nsw i32 %1153, %1154
  %1156 = load i32, ptr %28, align 4, !tbaa !11
  %1157 = mul nsw i32 %1155, %1156
  %1158 = load i32, ptr %32, align 4, !tbaa !11
  %1159 = load i32, ptr %24, align 4, !tbaa !11
  %1160 = sub nsw i32 %1158, %1159
  %1161 = add nsw i32 %1157, %1160
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds i8, ptr %1152, i64 %1162
  store i8 %1151, ptr %1163, align 1, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %1164

1164:                                             ; preds = %1149
  %1165 = load i32, ptr %32, align 4, !tbaa !11
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %32, align 4, !tbaa !11
  br label %389, !llvm.loop !27

1167:                                             ; preds = %389
  br label %1168

1168:                                             ; preds = %1167
  %1169 = load i32, ptr %33, align 4, !tbaa !11
  %1170 = add nsw i32 %1169, 1
  store i32 %1170, ptr %33, align 4, !tbaa !11
  br label %383, !llvm.loop !28

1171:                                             ; preds = %383
  %1172 = load ptr, ptr %36, align 8, !tbaa !5
  %1173 = load ptr, ptr %12, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %1173, i32 0, i32 0
  %1175 = load ptr, ptr %1174, align 8, !tbaa !14
  call void @_ZL13nk_stbtt_freePvS_(ptr noundef %1172, ptr noundef %1175)
  %1176 = load ptr, ptr %37, align 8, !tbaa !5
  %1177 = load ptr, ptr %12, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %1177, i32 0, i32 0
  %1179 = load ptr, ptr %1178, align 8, !tbaa !14
  call void @_ZL13nk_stbtt_freePvS_(ptr noundef %1176, ptr noundef %1179)
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  %1180 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1180, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1181

1181:                                             ; preds = %1171, %118, %105
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  %1182 = load ptr, ptr %11, align 8
  ret ptr %1182
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL26stbtt__compute_crossings_xffiP12stbtt_vertex(float noundef, float noundef, i32 noundef, ptr noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL18stbtt__solve_cubicfffPf(float noundef, float noundef, float noundef, ptr noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !6, i64 0}
!15 = !{!"_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, !12, i64 60, !16, i64 64, !16, i64 80, !16, i64 96, !16, i64 112, !16, i64 128, !16, i64 144}
!16 = !{!"_ZTS10stbtt__buf", !6, i64 0, !12, i64 8, !12, i64 12}
!17 = !{!18, !7, i64 12}
!18 = !{!"_ZTS12stbtt_vertex", !19, i64 0, !19, i64 2, !19, i64 4, !19, i64 6, !19, i64 8, !19, i64 10, !7, i64 12, !7, i64 13}
!19 = !{!"short", !7, i64 0}
!20 = !{!18, !19, i64 0}
!21 = !{!18, !19, i64 2}
!22 = !{!18, !19, i64 4}
!23 = !{!18, !19, i64 6}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}


; 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.stbtt_vertex = type { i16, i16, i16, i16, i16, i16, i8, i8 }

@.str.1 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [7 x i8], align 1
@__PRETTY_FUNCTION__.stbtt_GetGlyphSDF = external hidden unnamed_addr constant [124 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

; 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 nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @stbtt_GetGlyphBitmapBoxSubpixel(ptr noundef, i32 noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZL15nk_stbtt_mallocmPv(i64 noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @stbtt_GetGlyphSDF(ptr noundef %0, float noundef %1, i32 noundef %2, i32 noundef %3, i8 noundef zeroext %4, float noundef %5, ptr noundef writeonly %6, ptr noundef writeonly %7, ptr noundef writeonly %8, ptr noundef writeonly %9) local_unnamed_addr #4 {
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca [3 x float], align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  %17 = fcmp oeq float %1, 0.000000e+00
  br i1 %17, label %433, label %18

18:                                               ; preds = %10
  call void @stbtt_GetGlyphBitmapBoxSubpixel(ptr noundef %0, i32 noundef %2, float noundef %1, float noundef %1, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %14)
  %19 = load i32, ptr %11, align 4, !tbaa !5
  %20 = load i32, ptr %13, align 4, !tbaa !5
  %21 = icmp eq i32 %19, %20
  br i1 %21, label %433, label %22

22:                                               ; preds = %18
  %23 = load i32, ptr %12, align 4, !tbaa !5
  %24 = load i32, ptr %14, align 4, !tbaa !5
  %25 = icmp eq i32 %23, %24
  br i1 %25, label %433, label %26

26:                                               ; preds = %22
  %27 = sub nsw i32 %19, %3
  store i32 %27, ptr %11, align 4, !tbaa !5
  %28 = sub nsw i32 %23, %3
  store i32 %28, ptr %12, align 4, !tbaa !5
  %29 = add nsw i32 %20, %3
  store i32 %29, ptr %13, align 4, !tbaa !5
  %30 = add nsw i32 %24, %3
  store i32 %30, ptr %14, align 4, !tbaa !5
  %31 = sub nsw i32 %29, %27
  %32 = sub nsw i32 %30, %28
  %.not = icmp eq ptr %6, null
  br i1 %.not, label %34, label %33

33:                                               ; preds = %26
  store i32 %31, ptr %6, align 4, !tbaa !5
  br label %34

34:                                               ; preds = %33, %26
  %.not475 = icmp eq ptr %7, null
  br i1 %.not475, label %36, label %35

35:                                               ; preds = %34
  store i32 %32, ptr %7, align 4, !tbaa !5
  br label %36

36:                                               ; preds = %35, %34
  %.not476 = icmp eq ptr %8, null
  br i1 %.not476, label %38, label %37

37:                                               ; preds = %36
  store i32 %27, ptr %8, align 4, !tbaa !5
  br label %38

38:                                               ; preds = %37, %36
  %.not477 = icmp eq ptr %9, null
  br i1 %.not477, label %40, label %39

39:                                               ; preds = %38
  store i32 %28, ptr %9, align 4, !tbaa !5
  br label %40

40:                                               ; preds = %39, %38
  %41 = fneg float %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  %42 = call i32 @stbtt_GetGlyphShape(ptr noundef %0, i32 noundef %2, ptr noundef nonnull %15)
  %.fr502 = freeze i32 %42
  %43 = mul nsw i32 %32, %31
  %44 = sext i32 %43 to i64
  %45 = load ptr, ptr %0, align 8, !tbaa !9
  %46 = call noundef ptr @_ZL15nk_stbtt_mallocmPv(i64 noundef %44, ptr noundef %45)
  %47 = sext i32 %.fr502 to i64
  %48 = shl nsw i64 %47, 2
  %49 = load ptr, ptr %0, align 8, !tbaa !9
  %50 = call noundef ptr @_ZL15nk_stbtt_mallocmPv(i64 noundef %48, ptr noundef %49)
  %51 = icmp sgt i32 %.fr502, 0
  br i1 %51, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %40
  %52 = add nsw i32 %.fr502, -1
  %wide.trip.count = zext nneg i32 %.fr502 to i64
  %53 = insertelement <2 x float> poison, float %1, i64 0
  %54 = shufflevector <2 x float> %53, <2 x float> poison, <2 x i32> zeroinitializer
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %120
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %120 ]
  %.0438486 = phi i32 [ %52, %.lr.ph.preheader ], [ %122, %120 ]
  %55 = load ptr, ptr %15, align 8, !tbaa !13
  %56 = getelementptr inbounds %struct.stbtt_vertex, ptr %55, i64 %indvars.iv
  %57 = getelementptr inbounds i8, ptr %56, i64 12
  %58 = load i8, ptr %57, align 2, !tbaa !14
  switch i8 %58, label %120 [
    i8 2, label %59
    i8 3, label %86
  ]

59:                                               ; preds = %.lr.ph
  %60 = load i16, ptr %56, align 2, !tbaa !17
  %61 = getelementptr inbounds i8, ptr %56, i64 2
  %62 = load i16, ptr %61, align 2, !tbaa !18
  %63 = sext i32 %.0438486 to i64
  %64 = getelementptr inbounds %struct.stbtt_vertex, ptr %55, i64 %63
  %65 = load i16, ptr %64, align 2, !tbaa !17
  %66 = insertelement <2 x i16> poison, i16 %65, i64 0
  %67 = insertelement <2 x i16> %66, i16 %60, i64 1
  %68 = sitofp <2 x i16> %67 to <2 x float>
  %69 = fmul <2 x float> %54, %68
  %70 = getelementptr inbounds i8, ptr %64, i64 2
  %71 = load i16, ptr %70, align 2, !tbaa !18
  %shift = shufflevector <2 x float> %69, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %72 = fsub <2 x float> %69, %shift
  %73 = extractelement <2 x float> %72, i64 0
  %74 = insertelement <2 x i16> poison, i16 %62, i64 0
  %75 = insertelement <2 x i16> %74, i16 %71, i64 1
  %76 = sitofp <2 x i16> %75 to <2 x float>
  %77 = fmul <2 x float> %54, %76
  %shift516 = shufflevector <2 x float> %77, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %78 = fsub <2 x float> %77, %shift516
  %79 = fmul <2 x float> %78, %78
  %80 = extractelement <2 x float> %79, i64 0
  %81 = call float @llvm.fmuladd.f32(float %73, float %73, float %80)
  %82 = call noundef float @_ZSt4sqrtf(float noundef %81)
  %83 = fcmp oeq float %82, 0.000000e+00
  %84 = fdiv float 1.000000e+00, %82
  %85 = select i1 %83, float 0.000000e+00, float %84
  br label %120

86:                                               ; preds = %.lr.ph
  %87 = sext i32 %.0438486 to i64
  %88 = getelementptr inbounds %struct.stbtt_vertex, ptr %55, i64 %87
  %89 = load i16, ptr %88, align 2, !tbaa !17
  %90 = sitofp i16 %89 to float
  %91 = fmul float %90, %1
  %92 = getelementptr inbounds i8, ptr %88, i64 2
  %93 = load i16, ptr %92, align 2, !tbaa !18
  %94 = sitofp i16 %93 to float
  %95 = getelementptr inbounds i8, ptr %56, i64 4
  %96 = load i16, ptr %95, align 2, !tbaa !19
  %97 = sitofp i16 %96 to float
  %98 = fmul float %97, %1
  %99 = getelementptr inbounds i8, ptr %56, i64 6
  %100 = load i16, ptr %99, align 2, !tbaa !20
  %101 = sitofp i16 %100 to float
  %102 = fmul float %41, %101
  %103 = load i16, ptr %56, align 2, !tbaa !17
  %104 = sitofp i16 %103 to float
  %105 = fmul float %104, %1
  %106 = getelementptr inbounds i8, ptr %56, i64 2
  %107 = load i16, ptr %106, align 2, !tbaa !18
  %108 = sitofp i16 %107 to float
  %109 = fmul float %41, %108
  %110 = call float @llvm.fmuladd.f32(float %98, float -2.000000e+00, float %105)
  %111 = fadd float %91, %110
  %112 = call float @llvm.fmuladd.f32(float %102, float -2.000000e+00, float %109)
  %113 = fmul float %94, %1
  %114 = fsub float %112, %113
  %115 = fmul float %114, %114
  %116 = call float @llvm.fmuladd.f32(float %111, float %111, float %115)
  %117 = fcmp une float %116, 0.000000e+00
  br i1 %117, label %118, label %120

118:                                              ; preds = %86
  %119 = fdiv float 1.000000e+00, %116
  br label %120

120:                                              ; preds = %.lr.ph, %86, %118, %59
  %.sink = phi float [ %119, %118 ], [ %85, %59 ], [ 0.000000e+00, %86 ], [ 0.000000e+00, %.lr.ph ]
  %121 = getelementptr inbounds float, ptr %50, i64 %indvars.iv
  store float %.sink, ptr %121, align 4, !tbaa !21
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %122 = trunc nuw nsw i64 %indvars.iv to i32
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !23

._crit_edge:                                      ; preds = %120, %40
  %123 = load i32, ptr %12, align 4, !tbaa !5
  %124 = load i32, ptr %14, align 4, !tbaa !5
  %125 = icmp slt i32 %123, %124
  br i1 %125, label %.lr.ph500, label %._crit_edge501

.lr.ph500:                                        ; preds = %._crit_edge
  %126 = getelementptr inbounds i8, ptr %16, i64 4
  %127 = getelementptr inbounds i8, ptr %16, i64 8
  %128 = uitofp i8 %4 to float
  %129 = load i32, ptr %11, align 4, !tbaa !5
  %130 = load i32, ptr %13, align 4, !tbaa !5
  %131 = icmp slt i32 %129, %130
  br i1 %131, label %.lr.ph500.split.preheader, label %._crit_edge501

.lr.ph500.split.preheader:                        ; preds = %.lr.ph500
  %wide.trip.count509 = zext nneg i32 %.fr502 to i64
  %132 = insertelement <2 x float> poison, float %1, i64 0
  %133 = insertelement <2 x float> %132, float %41, i64 1
  br label %.lr.ph500.split

.lr.ph500.split:                                  ; preds = %.lr.ph500.split.preheader, %._crit_edge496
  %134 = phi i32 [ %426, %._crit_edge496 ], [ %130, %.lr.ph500.split.preheader ]
  %.0436497 = phi i32 [ %427, %._crit_edge496 ], [ %123, %.lr.ph500.split.preheader ]
  %135 = load i32, ptr %11, align 4, !tbaa !5
  %136 = icmp slt i32 %135, %134
  br i1 %136, label %.lr.ph495, label %._crit_edge496

.lr.ph495:                                        ; preds = %.lr.ph500.split
  %137 = sitofp i32 %.0436497 to float
  %138 = fadd float %137, 5.000000e-01
  %139 = fdiv float %138, %41
  br i1 %51, label %.lr.ph491.us, label %.lr.ph495.split

.lr.ph491.us:                                     ; preds = %.lr.ph495, %148
  %.0435493.us = phi i32 [ %158, %148 ], [ %135, %.lr.ph495 ]
  %140 = sitofp i32 %.0435493.us to float
  %141 = fadd float %140, 5.000000e-01
  %142 = fdiv float %141, %1
  %143 = load ptr, ptr %15, align 8, !tbaa !13
  %144 = call noundef i32 @_ZL26stbtt__compute_crossings_xffiP12stbtt_vertex(float noundef %142, float noundef %139, i32 noundef %.fr502, ptr noundef %143)
  br label %161

145:                                              ; preds = %._crit_edge492.us
  %146 = fcmp ogt float %400, 2.550000e+02
  br i1 %146, label %147, label %148

147:                                              ; preds = %145
  br label %148

148:                                              ; preds = %147, %145, %._crit_edge492.us
  %.0439.us = phi float [ 2.550000e+02, %147 ], [ %400, %145 ], [ 0.000000e+00, %._crit_edge492.us ]
  %149 = fptoui float %.0439.us to i8
  %150 = load i32, ptr %12, align 4, !tbaa !5
  %151 = sub nsw i32 %.0436497, %150
  %152 = mul nsw i32 %151, %31
  %153 = load i32, ptr %11, align 4, !tbaa !5
  %154 = sub i32 %.0435493.us, %153
  %155 = add nsw i32 %154, %152
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i8, ptr %46, i64 %156
  store i8 %149, ptr %157, align 1, !tbaa !25
  %158 = add nsw i32 %.0435493.us, 1
  %159 = load i32, ptr %13, align 4, !tbaa !5
  %160 = icmp slt i32 %158, %159
  br i1 %160, label %.lr.ph491.us, label %._crit_edge496, !llvm.loop !26

161:                                              ; preds = %.lr.ph491.us, %.thread.us
  %indvars.iv506 = phi i64 [ 0, %.lr.ph491.us ], [ %indvars.iv.next507, %.thread.us ]
  %.0440488.us = phi float [ 9.999990e+05, %.lr.ph491.us ], [ %.9.us, %.thread.us ]
  %162 = load ptr, ptr %15, align 8, !tbaa !13
  %163 = getelementptr inbounds %struct.stbtt_vertex, ptr %162, i64 %indvars.iv506
  %164 = load <2 x i16>, ptr %163, align 2, !tbaa !27
  %165 = sitofp <2 x i16> %164 to <2 x float>
  %166 = fmul <2 x float> %133, %165
  %167 = getelementptr inbounds i8, ptr %163, i64 12
  %168 = load i8, ptr %167, align 2, !tbaa !14
  switch i8 %168, label %.thread.us [
    i8 2, label %355
    i8 3, label %169
  ]

169:                                              ; preds = %161
  %170 = getelementptr i8, ptr %163, i64 -14
  %171 = getelementptr inbounds i8, ptr %163, i64 4
  %172 = load <2 x i16>, ptr %170, align 2, !tbaa !27
  %173 = sitofp <2 x i16> %172 to <2 x float>
  %174 = fmul <2 x float> %133, %173
  %175 = shufflevector <2 x float> %174, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  %176 = load <2 x i16>, ptr %171, align 2, !tbaa !27
  %177 = sitofp <2 x i16> %176 to <2 x float>
  %178 = fmul <2 x float> %133, %177
  %179 = fcmp olt <2 x float> %166, %178
  %180 = shufflevector <2 x i1> %179, <2 x i1> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  %181 = shufflevector <2 x float> %178, <2 x float> %166, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
  %182 = shufflevector <4 x float> %181, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %183 = select <4 x i1> %180, <4 x float> %181, <4 x float> %182
  %184 = fcmp olt <4 x float> %183, %175
  %185 = extractelement <4 x i1> %184, i64 3
  %186 = extractelement <4 x float> %183, i64 3
  %187 = extractelement <2 x float> %174, i64 0
  %..us = select i1 %185, float %186, float %187
  %188 = extractelement <4 x i1> %184, i64 2
  %189 = extractelement <4 x float> %183, i64 2
  %190 = extractelement <2 x float> %174, i64 1
  %191 = select i1 %188, float %189, float %190
  %192 = extractelement <4 x i1> %184, i64 1
  %193 = extractelement <4 x float> %183, i64 1
  %194 = select i1 %192, float %187, float %193
  %195 = extractelement <4 x i1> %184, i64 0
  %196 = extractelement <4 x float> %183, i64 0
  %197 = select i1 %195, float %190, float %196
  %198 = fsub float %..us, %.0440488.us
  %199 = fcmp ogt float %141, %198
  %200 = fadd float %.0440488.us, %194
  %201 = fcmp olt float %141, %200
  %or.cond480.us = select i1 %199, i1 %201, i1 false
  %202 = fsub float %191, %.0440488.us
  %203 = fcmp ogt float %138, %202
  %or.cond482.us = select i1 %or.cond480.us, i1 %203, i1 false
  %204 = fadd float %.0440488.us, %197
  %205 = fcmp olt float %138, %204
  %or.cond484.us = select i1 %or.cond482.us, i1 %205, i1 false
  br i1 %or.cond484.us, label %206, label %.thread.us

206:                                              ; preds = %169
  %207 = extractelement <2 x float> %166, i64 0
  %208 = extractelement <2 x float> %178, i64 0
  %209 = fsub <2 x float> %178, %166
  %210 = extractelement <2 x float> %209, i64 0
  %211 = extractelement <2 x float> %166, i64 1
  %212 = extractelement <2 x float> %178, i64 1
  %213 = fsub float %212, %211
  %214 = call float @llvm.fmuladd.f32(float %208, float -2.000000e+00, float %207)
  %215 = fadd float %187, %214
  %216 = call float @llvm.fmuladd.f32(float %212, float -2.000000e+00, float %211)
  %217 = fadd float %190, %216
  %218 = fsub float %207, %141
  %219 = fsub float %211, %138
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %16, i8 0, i64 12, i1 false)
  %220 = getelementptr inbounds float, ptr %50, i64 %indvars.iv506
  %221 = load float, ptr %220, align 4, !tbaa !21
  %222 = fcmp oeq float %221, 0.000000e+00
  %223 = fmul float %213, %217
  %224 = call float @llvm.fmuladd.f32(float %210, float %215, float %223)
  %225 = fmul float %224, 3.000000e+00
  br i1 %222, label %238, label %226

226:                                              ; preds = %206
  %227 = fmul float %225, %221
  %228 = fmul float %213, %213
  %229 = call float @llvm.fmuladd.f32(float %210, float %210, float %228)
  %230 = fmul float %219, %217
  %231 = call float @llvm.fmuladd.f32(float %218, float %215, float %230)
  %232 = call float @llvm.fmuladd.f32(float %229, float 2.000000e+00, float %231)
  %233 = fmul float %232, %221
  %234 = fmul float %219, %213
  %235 = call float @llvm.fmuladd.f32(float %218, float %210, float %234)
  %236 = fmul float %235, %221
  %237 = call noundef i32 @_ZL18stbtt__solve_cubicfffPf(float noundef %227, float noundef %233, float noundef %236, ptr noundef nonnull %16)
  br label %269

238:                                              ; preds = %206
  %239 = fmul float %213, %213
  %240 = call float @llvm.fmuladd.f32(float %210, float %210, float %239)
  %241 = fmul float %219, %217
  %242 = call float @llvm.fmuladd.f32(float %218, float %215, float %241)
  %243 = call float @llvm.fmuladd.f32(float %240, float 2.000000e+00, float %242)
  %244 = fmul float %219, %213
  %245 = call float @llvm.fmuladd.f32(float %218, float %210, float %244)
  %246 = fcmp oeq float %225, 0.000000e+00
  br i1 %246, label %264, label %247

247:                                              ; preds = %238
  %248 = fmul float %225, -4.000000e+00
  %249 = fmul float %245, %248
  %250 = call float @llvm.fmuladd.f32(float %243, float %243, float %249)
  %251 = fcmp olt float %250, 0.000000e+00
  br i1 %251, label %269, label %252

252:                                              ; preds = %247
  %253 = call noundef float @_ZSt4sqrtf(float noundef %250)
  %254 = fneg float %243
  %255 = fmul float %225, 2.000000e+00
  %256 = insertelement <2 x float> poison, float %254, i64 0
  %257 = insertelement <2 x float> %256, float %253, i64 1
  %258 = insertelement <2 x float> poison, float %253, i64 0
  %259 = insertelement <2 x float> %258, float %243, i64 1
  %260 = fsub <2 x float> %257, %259
  %261 = insertelement <2 x float> poison, float %255, i64 0
  %262 = shufflevector <2 x float> %261, <2 x float> poison, <2 x i32> zeroinitializer
  %263 = fdiv <2 x float> %260, %262
  store <2 x float> %263, ptr %16, align 8, !tbaa !21
  br label %269

264:                                              ; preds = %238
  %265 = fcmp une float %243, 0.000000e+00
  br i1 %265, label %266, label %269

266:                                              ; preds = %264
  %267 = fneg float %245
  %268 = fdiv float %267, %243
  store float %268, ptr %16, align 8, !tbaa !21
  br label %269

269:                                              ; preds = %266, %264, %252, %247, %226
  %.2444.us = phi i32 [ %237, %226 ], [ 1, %266 ], [ 0, %264 ], [ 2, %252 ], [ 0, %247 ]
  %270 = fmul float %219, %219
  %271 = call float @llvm.fmuladd.f32(float %218, float %218, float %270)
  %272 = fmul float %.0440488.us, %.0440488.us
  %273 = fcmp olt float %271, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %269
  %275 = call noundef float @_ZSt4sqrtf(float noundef %271)
  br label %276

276:                                              ; preds = %274, %269
  %.4.us = phi float [ %275, %274 ], [ %.0440488.us, %269 ]
  %277 = icmp sgt i32 %.2444.us, 0
  %278 = load float, ptr %16, align 8
  %279 = fcmp oge float %278, 0.000000e+00
  %280 = fcmp ole float %278, 1.000000e+00
  %281 = and i1 %279, %280
  %or.cond7.us = select i1 %277, i1 %281, i1 false
  br i1 %or.cond7.us, label %282, label %302

282:                                              ; preds = %276
  %283 = fsub float 1.000000e+00, %278
  %284 = fmul float %283, %283
  %285 = fmul float %278, 2.000000e+00
  %286 = fmul float %285, %283
  %287 = fmul float %208, %286
  %288 = call float @llvm.fmuladd.f32(float %284, float %207, float %287)
  %289 = fmul float %278, %278
  %290 = call float @llvm.fmuladd.f32(float %289, float %187, float %288)
  %291 = fmul float %212, %286
  %292 = call float @llvm.fmuladd.f32(float %284, float %211, float %291)
  %293 = call float @llvm.fmuladd.f32(float %289, float %190, float %292)
  %294 = fsub float %290, %141
  %295 = fsub float %293, %138
  %296 = fmul float %295, %295
  %297 = call float @llvm.fmuladd.f32(float %294, float %294, float %296)
  %298 = fmul float %.4.us, %.4.us
  %299 = fcmp olt float %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %282
  %301 = call noundef float @_ZSt4sqrtf(float noundef %297)
  br label %302

302:                                              ; preds = %300, %282, %276
  %.5.us = phi float [ %301, %300 ], [ %.4.us, %282 ], [ %.4.us, %276 ]
  %303 = icmp sgt i32 %.2444.us, 1
  %304 = load float, ptr %126, align 4
  %305 = fcmp oge float %304, 0.000000e+00
  %306 = fcmp ole float %304, 1.000000e+00
  %307 = and i1 %305, %306
  %or.cond13.us = select i1 %303, i1 %307, i1 false
  br i1 %or.cond13.us, label %308, label %328

308:                                              ; preds = %302
  %309 = fsub float 1.000000e+00, %304
  %310 = fmul float %309, %309
  %311 = fmul float %304, 2.000000e+00
  %312 = fmul float %311, %309
  %313 = fmul float %208, %312
  %314 = call float @llvm.fmuladd.f32(float %310, float %207, float %313)
  %315 = fmul float %304, %304
  %316 = call float @llvm.fmuladd.f32(float %315, float %187, float %314)
  %317 = fmul float %212, %312
  %318 = call float @llvm.fmuladd.f32(float %310, float %211, float %317)
  %319 = call float @llvm.fmuladd.f32(float %315, float %190, float %318)
  %320 = fsub float %316, %141
  %321 = fsub float %319, %138
  %322 = fmul float %321, %321
  %323 = call float @llvm.fmuladd.f32(float %320, float %320, float %322)
  %324 = fmul float %.5.us, %.5.us
  %325 = fcmp olt float %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %308
  %327 = call noundef float @_ZSt4sqrtf(float noundef %323)
  br label %328

328:                                              ; preds = %326, %308, %302
  %.6.us = phi float [ %327, %326 ], [ %.5.us, %308 ], [ %.5.us, %302 ]
  %329 = icmp sgt i32 %.2444.us, 2
  %330 = load float, ptr %127, align 8
  %331 = fcmp oge float %330, 0.000000e+00
  %332 = fcmp ole float %330, 1.000000e+00
  %333 = and i1 %331, %332
  %or.cond19.us = select i1 %329, i1 %333, i1 false
  br i1 %or.cond19.us, label %334, label %354

334:                                              ; preds = %328
  %335 = fsub float 1.000000e+00, %330
  %336 = fmul float %335, %335
  %337 = fmul float %330, 2.000000e+00
  %338 = fmul float %337, %335
  %339 = fmul float %208, %338
  %340 = call float @llvm.fmuladd.f32(float %336, float %207, float %339)
  %341 = fmul float %330, %330
  %342 = call float @llvm.fmuladd.f32(float %341, float %187, float %340)
  %343 = fmul float %212, %338
  %344 = call float @llvm.fmuladd.f32(float %336, float %211, float %343)
  %345 = call float @llvm.fmuladd.f32(float %341, float %190, float %344)
  %346 = fsub float %342, %141
  %347 = fsub float %345, %138
  %348 = fmul float %347, %347
  %349 = call float @llvm.fmuladd.f32(float %346, float %346, float %348)
  %350 = fmul float %.6.us, %.6.us
  %351 = fcmp olt float %349, %350
  br i1 %351, label %352, label %354

352:                                              ; preds = %334
  %353 = call noundef float @_ZSt4sqrtf(float noundef %349)
  br label %354

354:                                              ; preds = %352, %334, %328
  %.7.us = phi float [ %353, %352 ], [ %.6.us, %334 ], [ %.6.us, %328 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #6
  br label %.thread.us

355:                                              ; preds = %161
  %356 = getelementptr inbounds float, ptr %50, i64 %indvars.iv506
  %357 = load float, ptr %356, align 4, !tbaa !21
  %358 = fcmp une float %357, 0.000000e+00
  br i1 %358, label %359, label %.thread.us

359:                                              ; preds = %355
  %360 = getelementptr i8, ptr %163, i64 -14
  %361 = load i16, ptr %360, align 2, !tbaa !17
  %362 = sitofp i16 %361 to float
  %363 = fmul float %362, %1
  %364 = getelementptr i8, ptr %163, i64 -12
  %365 = load i16, ptr %364, align 2, !tbaa !18
  %366 = sitofp i16 %365 to float
  %367 = fmul float %41, %366
  %368 = extractelement <2 x float> %166, i64 0
  %369 = fsub float %368, %141
  %370 = extractelement <2 x float> %166, i64 1
  %371 = fsub float %370, %138
  %372 = fmul float %371, %371
  %373 = call float @llvm.fmuladd.f32(float %369, float %369, float %372)
  %374 = fmul float %.0440488.us, %.0440488.us
  %375 = fcmp olt float %373, %374
  br i1 %375, label %376, label %378

376:                                              ; preds = %359
  %377 = call noundef float @_ZSt4sqrtf(float noundef %373)
  br label %378

378:                                              ; preds = %376, %359
  %.1441.us = phi float [ %377, %376 ], [ %.0440488.us, %359 ]
  %379 = fsub float %363, %368
  %380 = fsub float %367, %370
  %381 = fneg float %380
  %382 = fmul float %369, %381
  %383 = call float @llvm.fmuladd.f32(float %379, float %371, float %382)
  %384 = call noundef float @_ZSt4fabsf(float noundef %383)
  %385 = load float, ptr %356, align 4, !tbaa !21
  %386 = fmul float %384, %385
  %.not478.us = icmp eq i64 %indvars.iv506, 0
  br i1 %.not478.us, label %.split.us, label %387

387:                                              ; preds = %378
  %388 = fcmp olt float %386, %.1441.us
  br i1 %388, label %389, label %.thread.us

389:                                              ; preds = %387
  %390 = fmul float %371, %380
  %391 = call float @llvm.fmuladd.f32(float %369, float %379, float %390)
  %392 = fneg float %391
  %393 = fmul float %380, %380
  %394 = call float @llvm.fmuladd.f32(float %379, float %379, float %393)
  %395 = fdiv float %392, %394
  %396 = fcmp oge float %395, 0.000000e+00
  %397 = fcmp ole float %395, 1.000000e+00
  %or.cond.us = and i1 %396, %397
  %.2.us = select i1 %or.cond.us, float %386, float %.1441.us
  br label %.thread.us

.thread.us:                                       ; preds = %389, %387, %355, %354, %169, %161
  %.9.us = phi float [ %.2.us, %389 ], [ %.1441.us, %387 ], [ %.7.us, %354 ], [ %.0440488.us, %169 ], [ %.0440488.us, %355 ], [ %.0440488.us, %161 ]
  %indvars.iv.next507 = add nuw nsw i64 %indvars.iv506, 1
  %exitcond510.not = icmp eq i64 %indvars.iv.next507, %wide.trip.count509
  br i1 %exitcond510.not, label %._crit_edge492.us, label %161, !llvm.loop !28

._crit_edge492.us:                                ; preds = %.thread.us
  %398 = icmp eq i32 %144, 0
  %399 = fneg float %.9.us
  %.10.us = select i1 %398, float %399, float %.9.us
  %400 = call float @llvm.fmuladd.f32(float %5, float %.10.us, float %128)
  %401 = fcmp olt float %400, 0.000000e+00
  br i1 %401, label %148, label %145

.lr.ph495.split:                                  ; preds = %.lr.ph495, %413
  %.0435493 = phi i32 [ %423, %413 ], [ %135, %.lr.ph495 ]
  %402 = sitofp i32 %.0435493 to float
  %403 = fadd float %402, 5.000000e-01
  %404 = fdiv float %403, %1
  %405 = load ptr, ptr %15, align 8, !tbaa !13
  %406 = call noundef i32 @_ZL26stbtt__compute_crossings_xffiP12stbtt_vertex(float noundef %404, float noundef %139, i32 noundef %.fr502, ptr noundef %405)
  %407 = icmp eq i32 %406, 0
  %.10 = select i1 %407, float -9.999990e+05, float 9.999990e+05
  %408 = call float @llvm.fmuladd.f32(float %5, float %.10, float %128)
  %409 = fcmp olt float %408, 0.000000e+00
  br i1 %409, label %413, label %410

.split.us:                                        ; preds = %378
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.1, i32 noundef 16021, ptr noundef nonnull @__PRETTY_FUNCTION__.stbtt_GetGlyphSDF) #7
  unreachable

410:                                              ; preds = %.lr.ph495.split
  %411 = fcmp ogt float %408, 2.550000e+02
  br i1 %411, label %412, label %413

412:                                              ; preds = %410
  br label %413

413:                                              ; preds = %.lr.ph495.split, %410, %412
  %.0439 = phi float [ 2.550000e+02, %412 ], [ %408, %410 ], [ 0.000000e+00, %.lr.ph495.split ]
  %414 = fptoui float %.0439 to i8
  %415 = load i32, ptr %12, align 4, !tbaa !5
  %416 = sub nsw i32 %.0436497, %415
  %417 = mul nsw i32 %416, %31
  %418 = load i32, ptr %11, align 4, !tbaa !5
  %419 = sub i32 %.0435493, %418
  %420 = add nsw i32 %419, %417
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds i8, ptr %46, i64 %421
  store i8 %414, ptr %422, align 1, !tbaa !25
  %423 = add nsw i32 %.0435493, 1
  %424 = load i32, ptr %13, align 4, !tbaa !5
  %425 = icmp slt i32 %423, %424
  br i1 %425, label %.lr.ph495.split, label %._crit_edge496, !llvm.loop !26

._crit_edge496:                                   ; preds = %413, %148, %.lr.ph500.split
  %426 = phi i32 [ %134, %.lr.ph500.split ], [ %159, %148 ], [ %424, %413 ]
  %427 = add nsw i32 %.0436497, 1
  %428 = load i32, ptr %14, align 4, !tbaa !5
  %429 = icmp slt i32 %427, %428
  br i1 %429, label %.lr.ph500.split, label %._crit_edge501, !llvm.loop !29

._crit_edge501:                                   ; preds = %._crit_edge496, %.lr.ph500, %._crit_edge
  %430 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZL13nk_stbtt_freePvS_(ptr noundef %50, ptr noundef %430)
  %431 = load ptr, ptr %15, align 8, !tbaa !13
  %432 = load ptr, ptr %0, align 8, !tbaa !9
  call void @_ZL13nk_stbtt_freePvS_(ptr noundef %431, ptr noundef %432)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %433

433:                                              ; preds = %18, %22, %10, %._crit_edge501
  %.0 = phi ptr [ %46, %._crit_edge501 ], [ null, %10 ], [ null, %22 ], [ null, %18 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  ret ptr %.0
}

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL26stbtt__compute_crossings_xffiP12stbtt_vertex(float noundef, float noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL18stbtt__solve_cubicfffPf(float noundef, float noundef, float noundef, ptr noundef) local_unnamed_addr #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS14stbtt_fontinfo", !11, i64 0, !11, i64 8, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !6, i64 60, !12, i64 64, !12, i64 80, !12, i64 96, !12, i64 112, !12, i64 128, !12, i64 144}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"_ZTS10stbtt__buf", !11, i64 0, !6, i64 8, !6, i64 12}
!13 = !{!11, !11, i64 0}
!14 = !{!15, !7, i64 12}
!15 = !{!"_ZTS12stbtt_vertex", !16, i64 0, !16, i64 2, !16, i64 4, !16, i64 6, !16, i64 8, !16, i64 10, !7, i64 12, !7, i64 13}
!16 = !{!"short", !7, i64 0}
!17 = !{!15, !16, i64 0}
!18 = !{!15, !16, i64 2}
!19 = !{!15, !16, i64 4}
!20 = !{!15, !16, i64 6}
!21 = !{!22, !22, i64 0}
!22 = !{!"float", !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !24}
!27 = !{!16, !16, i64 0}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24, !30}
!30 = !{!"llvm.loop.unswitch.partial.disable"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,VectorCombinePass