; LLVM IR from libtcod/libtcod :: src/vendor (stb)

; 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, %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 [75 x i8], align 1
@.str.6 = 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #3

; Function Attrs: nounwind 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) #2

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

; Function Attrs: nounwind 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) #2 {
  %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
  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
  %100 = load float, ptr %13, align 4, !tbaa !9
  store float %100, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %101 = load float, ptr %13, align 4, !tbaa !9
  store float %101, 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
  %102 = load float, ptr %22, align 4, !tbaa !9
  %103 = fcmp oeq float %102, 0.000000e+00
  br i1 %103, label %104, label %106

104:                                              ; preds = %10
  %105 = load float, ptr %23, align 4, !tbaa !9
  store float %105, ptr %22, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %104, %10
  %107 = load float, ptr %23, align 4, !tbaa !9
  %108 = fcmp oeq float %107, 0.000000e+00
  br i1 %108, label %109, label %115

109:                                              ; preds = %106
  %110 = load float, ptr %22, align 4, !tbaa !9
  %111 = fcmp oeq float %110, 0.000000e+00
  br i1 %111, label %112, label %113

112:                                              ; preds = %109
  store ptr null, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1173

113:                                              ; preds = %109
  %114 = load float, ptr %22, align 4, !tbaa !9
  store float %114, ptr %23, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %113, %106
  %116 = load ptr, ptr %12, align 8, !tbaa !5
  %117 = load i32, ptr %14, align 4, !tbaa !11
  %118 = load float, ptr %13, align 4, !tbaa !9
  %119 = load float, ptr %13, align 4, !tbaa !9
  call void @stbtt_GetGlyphBitmapBoxSubpixel(ptr noundef %116, i32 noundef %117, float noundef %118, float noundef %119, float noundef 0.000000e+00, float noundef 0.000000e+00, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27)
  %120 = load i32, ptr %24, align 4, !tbaa !11
  %121 = load i32, ptr %26, align 4, !tbaa !11
  %122 = icmp eq i32 %120, %121
  br i1 %122, label %127, label %123

123:                                              ; preds = %115
  %124 = load i32, ptr %25, align 4, !tbaa !11
  %125 = load i32, ptr %27, align 4, !tbaa !11
  %126 = icmp eq i32 %124, %125
  br i1 %126, label %127, label %128

127:                                              ; preds = %123, %115
  store ptr null, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1173

128:                                              ; preds = %123
  %129 = load i32, ptr %15, align 4, !tbaa !11
  %130 = load i32, ptr %24, align 4, !tbaa !11
  %131 = sub nsw i32 %130, %129
  store i32 %131, ptr %24, align 4, !tbaa !11
  %132 = load i32, ptr %15, align 4, !tbaa !11
  %133 = load i32, ptr %25, align 4, !tbaa !11
  %134 = sub nsw i32 %133, %132
  store i32 %134, ptr %25, align 4, !tbaa !11
  %135 = load i32, ptr %15, align 4, !tbaa !11
  %136 = load i32, ptr %26, align 4, !tbaa !11
  %137 = add nsw i32 %136, %135
  store i32 %137, ptr %26, align 4, !tbaa !11
  %138 = load i32, ptr %15, align 4, !tbaa !11
  %139 = load i32, ptr %27, align 4, !tbaa !11
  %140 = add nsw i32 %139, %138
  store i32 %140, ptr %27, align 4, !tbaa !11
  %141 = load i32, ptr %26, align 4, !tbaa !11
  %142 = load i32, ptr %24, align 4, !tbaa !11
  %143 = sub nsw i32 %141, %142
  store i32 %143, ptr %28, align 4, !tbaa !11
  %144 = load i32, ptr %27, align 4, !tbaa !11
  %145 = load i32, ptr %25, align 4, !tbaa !11
  %146 = sub nsw i32 %144, %145
  store i32 %146, ptr %29, align 4, !tbaa !11
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = icmp ne ptr %147, null
  br i1 %148, label %149, label %152

149:                                              ; preds = %128
  %150 = load i32, ptr %28, align 4, !tbaa !11
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %150, ptr %151, align 4, !tbaa !11
  br label %152

152:                                              ; preds = %149, %128
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = icmp ne ptr %153, null
  br i1 %154, label %155, label %158

155:                                              ; preds = %152
  %156 = load i32, ptr %29, align 4, !tbaa !11
  %157 = load ptr, ptr %19, align 8, !tbaa !5
  store i32 %156, ptr %157, align 4, !tbaa !11
  br label %158

158:                                              ; preds = %155, %152
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = icmp ne ptr %159, null
  br i1 %160, label %161, label %164

161:                                              ; preds = %158
  %162 = load i32, ptr %24, align 4, !tbaa !11
  %163 = load ptr, ptr %20, align 8, !tbaa !5
  store i32 %162, ptr %163, align 4, !tbaa !11
  br label %164

164:                                              ; preds = %161, %158
  %165 = load ptr, ptr %21, align 8, !tbaa !5
  %166 = icmp ne ptr %165, null
  br i1 %166, label %167, label %170

167:                                              ; preds = %164
  %168 = load i32, ptr %25, align 4, !tbaa !11
  %169 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 %168, ptr %169, align 4, !tbaa !11
  br label %170

170:                                              ; preds = %167, %164
  %171 = load float, ptr %23, align 4, !tbaa !9
  %172 = fneg float %171
  store float %172, 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
  %173 = load ptr, ptr %12, align 8, !tbaa !5
  %174 = load i32, ptr %14, align 4, !tbaa !11
  %175 = call i32 @stbtt_GetGlyphShape(ptr noundef %173, i32 noundef %174, ptr noundef %37)
  store i32 %175, ptr %38, align 4, !tbaa !11
  %176 = load ptr, ptr %12, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %176, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8, !tbaa !14
  %179 = load i32, ptr %28, align 4, !tbaa !11
  %180 = load i32, ptr %29, align 4, !tbaa !11
  %181 = mul nsw i32 %179, %180
  %182 = sext i32 %181 to i64
  %183 = call noalias ptr @malloc(i64 noundef %182) #7
  store ptr %183, ptr %30, align 8, !tbaa !5
  %184 = load ptr, ptr %12, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %184, i32 0, i32 0
  %186 = load ptr, ptr %185, align 8, !tbaa !14
  %187 = load i32, ptr %38, align 4, !tbaa !11
  %188 = sext i32 %187 to i64
  %189 = mul i64 %188, 4
  %190 = call noalias ptr @malloc(i64 noundef %189) #7
  store ptr %190, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !11
  %191 = load i32, ptr %38, align 4, !tbaa !11
  %192 = sub nsw i32 %191, 1
  store i32 %192, ptr %35, align 4, !tbaa !11
  br label %193

193:                                              ; preds = %389, %170
  %194 = load i32, ptr %34, align 4, !tbaa !11
  %195 = load i32, ptr %38, align 4, !tbaa !11
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %197, label %392

197:                                              ; preds = %193
  %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 6
  %203 = load i8, ptr %202, align 2, !tbaa !17
  %204 = zext i8 %203 to i32
  %205 = icmp eq i32 %204, 2
  br i1 %205, label %206, label %276

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

266:                                              ; preds = %206
  br label %270

267:                                              ; preds = %206
  %268 = load float, ptr %43, align 4, !tbaa !9
  %269 = fdiv float 1.000000e+00, %268
  br label %270

270:                                              ; preds = %267, %266
  %271 = phi float [ 0.000000e+00, %266 ], [ %269, %267 ]
  %272 = load ptr, ptr %36, align 8, !tbaa !5
  %273 = load i32, ptr %34, align 4, !tbaa !11
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds float, ptr %272, i64 %274
  store float %271, ptr %275, 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 %388

276:                                              ; preds = %197
  %277 = load ptr, ptr %37, align 8, !tbaa !5
  %278 = load i32, ptr %34, align 4, !tbaa !11
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds %struct.stbtt_vertex, ptr %277, i64 %279
  %281 = getelementptr inbounds %struct.stbtt_vertex, ptr %280, i32 0, i32 6
  %282 = load i8, ptr %281, align 2, !tbaa !17
  %283 = zext i8 %282 to i32
  %284 = icmp eq i32 %283, 3
  br i1 %284, label %285, label %382

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

364:                                              ; preds = %285
  %365 = load float, ptr %50, align 4, !tbaa !9
  %366 = load float, ptr %50, align 4, !tbaa !9
  %367 = load float, ptr %51, align 4, !tbaa !9
  %368 = load float, ptr %51, align 4, !tbaa !9
  %369 = fmul float %367, %368
  %370 = call float @llvm.fmuladd.f32(float %365, float %366, float %369)
  %371 = fdiv float 1.000000e+00, %370
  %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 %371, ptr %375, align 4, !tbaa !9
  br label %381

376:                                              ; preds = %285
  %377 = load ptr, ptr %36, align 8, !tbaa !5
  %378 = load i32, ptr %34, align 4, !tbaa !11
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds float, ptr %377, i64 %379
  store float 0.000000e+00, ptr %380, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %376, %364
  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 %387

382:                                              ; preds = %276
  %383 = load ptr, ptr %36, align 8, !tbaa !5
  %384 = load i32, ptr %34, align 4, !tbaa !11
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds float, ptr %383, i64 %385
  store float 0.000000e+00, ptr %386, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %382, %381
  br label %388

388:                                              ; preds = %387, %270
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr %34, align 4, !tbaa !11
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %34, align 4, !tbaa !11
  store i32 %390, ptr %35, align 4, !tbaa !11
  br label %193, !llvm.loop !24

392:                                              ; preds = %193
  %393 = load i32, ptr %25, align 4, !tbaa !11
  store i32 %393, ptr %33, align 4, !tbaa !11
  br label %394

394:                                              ; preds = %1160, %392
  %395 = load i32, ptr %33, align 4, !tbaa !11
  %396 = load i32, ptr %27, align 4, !tbaa !11
  %397 = icmp slt i32 %395, %396
  br i1 %397, label %398, label %1163

398:                                              ; preds = %394
  %399 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %399, ptr %32, align 4, !tbaa !11
  br label %400

400:                                              ; preds = %1156, %398
  %401 = load i32, ptr %32, align 4, !tbaa !11
  %402 = load i32, ptr %26, align 4, !tbaa !11
  %403 = icmp slt i32 %401, %402
  br i1 %403, label %404, label %1159

404:                                              ; preds = %400
  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
  %405 = load i32, ptr %32, align 4, !tbaa !11
  %406 = sitofp i32 %405 to float
  %407 = fadd float %406, 5.000000e-01
  store float %407, ptr %55, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %408 = load i32, ptr %33, align 4, !tbaa !11
  %409 = sitofp i32 %408 to float
  %410 = fadd float %409, 5.000000e-01
  store float %410, ptr %56, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %411 = load float, ptr %55, align 4, !tbaa !9
  %412 = load float, ptr %22, align 4, !tbaa !9
  %413 = fdiv float %411, %412
  store float %413, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  %414 = load float, ptr %56, align 4, !tbaa !9
  %415 = load float, ptr %23, align 4, !tbaa !9
  %416 = fdiv float %414, %415
  store float %416, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  %417 = load float, ptr %57, align 4, !tbaa !9
  %418 = load float, ptr %58, align 4, !tbaa !9
  %419 = load i32, ptr %38, align 4, !tbaa !11
  %420 = load ptr, ptr %37, align 8, !tbaa !5
  %421 = call i32 @stbtt__compute_crossings_x(float noundef %417, float noundef %418, i32 noundef %419, ptr noundef %420)
  store i32 %421, ptr %59, align 4, !tbaa !11
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %422

422:                                              ; preds = %1117, %404
  %423 = load i32, ptr %34, align 4, !tbaa !11
  %424 = load i32, ptr %38, align 4, !tbaa !11
  %425 = icmp slt i32 %423, %424
  br i1 %425, label %426, label %1120

426:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  %427 = load ptr, ptr %37, align 8, !tbaa !5
  %428 = load i32, ptr %34, align 4, !tbaa !11
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.stbtt_vertex, ptr %427, i64 %429
  %431 = getelementptr inbounds %struct.stbtt_vertex, ptr %430, i32 0, i32 0
  %432 = load i16, ptr %431, align 2, !tbaa !20
  %433 = sext i16 %432 to i32
  %434 = sitofp i32 %433 to float
  %435 = load float, ptr %22, align 4, !tbaa !9
  %436 = fmul float %434, %435
  store float %436, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  %437 = load ptr, ptr %37, align 8, !tbaa !5
  %438 = load i32, ptr %34, align 4, !tbaa !11
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.stbtt_vertex, ptr %437, i64 %439
  %441 = getelementptr inbounds %struct.stbtt_vertex, ptr %440, i32 0, i32 1
  %442 = load i16, ptr %441, align 2, !tbaa !21
  %443 = sext i16 %442 to i32
  %444 = sitofp i32 %443 to float
  %445 = load float, ptr %23, align 4, !tbaa !9
  %446 = fmul float %444, %445
  store float %446, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  %447 = load float, ptr %60, align 4, !tbaa !9
  %448 = load float, ptr %55, align 4, !tbaa !9
  %449 = fsub float %447, %448
  %450 = load float, ptr %60, align 4, !tbaa !9
  %451 = load float, ptr %55, align 4, !tbaa !9
  %452 = fsub float %450, %451
  %453 = load float, ptr %61, align 4, !tbaa !9
  %454 = load float, ptr %56, align 4, !tbaa !9
  %455 = fsub float %453, %454
  %456 = load float, ptr %61, align 4, !tbaa !9
  %457 = load float, ptr %56, align 4, !tbaa !9
  %458 = fsub float %456, %457
  %459 = fmul float %455, %458
  %460 = call float @llvm.fmuladd.f32(float %449, float %452, float %459)
  store float %460, ptr %62, align 4, !tbaa !9
  %461 = load float, ptr %62, align 4, !tbaa !9
  %462 = load float, ptr %54, align 4, !tbaa !9
  %463 = load float, ptr %54, align 4, !tbaa !9
  %464 = fmul float %462, %463
  %465 = fcmp olt float %461, %464
  br i1 %465, label %466, label %471

466:                                              ; preds = %426
  %467 = load float, ptr %62, align 4, !tbaa !9
  %468 = fpext float %467 to double
  %469 = call double @sqrt(double noundef %468) #6
  %470 = fptrunc double %469 to float
  store float %470, ptr %54, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %466, %426
  %472 = load ptr, ptr %37, align 8, !tbaa !5
  %473 = load i32, ptr %34, align 4, !tbaa !11
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.stbtt_vertex, ptr %472, i64 %474
  %476 = getelementptr inbounds %struct.stbtt_vertex, ptr %475, i32 0, i32 6
  %477 = load i8, ptr %476, align 2, !tbaa !17
  %478 = zext i8 %477 to i32
  %479 = icmp eq i32 %478, 2
  br i1 %479, label %480, label %571

480:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  %481 = load ptr, ptr %37, align 8, !tbaa !5
  %482 = load i32, ptr %34, align 4, !tbaa !11
  %483 = sub nsw i32 %482, 1
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.stbtt_vertex, ptr %481, i64 %484
  %486 = getelementptr inbounds %struct.stbtt_vertex, ptr %485, i32 0, i32 0
  %487 = load i16, ptr %486, align 2, !tbaa !20
  %488 = sext i16 %487 to i32
  %489 = sitofp i32 %488 to float
  %490 = load float, ptr %22, align 4, !tbaa !9
  %491 = fmul float %489, %490
  store float %491, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  %492 = load ptr, ptr %37, align 8, !tbaa !5
  %493 = load i32, ptr %34, align 4, !tbaa !11
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds %struct.stbtt_vertex, ptr %492, i64 %495
  %497 = getelementptr inbounds %struct.stbtt_vertex, ptr %496, i32 0, i32 1
  %498 = load i16, ptr %497, align 2, !tbaa !21
  %499 = sext i16 %498 to i32
  %500 = sitofp i32 %499 to float
  %501 = load float, ptr %23, align 4, !tbaa !9
  %502 = fmul float %500, %501
  store float %502, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  %503 = load float, ptr %63, align 4, !tbaa !9
  %504 = load float, ptr %60, align 4, !tbaa !9
  %505 = fsub float %503, %504
  %506 = load float, ptr %61, align 4, !tbaa !9
  %507 = load float, ptr %56, align 4, !tbaa !9
  %508 = fsub float %506, %507
  %509 = load float, ptr %64, align 4, !tbaa !9
  %510 = load float, ptr %61, align 4, !tbaa !9
  %511 = fsub float %509, %510
  %512 = load float, ptr %60, align 4, !tbaa !9
  %513 = load float, ptr %55, align 4, !tbaa !9
  %514 = fsub float %512, %513
  %515 = fmul float %511, %514
  %516 = fneg float %515
  %517 = call float @llvm.fmuladd.f32(float %505, float %508, float %516)
  %518 = fpext float %517 to double
  %519 = call double @llvm.fabs.f64(double %518)
  %520 = fptrunc double %519 to float
  %521 = load ptr, ptr %36, align 8, !tbaa !5
  %522 = load i32, ptr %34, align 4, !tbaa !11
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds float, ptr %521, i64 %523
  %525 = load float, ptr %524, align 4, !tbaa !9
  %526 = fmul float %520, %525
  store float %526, ptr %65, align 4, !tbaa !9
  %527 = load i32, ptr %34, align 4, !tbaa !11
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %529, label %530

529:                                              ; preds = %480
  br label %531

530:                                              ; preds = %480
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.1, i32 noundef 4487, ptr noundef @__PRETTY_FUNCTION__.stbtt_GetGlyphSDF) #8
  unreachable

531:                                              ; preds = %529
  %532 = load float, ptr %65, align 4, !tbaa !9
  %533 = load float, ptr %54, align 4, !tbaa !9
  %534 = fcmp olt float %532, %533
  br i1 %534, label %535, label %570

535:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %536 = load float, ptr %63, align 4, !tbaa !9
  %537 = load float, ptr %60, align 4, !tbaa !9
  %538 = fsub float %536, %537
  store float %538, ptr %66, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %539 = load float, ptr %64, align 4, !tbaa !9
  %540 = load float, ptr %61, align 4, !tbaa !9
  %541 = fsub float %539, %540
  store float %541, ptr %67, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  %542 = load float, ptr %60, align 4, !tbaa !9
  %543 = load float, ptr %55, align 4, !tbaa !9
  %544 = fsub float %542, %543
  store float %544, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %545 = load float, ptr %61, align 4, !tbaa !9
  %546 = load float, ptr %56, align 4, !tbaa !9
  %547 = fsub float %545, %546
  store float %547, ptr %69, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  %548 = load float, ptr %68, align 4, !tbaa !9
  %549 = load float, ptr %66, align 4, !tbaa !9
  %550 = load float, ptr %69, 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 = fneg float %553
  %555 = load float, ptr %66, align 4, !tbaa !9
  %556 = load float, ptr %66, align 4, !tbaa !9
  %557 = load float, ptr %67, align 4, !tbaa !9
  %558 = load float, ptr %67, align 4, !tbaa !9
  %559 = fmul float %557, %558
  %560 = call float @llvm.fmuladd.f32(float %555, float %556, float %559)
  %561 = fdiv float %554, %560
  store float %561, ptr %70, align 4, !tbaa !9
  %562 = load float, ptr %70, align 4, !tbaa !9
  %563 = fcmp oge float %562, 0.000000e+00
  br i1 %563, label %564, label %569

564:                                              ; preds = %535
  %565 = load float, ptr %70, align 4, !tbaa !9
  %566 = fcmp ole float %565, 1.000000e+00
  br i1 %566, label %567, label %569

567:                                              ; preds = %564
  %568 = load float, ptr %65, align 4, !tbaa !9
  store float %568, ptr %54, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %567, %564, %535
  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 %570

570:                                              ; preds = %569, %531
  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
  br label %1116

571:                                              ; preds = %471
  %572 = load ptr, ptr %37, align 8, !tbaa !5
  %573 = load i32, ptr %34, align 4, !tbaa !11
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.stbtt_vertex, ptr %572, i64 %574
  %576 = getelementptr inbounds %struct.stbtt_vertex, ptr %575, i32 0, i32 6
  %577 = load i8, ptr %576, align 2, !tbaa !17
  %578 = zext i8 %577 to i32
  %579 = icmp eq i32 %578, 3
  br i1 %579, label %580, label %1115

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

626:                                              ; preds = %580
  %627 = load float, ptr %60, align 4, !tbaa !9
  br label %630

628:                                              ; preds = %580
  %629 = load float, ptr %73, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %628, %626
  %631 = phi float [ %627, %626 ], [ %629, %628 ]
  %632 = load float, ptr %71, align 4, !tbaa !9
  %633 = fcmp olt float %631, %632
  br i1 %633, label %634, label %644

634:                                              ; preds = %630
  %635 = load float, ptr %60, align 4, !tbaa !9
  %636 = load float, ptr %73, align 4, !tbaa !9
  %637 = fcmp olt float %635, %636
  br i1 %637, label %638, label %640

638:                                              ; preds = %634
  %639 = load float, ptr %60, align 4, !tbaa !9
  br label %642

640:                                              ; preds = %634
  %641 = load float, ptr %73, align 4, !tbaa !9
  br label %642

642:                                              ; preds = %640, %638
  %643 = phi float [ %639, %638 ], [ %641, %640 ]
  br label %646

644:                                              ; preds = %630
  %645 = load float, ptr %71, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %644, %642
  %647 = phi float [ %643, %642 ], [ %645, %644 ]
  store float %647, ptr %75, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #6
  %648 = load float, ptr %61, align 4, !tbaa !9
  %649 = load float, ptr %74, align 4, !tbaa !9
  %650 = fcmp olt float %648, %649
  br i1 %650, label %651, label %653

651:                                              ; preds = %646
  %652 = load float, ptr %61, align 4, !tbaa !9
  br label %655

653:                                              ; preds = %646
  %654 = load float, ptr %74, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %653, %651
  %656 = phi float [ %652, %651 ], [ %654, %653 ]
  %657 = load float, ptr %72, align 4, !tbaa !9
  %658 = fcmp olt float %656, %657
  br i1 %658, label %659, label %669

659:                                              ; preds = %655
  %660 = load float, ptr %61, align 4, !tbaa !9
  %661 = load float, ptr %74, align 4, !tbaa !9
  %662 = fcmp olt float %660, %661
  br i1 %662, label %663, label %665

663:                                              ; preds = %659
  %664 = load float, ptr %61, align 4, !tbaa !9
  br label %667

665:                                              ; preds = %659
  %666 = load float, ptr %74, align 4, !tbaa !9
  br label %667

667:                                              ; preds = %665, %663
  %668 = phi float [ %664, %663 ], [ %666, %665 ]
  br label %671

669:                                              ; preds = %655
  %670 = load float, ptr %72, align 4, !tbaa !9
  br label %671

671:                                              ; preds = %669, %667
  %672 = phi float [ %668, %667 ], [ %670, %669 ]
  store float %672, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  %673 = load float, ptr %60, align 4, !tbaa !9
  %674 = load float, ptr %73, align 4, !tbaa !9
  %675 = fcmp olt float %673, %674
  br i1 %675, label %676, label %678

676:                                              ; preds = %671
  %677 = load float, ptr %73, align 4, !tbaa !9
  br label %680

678:                                              ; preds = %671
  %679 = load float, ptr %60, align 4, !tbaa !9
  br label %680

680:                                              ; preds = %678, %676
  %681 = phi float [ %677, %676 ], [ %679, %678 ]
  %682 = load float, ptr %71, align 4, !tbaa !9
  %683 = fcmp olt float %681, %682
  br i1 %683, label %684, label %686

684:                                              ; preds = %680
  %685 = load float, ptr %71, align 4, !tbaa !9
  br label %696

686:                                              ; preds = %680
  %687 = load float, ptr %60, align 4, !tbaa !9
  %688 = load float, ptr %73, align 4, !tbaa !9
  %689 = fcmp olt float %687, %688
  br i1 %689, label %690, label %692

690:                                              ; preds = %686
  %691 = load float, ptr %73, align 4, !tbaa !9
  br label %694

692:                                              ; preds = %686
  %693 = load float, ptr %60, align 4, !tbaa !9
  br label %694

694:                                              ; preds = %692, %690
  %695 = phi float [ %691, %690 ], [ %693, %692 ]
  br label %696

696:                                              ; preds = %694, %684
  %697 = phi float [ %685, %684 ], [ %695, %694 ]
  store float %697, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  %698 = load float, ptr %61, align 4, !tbaa !9
  %699 = load float, ptr %74, align 4, !tbaa !9
  %700 = fcmp olt float %698, %699
  br i1 %700, label %701, label %703

701:                                              ; preds = %696
  %702 = load float, ptr %74, align 4, !tbaa !9
  br label %705

703:                                              ; preds = %696
  %704 = load float, ptr %61, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %703, %701
  %706 = phi float [ %702, %701 ], [ %704, %703 ]
  %707 = load float, ptr %72, align 4, !tbaa !9
  %708 = fcmp olt float %706, %707
  br i1 %708, label %709, label %711

709:                                              ; preds = %705
  %710 = load float, ptr %72, align 4, !tbaa !9
  br label %721

711:                                              ; preds = %705
  %712 = load float, ptr %61, align 4, !tbaa !9
  %713 = load float, ptr %74, align 4, !tbaa !9
  %714 = fcmp olt float %712, %713
  br i1 %714, label %715, label %717

715:                                              ; preds = %711
  %716 = load float, ptr %74, align 4, !tbaa !9
  br label %719

717:                                              ; preds = %711
  %718 = load float, ptr %61, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %717, %715
  %720 = phi float [ %716, %715 ], [ %718, %717 ]
  br label %721

721:                                              ; preds = %719, %709
  %722 = phi float [ %710, %709 ], [ %720, %719 ]
  store float %722, ptr %78, align 4, !tbaa !9
  %723 = load float, ptr %55, align 4, !tbaa !9
  %724 = load float, ptr %75, align 4, !tbaa !9
  %725 = load float, ptr %54, align 4, !tbaa !9
  %726 = fsub float %724, %725
  %727 = fcmp ogt float %723, %726
  br i1 %727, label %728, label %1114

728:                                              ; preds = %721
  %729 = load float, ptr %55, align 4, !tbaa !9
  %730 = load float, ptr %77, align 4, !tbaa !9
  %731 = load float, ptr %54, align 4, !tbaa !9
  %732 = fadd float %730, %731
  %733 = fcmp olt float %729, %732
  br i1 %733, label %734, label %1114

734:                                              ; preds = %728
  %735 = load float, ptr %56, align 4, !tbaa !9
  %736 = load float, ptr %76, align 4, !tbaa !9
  %737 = load float, ptr %54, align 4, !tbaa !9
  %738 = fsub float %736, %737
  %739 = fcmp ogt float %735, %738
  br i1 %739, label %740, label %1114

740:                                              ; preds = %734
  %741 = load float, ptr %56, align 4, !tbaa !9
  %742 = load float, ptr %78, align 4, !tbaa !9
  %743 = load float, ptr %54, align 4, !tbaa !9
  %744 = fadd float %742, %743
  %745 = fcmp olt float %741, %744
  br i1 %745, label %746, label %1114

746:                                              ; preds = %740
  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
  %747 = load float, ptr %73, align 4, !tbaa !9
  %748 = load float, ptr %60, align 4, !tbaa !9
  %749 = fsub float %747, %748
  store float %749, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  %750 = load float, ptr %74, align 4, !tbaa !9
  %751 = load float, ptr %61, align 4, !tbaa !9
  %752 = fsub float %750, %751
  store float %752, ptr %81, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %753 = load float, ptr %60, align 4, !tbaa !9
  %754 = load float, ptr %73, align 4, !tbaa !9
  %755 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %754, float %753)
  %756 = load float, ptr %71, align 4, !tbaa !9
  %757 = fadd float %755, %756
  store float %757, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %758 = load float, ptr %61, align 4, !tbaa !9
  %759 = load float, ptr %74, align 4, !tbaa !9
  %760 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %759, float %758)
  %761 = load float, ptr %72, align 4, !tbaa !9
  %762 = fadd float %760, %761
  store float %762, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %763 = load float, ptr %60, align 4, !tbaa !9
  %764 = load float, ptr %55, align 4, !tbaa !9
  %765 = fsub float %763, %764
  store float %765, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  %766 = load float, ptr %61, align 4, !tbaa !9
  %767 = load float, ptr %56, align 4, !tbaa !9
  %768 = fsub float %766, %767
  store float %768, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %86) #6
  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
  %769 = load ptr, ptr %36, align 8, !tbaa !5
  %770 = load i32, ptr %34, align 4, !tbaa !11
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds float, ptr %769, i64 %771
  %773 = load float, ptr %772, align 4, !tbaa !9
  store float %773, ptr %91, align 4, !tbaa !9
  %774 = load float, ptr %91, align 4, !tbaa !9
  %775 = fpext float %774 to double
  %776 = fcmp oeq double %775, 0.000000e+00
  br i1 %776, label %777, label %856

777:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #6
  %778 = load float, ptr %80, align 4, !tbaa !9
  %779 = load float, ptr %82, align 4, !tbaa !9
  %780 = load float, ptr %81, align 4, !tbaa !9
  %781 = load float, ptr %83, align 4, !tbaa !9
  %782 = fmul float %780, %781
  %783 = call float @llvm.fmuladd.f32(float %778, float %779, float %782)
  %784 = fmul float 3.000000e+00, %783
  store float %784, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #6
  %785 = load float, ptr %80, align 4, !tbaa !9
  %786 = load float, ptr %80, align 4, !tbaa !9
  %787 = load float, ptr %81, align 4, !tbaa !9
  %788 = load float, ptr %81, align 4, !tbaa !9
  %789 = fmul float %787, %788
  %790 = call float @llvm.fmuladd.f32(float %785, float %786, float %789)
  %791 = load float, ptr %84, align 4, !tbaa !9
  %792 = load float, ptr %82, align 4, !tbaa !9
  %793 = load float, ptr %85, align 4, !tbaa !9
  %794 = load float, ptr %83, align 4, !tbaa !9
  %795 = fmul float %793, %794
  %796 = call float @llvm.fmuladd.f32(float %791, float %792, float %795)
  %797 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %790, float %796)
  store float %797, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %798 = load float, ptr %84, align 4, !tbaa !9
  %799 = load float, ptr %80, align 4, !tbaa !9
  %800 = load float, ptr %85, align 4, !tbaa !9
  %801 = load float, ptr %81, align 4, !tbaa !9
  %802 = fmul float %800, %801
  %803 = call float @llvm.fmuladd.f32(float %798, float %799, float %802)
  store float %803, ptr %94, align 4, !tbaa !9
  %804 = load float, ptr %92, align 4, !tbaa !9
  %805 = fpext float %804 to double
  %806 = fcmp oeq double %805, 0.000000e+00
  br i1 %806, label %807, label %821

807:                                              ; preds = %777
  %808 = load float, ptr %93, align 4, !tbaa !9
  %809 = fpext float %808 to double
  %810 = fcmp une double %809, 0.000000e+00
  br i1 %810, label %811, label %820

811:                                              ; preds = %807
  %812 = load float, ptr %94, align 4, !tbaa !9
  %813 = fneg float %812
  %814 = load float, ptr %93, align 4, !tbaa !9
  %815 = fdiv float %813, %814
  %816 = load i32, ptr %79, align 4, !tbaa !11
  %817 = add nsw i32 %816, 1
  store i32 %817, ptr %79, align 4, !tbaa !11
  %818 = sext i32 %816 to i64
  %819 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 %818
  store float %815, ptr %819, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %811, %807
  br label %855

821:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  %822 = load float, ptr %93, align 4, !tbaa !9
  %823 = load float, ptr %93, align 4, !tbaa !9
  %824 = load float, ptr %92, align 4, !tbaa !9
  %825 = fmul float 4.000000e+00, %824
  %826 = load float, ptr %94, align 4, !tbaa !9
  %827 = fmul float %825, %826
  %828 = fneg float %827
  %829 = call float @llvm.fmuladd.f32(float %822, float %823, float %828)
  store float %829, ptr %95, align 4, !tbaa !9
  %830 = load float, ptr %95, align 4, !tbaa !9
  %831 = fcmp olt float %830, 0.000000e+00
  br i1 %831, label %832, label %833

832:                                              ; preds = %821
  store i32 0, ptr %79, align 4, !tbaa !11
  br label %854

833:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  %834 = load float, ptr %95, align 4, !tbaa !9
  %835 = fpext float %834 to double
  %836 = call double @sqrt(double noundef %835) #6
  %837 = fptrunc double %836 to float
  store float %837, ptr %96, align 4, !tbaa !9
  %838 = load float, ptr %93, align 4, !tbaa !9
  %839 = fneg float %838
  %840 = load float, ptr %96, align 4, !tbaa !9
  %841 = fsub float %839, %840
  %842 = load float, ptr %92, align 4, !tbaa !9
  %843 = fmul float 2.000000e+00, %842
  %844 = fdiv float %841, %843
  %845 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  store float %844, ptr %845, align 4, !tbaa !9
  %846 = load float, ptr %93, align 4, !tbaa !9
  %847 = fneg float %846
  %848 = load float, ptr %96, align 4, !tbaa !9
  %849 = fadd float %847, %848
  %850 = load float, ptr %92, align 4, !tbaa !9
  %851 = fmul float 2.000000e+00, %850
  %852 = fdiv float %849, %851
  %853 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  store float %852, ptr %853, align 4, !tbaa !9
  store i32 2, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  br label %854

854:                                              ; preds = %833, %832
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  br label %855

855:                                              ; preds = %854, %820
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #6
  br label %894

856:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #6
  %857 = load float, ptr %80, align 4, !tbaa !9
  %858 = load float, ptr %82, align 4, !tbaa !9
  %859 = load float, ptr %81, align 4, !tbaa !9
  %860 = load float, ptr %83, align 4, !tbaa !9
  %861 = fmul float %859, %860
  %862 = call float @llvm.fmuladd.f32(float %857, float %858, float %861)
  %863 = fmul float 3.000000e+00, %862
  %864 = load float, ptr %91, align 4, !tbaa !9
  %865 = fmul float %863, %864
  store float %865, ptr %97, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #6
  %866 = load float, ptr %80, align 4, !tbaa !9
  %867 = load float, ptr %80, align 4, !tbaa !9
  %868 = load float, ptr %81, align 4, !tbaa !9
  %869 = load float, ptr %81, align 4, !tbaa !9
  %870 = fmul float %868, %869
  %871 = call float @llvm.fmuladd.f32(float %866, float %867, float %870)
  %872 = load float, ptr %84, align 4, !tbaa !9
  %873 = load float, ptr %82, align 4, !tbaa !9
  %874 = load float, ptr %85, align 4, !tbaa !9
  %875 = load float, ptr %83, align 4, !tbaa !9
  %876 = fmul float %874, %875
  %877 = call float @llvm.fmuladd.f32(float %872, float %873, float %876)
  %878 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %871, float %877)
  %879 = load float, ptr %91, align 4, !tbaa !9
  %880 = fmul float %878, %879
  store float %880, ptr %98, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #6
  %881 = load float, ptr %84, align 4, !tbaa !9
  %882 = load float, ptr %80, align 4, !tbaa !9
  %883 = load float, ptr %85, align 4, !tbaa !9
  %884 = load float, ptr %81, align 4, !tbaa !9
  %885 = fmul float %883, %884
  %886 = call float @llvm.fmuladd.f32(float %881, float %882, float %885)
  %887 = load float, ptr %91, align 4, !tbaa !9
  %888 = fmul float %886, %887
  store float %888, ptr %99, align 4, !tbaa !9
  %889 = load float, ptr %97, align 4, !tbaa !9
  %890 = load float, ptr %98, align 4, !tbaa !9
  %891 = load float, ptr %99, align 4, !tbaa !9
  %892 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %893 = call i32 @stbtt__solve_cubic(float noundef %889, float noundef %890, float noundef %891, ptr noundef %892)
  store i32 %893, ptr %79, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #6
  br label %894

894:                                              ; preds = %856, %855
  %895 = load i32, ptr %79, align 4, !tbaa !11
  %896 = icmp sge i32 %895, 1
  br i1 %896, label %897, label %967

897:                                              ; preds = %894
  %898 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %899 = load float, ptr %898, align 4, !tbaa !9
  %900 = fcmp oge float %899, 0.000000e+00
  br i1 %900, label %901, label %967

901:                                              ; preds = %897
  %902 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %903 = load float, ptr %902, align 4, !tbaa !9
  %904 = fcmp ole float %903, 1.000000e+00
  br i1 %904, label %905, label %967

905:                                              ; preds = %901
  %906 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 0
  %907 = load float, ptr %906, align 4, !tbaa !9
  store float %907, ptr %89, align 4, !tbaa !9
  %908 = load float, ptr %89, align 4, !tbaa !9
  %909 = fsub float 1.000000e+00, %908
  store float %909, ptr %90, align 4, !tbaa !9
  %910 = load float, ptr %90, align 4, !tbaa !9
  %911 = load float, ptr %90, align 4, !tbaa !9
  %912 = fmul float %910, %911
  %913 = load float, ptr %60, align 4, !tbaa !9
  %914 = load float, ptr %89, align 4, !tbaa !9
  %915 = fmul float 2.000000e+00, %914
  %916 = load float, ptr %90, align 4, !tbaa !9
  %917 = fmul float %915, %916
  %918 = load float, ptr %73, align 4, !tbaa !9
  %919 = fmul float %917, %918
  %920 = call float @llvm.fmuladd.f32(float %912, float %913, float %919)
  %921 = load float, ptr %89, align 4, !tbaa !9
  %922 = load float, ptr %89, align 4, !tbaa !9
  %923 = fmul float %921, %922
  %924 = load float, ptr %71, align 4, !tbaa !9
  %925 = call float @llvm.fmuladd.f32(float %923, float %924, float %920)
  store float %925, ptr %87, align 4, !tbaa !9
  %926 = load float, ptr %90, align 4, !tbaa !9
  %927 = load float, ptr %90, align 4, !tbaa !9
  %928 = fmul float %926, %927
  %929 = load float, ptr %61, align 4, !tbaa !9
  %930 = load float, ptr %89, align 4, !tbaa !9
  %931 = fmul float 2.000000e+00, %930
  %932 = load float, ptr %90, align 4, !tbaa !9
  %933 = fmul float %931, %932
  %934 = load float, ptr %74, align 4, !tbaa !9
  %935 = fmul float %933, %934
  %936 = call float @llvm.fmuladd.f32(float %928, float %929, float %935)
  %937 = load float, ptr %89, align 4, !tbaa !9
  %938 = load float, ptr %89, align 4, !tbaa !9
  %939 = fmul float %937, %938
  %940 = load float, ptr %72, align 4, !tbaa !9
  %941 = call float @llvm.fmuladd.f32(float %939, float %940, float %936)
  store float %941, ptr %88, align 4, !tbaa !9
  %942 = load float, ptr %87, align 4, !tbaa !9
  %943 = load float, ptr %55, align 4, !tbaa !9
  %944 = fsub float %942, %943
  %945 = load float, ptr %87, align 4, !tbaa !9
  %946 = load float, ptr %55, align 4, !tbaa !9
  %947 = fsub float %945, %946
  %948 = load float, ptr %88, align 4, !tbaa !9
  %949 = load float, ptr %56, align 4, !tbaa !9
  %950 = fsub float %948, %949
  %951 = load float, ptr %88, align 4, !tbaa !9
  %952 = load float, ptr %56, align 4, !tbaa !9
  %953 = fsub float %951, %952
  %954 = fmul float %950, %953
  %955 = call float @llvm.fmuladd.f32(float %944, float %947, float %954)
  store float %955, ptr %62, align 4, !tbaa !9
  %956 = load float, ptr %62, align 4, !tbaa !9
  %957 = load float, ptr %54, align 4, !tbaa !9
  %958 = load float, ptr %54, align 4, !tbaa !9
  %959 = fmul float %957, %958
  %960 = fcmp olt float %956, %959
  br i1 %960, label %961, label %966

961:                                              ; preds = %905
  %962 = load float, ptr %62, align 4, !tbaa !9
  %963 = fpext float %962 to double
  %964 = call double @sqrt(double noundef %963) #6
  %965 = fptrunc double %964 to float
  store float %965, ptr %54, align 4, !tbaa !9
  br label %966

966:                                              ; preds = %961, %905
  br label %967

967:                                              ; preds = %966, %901, %897, %894
  %968 = load i32, ptr %79, align 4, !tbaa !11
  %969 = icmp sge i32 %968, 2
  br i1 %969, label %970, label %1040

970:                                              ; preds = %967
  %971 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  %972 = load float, ptr %971, align 4, !tbaa !9
  %973 = fcmp oge float %972, 0.000000e+00
  br i1 %973, label %974, label %1040

974:                                              ; preds = %970
  %975 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 1
  %976 = load float, ptr %975, align 4, !tbaa !9
  %977 = fcmp ole float %976, 1.000000e+00
  br i1 %977, label %978, label %1040

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

1034:                                             ; preds = %978
  %1035 = load float, ptr %62, align 4, !tbaa !9
  %1036 = fpext float %1035 to double
  %1037 = call double @sqrt(double noundef %1036) #6
  %1038 = fptrunc double %1037 to float
  store float %1038, ptr %54, align 4, !tbaa !9
  br label %1039

1039:                                             ; preds = %1034, %978
  br label %1040

1040:                                             ; preds = %1039, %974, %970, %967
  %1041 = load i32, ptr %79, align 4, !tbaa !11
  %1042 = icmp sge i32 %1041, 3
  br i1 %1042, label %1043, label %1113

1043:                                             ; preds = %1040
  %1044 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 2
  %1045 = load float, ptr %1044, align 4, !tbaa !9
  %1046 = fcmp oge float %1045, 0.000000e+00
  br i1 %1046, label %1047, label %1113

1047:                                             ; preds = %1043
  %1048 = getelementptr inbounds [3 x float], ptr %86, i64 0, i64 2
  %1049 = load float, ptr %1048, align 4, !tbaa !9
  %1050 = fcmp ole float %1049, 1.000000e+00
  br i1 %1050, label %1051, label %1113

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

1107:                                             ; preds = %1051
  %1108 = load float, ptr %62, align 4, !tbaa !9
  %1109 = fpext float %1108 to double
  %1110 = call double @sqrt(double noundef %1109) #6
  %1111 = fptrunc double %1110 to float
  store float %1111, ptr %54, align 4, !tbaa !9
  br label %1112

1112:                                             ; preds = %1107, %1051
  br label %1113

1113:                                             ; preds = %1112, %1047, %1043, %1040
  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 %1114

1114:                                             ; preds = %1113, %740, %734, %728, %721
  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 %1115

1115:                                             ; preds = %1114, %571
  br label %1116

1116:                                             ; preds = %1115, %570
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  br label %1117

1117:                                             ; preds = %1116
  %1118 = load i32, ptr %34, align 4, !tbaa !11
  %1119 = add nsw i32 %1118, 1
  store i32 %1119, ptr %34, align 4, !tbaa !11
  br label %422, !llvm.loop !26

1120:                                             ; preds = %422
  %1121 = load i32, ptr %59, align 4, !tbaa !11
  %1122 = icmp eq i32 %1121, 0
  br i1 %1122, label %1123, label %1126

1123:                                             ; preds = %1120
  %1124 = load float, ptr %54, align 4, !tbaa !9
  %1125 = fneg float %1124
  store float %1125, ptr %54, align 4, !tbaa !9
  br label %1126

1126:                                             ; preds = %1123, %1120
  %1127 = load i8, ptr %16, align 1, !tbaa !13
  %1128 = zext i8 %1127 to i32
  %1129 = sitofp i32 %1128 to float
  %1130 = load float, ptr %17, align 4, !tbaa !9
  %1131 = load float, ptr %54, align 4, !tbaa !9
  %1132 = call float @llvm.fmuladd.f32(float %1130, float %1131, float %1129)
  store float %1132, ptr %53, align 4, !tbaa !9
  %1133 = load float, ptr %53, align 4, !tbaa !9
  %1134 = fcmp olt float %1133, 0.000000e+00
  br i1 %1134, label %1135, label %1136

1135:                                             ; preds = %1126
  store float 0.000000e+00, ptr %53, align 4, !tbaa !9
  br label %1141

1136:                                             ; preds = %1126
  %1137 = load float, ptr %53, align 4, !tbaa !9
  %1138 = fcmp ogt float %1137, 2.550000e+02
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1136
  store float 2.550000e+02, ptr %53, align 4, !tbaa !9
  br label %1140

1140:                                             ; preds = %1139, %1136
  br label %1141

1141:                                             ; preds = %1140, %1135
  %1142 = load float, ptr %53, align 4, !tbaa !9
  %1143 = fptoui float %1142 to i8
  %1144 = load ptr, ptr %30, align 8, !tbaa !5
  %1145 = load i32, ptr %33, align 4, !tbaa !11
  %1146 = load i32, ptr %25, align 4, !tbaa !11
  %1147 = sub nsw i32 %1145, %1146
  %1148 = load i32, ptr %28, align 4, !tbaa !11
  %1149 = mul nsw i32 %1147, %1148
  %1150 = load i32, ptr %32, align 4, !tbaa !11
  %1151 = load i32, ptr %24, align 4, !tbaa !11
  %1152 = sub nsw i32 %1150, %1151
  %1153 = add nsw i32 %1149, %1152
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds i8, ptr %1144, i64 %1154
  store i8 %1143, ptr %1155, 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 %1156

1156:                                             ; preds = %1141
  %1157 = load i32, ptr %32, align 4, !tbaa !11
  %1158 = add nsw i32 %1157, 1
  store i32 %1158, ptr %32, align 4, !tbaa !11
  br label %400, !llvm.loop !27

1159:                                             ; preds = %400
  br label %1160

1160:                                             ; preds = %1159
  %1161 = load i32, ptr %33, align 4, !tbaa !11
  %1162 = add nsw i32 %1161, 1
  store i32 %1162, ptr %33, align 4, !tbaa !11
  br label %394, !llvm.loop !28

1163:                                             ; preds = %394
  %1164 = load ptr, ptr %12, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %1164, i32 0, i32 0
  %1166 = load ptr, ptr %1165, align 8, !tbaa !14
  %1167 = load ptr, ptr %36, align 8, !tbaa !5
  call void @free(ptr noundef %1167) #6
  %1168 = load ptr, ptr %12, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.stbtt_fontinfo, ptr %1168, i32 0, i32 0
  %1170 = load ptr, ptr %1169, align 8, !tbaa !14
  %1171 = load ptr, ptr %37, align 8, !tbaa !5
  call void @free(ptr noundef %1171) #6
  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
  %1172 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1172, ptr %11, align 8
  store i32 1, ptr %31, align 4
  br label %1173

1173:                                             ; preds = %1163, %127, %112
  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
  %1174 = load ptr, ptr %11, align 8
  ret ptr %1174
}

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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 = !{!"stbtt_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, !16, i64 64, !16, i64 80, !16, i64 96, !16, i64 112, !16, i64 128, !16, i64 144}
!16 = !{!"", !6, i64 0, !12, i64 8, !12, i64 12}
!17 = !{!18, !7, i64 12}
!18 = !{!"", !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 [75 x i8], align 1
@.str.6 = 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: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: nounwind 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 #2

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
define dso_local noalias 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 #2 {
  %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) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  %17 = fcmp oeq float %1, 0.000000e+00
  br i1 %17, label %410, 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 %410, 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 %410, 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
  %.not466 = icmp eq ptr %7, null
  br i1 %.not466, label %36, label %35

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

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

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

38:                                               ; preds = %37, %36
  %.not468 = icmp eq ptr %9, null
  br i1 %.not468, 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) #7
  %42 = call i32 @stbtt_GetGlyphShape(ptr noundef %0, i32 noundef %2, ptr noundef nonnull %15)
  %.fr514 = freeze i32 %42
  %43 = mul nsw i32 %32, %31
  %44 = sext i32 %43 to i64
  %45 = call noalias ptr @malloc(i64 noundef %44) #8
  %46 = sext i32 %.fr514 to i64
  %47 = shl nsw i64 %46, 2
  %48 = call noalias ptr @malloc(i64 noundef %47) #8
  %49 = icmp sgt i32 %.fr514, 0
  br i1 %49, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %40
  %50 = add nsw i32 %.fr514, -1
  %51 = load ptr, ptr %15, align 8, !tbaa !9
  %wide.trip.count = zext nneg i32 %.fr514 to i64
  %52 = insertelement <2 x float> poison, float %1, i64 0
  %53 = shufflevector <2 x float> %52, <2 x float> poison, <2 x i32> zeroinitializer
  br label %54

54:                                               ; preds = %.lr.ph, %118
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %118 ]
  %.0430498 = phi i32 [ %50, %.lr.ph ], [ %120, %118 ]
  %55 = getelementptr inbounds %struct.stbtt_vertex, ptr %51, i64 %indvars.iv
  %56 = getelementptr inbounds i8, ptr %55, i64 12
  %57 = load i8, ptr %56, align 2, !tbaa !11
  switch i8 %57, label %118 [
    i8 2, label %58
    i8 3, label %84
  ]

58:                                               ; preds = %54
  %59 = load i16, ptr %55, align 2, !tbaa !14
  %60 = getelementptr inbounds i8, ptr %55, i64 2
  %61 = load i16, ptr %60, align 2, !tbaa !15
  %62 = sext i32 %.0430498 to i64
  %63 = getelementptr inbounds %struct.stbtt_vertex, ptr %51, i64 %62
  %64 = load i16, ptr %63, align 2, !tbaa !14
  %65 = insertelement <2 x i16> poison, i16 %64, i64 0
  %66 = insertelement <2 x i16> %65, i16 %59, i64 1
  %67 = sitofp <2 x i16> %66 to <2 x float>
  %68 = fmul <2 x float> %53, %67
  %69 = getelementptr inbounds i8, ptr %63, i64 2
  %70 = load i16, ptr %69, align 2, !tbaa !15
  %shift = shufflevector <2 x float> %68, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %71 = fsub <2 x float> %68, %shift
  %72 = extractelement <2 x float> %71, i64 0
  %73 = insertelement <2 x i16> poison, i16 %61, i64 0
  %74 = insertelement <2 x i16> %73, i16 %70, i64 1
  %75 = sitofp <2 x i16> %74 to <2 x float>
  %76 = fmul <2 x float> %53, %75
  %shift532 = shufflevector <2 x float> %76, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %77 = fsub <2 x float> %76, %shift532
  %78 = fmul <2 x float> %77, %77
  %79 = extractelement <2 x float> %78, i64 0
  %80 = call float @llvm.fmuladd.f32(float %72, float %72, float %79)
  %sqrt = call float @llvm.sqrt.f32(float %80)
  %81 = fcmp oeq float %sqrt, 0.000000e+00
  %82 = fdiv float 1.000000e+00, %sqrt
  %83 = select i1 %81, float 0.000000e+00, float %82
  br label %118

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

116:                                              ; preds = %84
  %117 = fdiv float 1.000000e+00, %114
  br label %118

118:                                              ; preds = %54, %84, %116, %58
  %.sink = phi float [ %117, %116 ], [ %83, %58 ], [ 0.000000e+00, %84 ], [ 0.000000e+00, %54 ]
  %119 = getelementptr inbounds float, ptr %48, i64 %indvars.iv
  store float %.sink, ptr %119, align 4, !tbaa !18
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %120 = 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 %54, !llvm.loop !20

._crit_edge:                                      ; preds = %118, %40
  %121 = load i32, ptr %12, align 4, !tbaa !5
  %122 = load i32, ptr %14, align 4, !tbaa !5
  %123 = icmp slt i32 %121, %122
  br i1 %123, label %.lr.ph512, label %._crit_edge513

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

.lr.ph512.split.preheader:                        ; preds = %.lr.ph512
  %wide.trip.count521 = zext nneg i32 %.fr514 to i64
  %130 = insertelement <2 x float> poison, float %1, i64 0
  %131 = insertelement <2 x float> %130, float %41, i64 1
  br label %.lr.ph512.split

.lr.ph512.split:                                  ; preds = %.lr.ph512.split.preheader, %._crit_edge508
  %132 = phi i32 [ %404, %._crit_edge508 ], [ %128, %.lr.ph512.split.preheader ]
  %133 = phi i32 [ %405, %._crit_edge508 ], [ %127, %.lr.ph512.split.preheader ]
  %.0428509 = phi i32 [ %406, %._crit_edge508 ], [ %121, %.lr.ph512.split.preheader ]
  %134 = icmp slt i32 %133, %132
  br i1 %134, label %.lr.ph507, label %._crit_edge508

.lr.ph507:                                        ; preds = %.lr.ph512.split
  %135 = sitofp i32 %.0428509 to float
  %136 = fadd float %135, 5.000000e-01
  %137 = fdiv float %136, %41
  br i1 %49, label %.lr.ph503.us, label %.lr.ph507.split

.lr.ph503.us:                                     ; preds = %.lr.ph507, %146
  %.0427505.us = phi i32 [ %156, %146 ], [ %133, %.lr.ph507 ]
  %138 = sitofp i32 %.0427505.us to float
  %139 = fadd float %138, 5.000000e-01
  %140 = fdiv float %139, %1
  %141 = load ptr, ptr %15, align 8, !tbaa !9
  %142 = call i32 @stbtt__compute_crossings_x(float noundef %140, float noundef %137, i32 noundef %.fr514, ptr noundef %141)
  br label %159

143:                                              ; preds = %._crit_edge504.us
  %144 = fcmp ogt float %378, 2.550000e+02
  br i1 %144, label %145, label %146

145:                                              ; preds = %143
  br label %146

146:                                              ; preds = %145, %143, %._crit_edge504.us
  %.0431.us = phi float [ 2.550000e+02, %145 ], [ %378, %143 ], [ 0.000000e+00, %._crit_edge504.us ]
  %147 = fptoui float %.0431.us to i8
  %148 = load i32, ptr %12, align 4, !tbaa !5
  %149 = sub nsw i32 %.0428509, %148
  %150 = mul nsw i32 %149, %31
  %151 = load i32, ptr %11, align 4, !tbaa !5
  %152 = sub i32 %.0427505.us, %151
  %153 = add nsw i32 %152, %150
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i8, ptr %45, i64 %154
  store i8 %147, ptr %155, align 1, !tbaa !22
  %156 = add nsw i32 %.0427505.us, 1
  %157 = load i32, ptr %13, align 4, !tbaa !5
  %158 = icmp slt i32 %156, %157
  br i1 %158, label %.lr.ph503.us, label %._crit_edge508, !llvm.loop !23

159:                                              ; preds = %.lr.ph503.us, %375
  %indvars.iv518 = phi i64 [ 0, %.lr.ph503.us ], [ %indvars.iv.next519, %375 ]
  %.0432500.us = phi float [ 9.999990e+05, %.lr.ph503.us ], [ %.8.us, %375 ]
  %160 = load ptr, ptr %15, align 8, !tbaa !9
  %161 = getelementptr inbounds %struct.stbtt_vertex, ptr %160, i64 %indvars.iv518
  %162 = load <2 x i16>, ptr %161, align 2, !tbaa !24
  %163 = sitofp <2 x i16> %162 to <2 x float>
  %164 = fmul <2 x float> %131, %163
  %165 = extractelement <2 x float> %164, i64 0
  %166 = fsub float %165, %139
  %167 = extractelement <2 x float> %164, i64 1
  %168 = fsub float %167, %136
  %169 = fmul float %168, %168
  %170 = call float @llvm.fmuladd.f32(float %166, float %166, float %169)
  %171 = fmul float %.0432500.us, %.0432500.us
  %172 = fcmp olt float %170, %171
  %sqrt493.us = call float @llvm.sqrt.f32(float %170)
  %.1433.us = select i1 %172, float %sqrt493.us, float %.0432500.us
  %173 = getelementptr inbounds i8, ptr %161, i64 12
  %174 = load i8, ptr %173, align 2, !tbaa !11
  switch i8 %174, label %375 [
    i8 2, label %346
    i8 3, label %175
  ]

175:                                              ; preds = %159
  %176 = getelementptr i8, ptr %161, i64 -14
  %177 = getelementptr inbounds i8, ptr %161, i64 4
  %178 = load <2 x i16>, ptr %176, align 2, !tbaa !24
  %179 = sitofp <2 x i16> %178 to <2 x float>
  %180 = fmul <2 x float> %131, %179
  %181 = shufflevector <2 x float> %180, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  %182 = load <2 x i16>, ptr %177, align 2, !tbaa !24
  %183 = sitofp <2 x i16> %182 to <2 x float>
  %184 = fmul <2 x float> %131, %183
  %185 = fcmp olt <2 x float> %164, %184
  %186 = shufflevector <2 x i1> %185, <2 x i1> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
  %187 = shufflevector <2 x float> %184, <2 x float> %164, <4 x i32> <i32 1, i32 0, i32 3, i32 2>
  %188 = shufflevector <4 x float> %187, <4 x float> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %189 = select <4 x i1> %186, <4 x float> %187, <4 x float> %188
  %190 = fcmp olt <4 x float> %189, %181
  %191 = extractelement <4 x i1> %190, i64 3
  %192 = extractelement <4 x float> %189, i64 3
  %193 = extractelement <2 x float> %180, i64 0
  %..us = select i1 %191, float %192, float %193
  %194 = extractelement <4 x i1> %190, i64 2
  %195 = extractelement <4 x float> %189, i64 2
  %196 = extractelement <2 x float> %180, i64 1
  %197 = select i1 %194, float %195, float %196
  %198 = extractelement <4 x i1> %190, i64 1
  %199 = extractelement <4 x float> %189, i64 1
  %200 = select i1 %198, float %193, float %199
  %201 = extractelement <4 x i1> %190, i64 0
  %202 = extractelement <4 x float> %189, i64 0
  %203 = select i1 %201, float %196, float %202
  %204 = fsub float %..us, %.1433.us
  %205 = fcmp ogt float %139, %204
  %206 = fadd float %.1433.us, %200
  %207 = fcmp olt float %139, %206
  %or.cond476.us = select i1 %205, i1 %207, i1 false
  %208 = fsub float %197, %.1433.us
  %209 = fcmp ogt float %136, %208
  %or.cond478.us = select i1 %or.cond476.us, i1 %209, i1 false
  %210 = fadd float %.1433.us, %203
  %211 = fcmp olt float %136, %210
  %or.cond480.us = select i1 %or.cond478.us, i1 %211, i1 false
  br i1 %or.cond480.us, label %212, label %375

212:                                              ; preds = %175
  %213 = extractelement <2 x float> %184, i64 0
  %214 = fsub <2 x float> %184, %164
  %215 = extractelement <2 x float> %214, i64 0
  %216 = extractelement <2 x float> %184, i64 1
  %217 = fsub float %216, %167
  %218 = call float @llvm.fmuladd.f32(float %213, float -2.000000e+00, float %165)
  %219 = fadd float %193, %218
  %220 = call float @llvm.fmuladd.f32(float %216, float -2.000000e+00, float %167)
  %221 = fadd float %196, %220
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #7
  %222 = getelementptr inbounds float, ptr %48, i64 %indvars.iv518
  %223 = load float, ptr %222, align 4, !tbaa !18
  %224 = fcmp oeq float %223, 0.000000e+00
  %225 = fmul float %217, %221
  %226 = call float @llvm.fmuladd.f32(float %215, float %219, float %225)
  %227 = fmul float %226, 3.000000e+00
  br i1 %224, label %240, label %228

228:                                              ; preds = %212
  %229 = fmul float %227, %223
  %230 = fmul float %217, %217
  %231 = call float @llvm.fmuladd.f32(float %215, float %215, float %230)
  %232 = fmul float %168, %221
  %233 = call float @llvm.fmuladd.f32(float %166, float %219, float %232)
  %234 = call float @llvm.fmuladd.f32(float %231, float 2.000000e+00, float %233)
  %235 = fmul float %234, %223
  %236 = fmul float %168, %217
  %237 = call float @llvm.fmuladd.f32(float %166, float %215, float %236)
  %238 = fmul float %237, %223
  %239 = call i32 @stbtt__solve_cubic(float noundef %229, float noundef %235, float noundef %238, ptr noundef nonnull %16)
  %.pre = load float, ptr %16, align 8
  br label %271

240:                                              ; preds = %212
  %241 = fmul float %217, %217
  %242 = call float @llvm.fmuladd.f32(float %215, float %215, float %241)
  %243 = fmul float %168, %221
  %244 = call float @llvm.fmuladd.f32(float %166, float %219, float %243)
  %245 = call float @llvm.fmuladd.f32(float %242, float 2.000000e+00, float %244)
  %246 = fmul float %168, %217
  %247 = call float @llvm.fmuladd.f32(float %166, float %215, float %246)
  %248 = fcmp oeq float %227, 0.000000e+00
  br i1 %248, label %266, label %249

249:                                              ; preds = %240
  %250 = fmul float %227, -4.000000e+00
  %251 = fmul float %247, %250
  %252 = call float @llvm.fmuladd.f32(float %245, float %245, float %251)
  %253 = fcmp olt float %252, 0.000000e+00
  br i1 %253, label %.thread489.us, label %254

254:                                              ; preds = %249
  %sqrtf469.us = call float @sqrtf(float noundef %252) #9
  %255 = fneg float %245
  %256 = fmul float %227, 2.000000e+00
  %257 = insertelement <2 x float> poison, float %255, i64 0
  %258 = insertelement <2 x float> %257, float %sqrtf469.us, i64 1
  %259 = insertelement <2 x float> poison, float %sqrtf469.us, i64 0
  %260 = insertelement <2 x float> %259, float %245, i64 1
  %261 = fsub <2 x float> %258, %260
  %262 = insertelement <2 x float> poison, float %256, i64 0
  %263 = shufflevector <2 x float> %262, <2 x float> poison, <2 x i32> zeroinitializer
  %264 = fdiv <2 x float> %261, %263
  store <2 x float> %264, ptr %16, align 8, !tbaa !18
  %265 = extractelement <2 x float> %264, i64 0
  br label %271

266:                                              ; preds = %240
  %267 = fcmp une float %245, 0.000000e+00
  br i1 %267, label %268, label %.thread489.us

268:                                              ; preds = %266
  %269 = fneg float %247
  %270 = fdiv float %269, %245
  br label %271

271:                                              ; preds = %268, %254, %228
  %272 = phi float [ %.pre, %228 ], [ %270, %268 ], [ %265, %254 ]
  %.2436.us = phi i32 [ %239, %228 ], [ 1, %268 ], [ 2, %254 ]
  %273 = icmp sgt i32 %.2436.us, 0
  %274 = fcmp oge float %272, 0.000000e+00
  %275 = fcmp ole float %272, 1.000000e+00
  %276 = and i1 %274, %275
  %or.cond7.us = select i1 %273, i1 %276, i1 false
  br i1 %or.cond7.us, label %277, label %296

277:                                              ; preds = %271
  %278 = fsub float 1.000000e+00, %272
  %279 = fmul float %278, %278
  %280 = fmul float %272, 2.000000e+00
  %281 = fmul float %280, %278
  %282 = fmul float %213, %281
  %283 = call float @llvm.fmuladd.f32(float %279, float %165, float %282)
  %284 = fmul float %272, %272
  %285 = call float @llvm.fmuladd.f32(float %284, float %193, float %283)
  %286 = fmul float %216, %281
  %287 = call float @llvm.fmuladd.f32(float %279, float %167, float %286)
  %288 = call float @llvm.fmuladd.f32(float %284, float %196, float %287)
  %289 = fsub float %285, %139
  %290 = fsub float %288, %136
  %291 = fmul float %290, %290
  %292 = call float @llvm.fmuladd.f32(float %289, float %289, float %291)
  %293 = fmul float %.1433.us, %.1433.us
  %294 = fcmp olt float %292, %293
  br i1 %294, label %295, label %296

295:                                              ; preds = %277
  %sqrt494.us = call float @llvm.sqrt.f32(float %292)
  br label %296

296:                                              ; preds = %295, %277, %271
  %.4.us = phi float [ %sqrt494.us, %295 ], [ %.1433.us, %277 ], [ %.1433.us, %271 ]
  %297 = icmp sgt i32 %.2436.us, 1
  %298 = load float, ptr %124, align 4
  %299 = fcmp oge float %298, 0.000000e+00
  %300 = fcmp ole float %298, 1.000000e+00
  %301 = and i1 %299, %300
  %or.cond13.us = select i1 %297, i1 %301, i1 false
  br i1 %or.cond13.us, label %302, label %321

302:                                              ; preds = %296
  %303 = fsub float 1.000000e+00, %298
  %304 = fmul float %303, %303
  %305 = fmul float %298, 2.000000e+00
  %306 = fmul float %305, %303
  %307 = fmul float %213, %306
  %308 = call float @llvm.fmuladd.f32(float %304, float %165, float %307)
  %309 = fmul float %298, %298
  %310 = call float @llvm.fmuladd.f32(float %309, float %193, float %308)
  %311 = fmul float %216, %306
  %312 = call float @llvm.fmuladd.f32(float %304, float %167, float %311)
  %313 = call float @llvm.fmuladd.f32(float %309, float %196, float %312)
  %314 = fsub float %310, %139
  %315 = fsub float %313, %136
  %316 = fmul float %315, %315
  %317 = call float @llvm.fmuladd.f32(float %314, float %314, float %316)
  %318 = fmul float %.4.us, %.4.us
  %319 = fcmp olt float %317, %318
  br i1 %319, label %320, label %321

320:                                              ; preds = %302
  %sqrt495.us = call float @llvm.sqrt.f32(float %317)
  br label %321

321:                                              ; preds = %320, %302, %296
  %.5.us = phi float [ %sqrt495.us, %320 ], [ %.4.us, %302 ], [ %.4.us, %296 ]
  %322 = icmp sgt i32 %.2436.us, 2
  %323 = load float, ptr %125, align 8
  %324 = fcmp oge float %323, 0.000000e+00
  %325 = fcmp ole float %323, 1.000000e+00
  %326 = and i1 %324, %325
  %or.cond19.us = select i1 %322, i1 %326, i1 false
  br i1 %or.cond19.us, label %327, label %.thread489.us

327:                                              ; preds = %321
  %328 = fsub float 1.000000e+00, %323
  %329 = fmul float %328, %328
  %330 = fmul float %323, 2.000000e+00
  %331 = fmul float %330, %328
  %332 = fmul float %213, %331
  %333 = call float @llvm.fmuladd.f32(float %329, float %165, float %332)
  %334 = fmul float %323, %323
  %335 = call float @llvm.fmuladd.f32(float %334, float %193, float %333)
  %336 = fmul float %216, %331
  %337 = call float @llvm.fmuladd.f32(float %329, float %167, float %336)
  %338 = call float @llvm.fmuladd.f32(float %334, float %196, float %337)
  %339 = fsub float %335, %139
  %340 = fsub float %338, %136
  %341 = fmul float %340, %340
  %342 = call float @llvm.fmuladd.f32(float %339, float %339, float %341)
  %343 = fmul float %.5.us, %.5.us
  %344 = fcmp olt float %342, %343
  br i1 %344, label %345, label %.thread489.us

345:                                              ; preds = %327
  %sqrt496.us = call float @llvm.sqrt.f32(float %342)
  br label %.thread489.us

.thread489.us:                                    ; preds = %345, %327, %321, %266, %249
  %.6.us = phi float [ %sqrt496.us, %345 ], [ %.5.us, %327 ], [ %.5.us, %321 ], [ %.1433.us, %266 ], [ %.1433.us, %249 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #7
  br label %375

346:                                              ; preds = %159
  %347 = getelementptr i8, ptr %161, i64 -14
  %348 = load i16, ptr %347, align 2, !tbaa !14
  %349 = sitofp i16 %348 to float
  %350 = fmul float %349, %1
  %351 = getelementptr i8, ptr %161, i64 -12
  %352 = load i16, ptr %351, align 2, !tbaa !15
  %353 = sitofp i16 %352 to float
  %354 = fmul float %41, %353
  %355 = fsub float %350, %165
  %356 = fsub float %354, %167
  %357 = fneg float %356
  %358 = fmul float %166, %357
  %359 = call float @llvm.fmuladd.f32(float %355, float %168, float %358)
  %360 = call float @llvm.fabs.f32(float %359)
  %361 = getelementptr inbounds float, ptr %48, i64 %indvars.iv518
  %362 = load float, ptr %361, align 4, !tbaa !18
  %363 = fmul float %362, %360
  %.not473.us = icmp eq i64 %indvars.iv518, 0
  br i1 %.not473.us, label %.split.us, label %364

364:                                              ; preds = %346
  %365 = fcmp olt float %363, %.1433.us
  br i1 %365, label %366, label %375

366:                                              ; preds = %364
  %367 = fmul float %168, %356
  %368 = call float @llvm.fmuladd.f32(float %166, float %355, float %367)
  %369 = fneg float %368
  %370 = fmul float %356, %356
  %371 = call float @llvm.fmuladd.f32(float %355, float %355, float %370)
  %372 = fdiv float %369, %371
  %373 = fcmp oge float %372, 0.000000e+00
  %374 = fcmp ole float %372, 1.000000e+00
  %or.cond.us = and i1 %373, %374
  %.2.us = select i1 %or.cond.us, float %363, float %.1433.us
  br label %375

375:                                              ; preds = %366, %364, %.thread489.us, %175, %159
  %.8.us = phi float [ %.2.us, %366 ], [ %.1433.us, %364 ], [ %.1433.us, %159 ], [ %.6.us, %.thread489.us ], [ %.1433.us, %175 ]
  %indvars.iv.next519 = add nuw nsw i64 %indvars.iv518, 1
  %exitcond522.not = icmp eq i64 %indvars.iv.next519, %wide.trip.count521
  br i1 %exitcond522.not, label %._crit_edge504.us, label %159, !llvm.loop !25

._crit_edge504.us:                                ; preds = %375
  %376 = icmp eq i32 %142, 0
  %377 = fneg float %.8.us
  %.9.us = select i1 %376, float %377, float %.8.us
  %378 = call float @llvm.fmuladd.f32(float %5, float %.9.us, float %126)
  %379 = fcmp olt float %378, 0.000000e+00
  br i1 %379, label %146, label %143

.lr.ph507.split:                                  ; preds = %.lr.ph507, %391
  %.0427505 = phi i32 [ %401, %391 ], [ %133, %.lr.ph507 ]
  %380 = sitofp i32 %.0427505 to float
  %381 = fadd float %380, 5.000000e-01
  %382 = fdiv float %381, %1
  %383 = load ptr, ptr %15, align 8, !tbaa !9
  %384 = call i32 @stbtt__compute_crossings_x(float noundef %382, float noundef %137, i32 noundef %.fr514, ptr noundef %383)
  %385 = icmp eq i32 %384, 0
  %.9 = select i1 %385, float -9.999990e+05, float 9.999990e+05
  %386 = call float @llvm.fmuladd.f32(float %5, float %.9, float %126)
  %387 = fcmp olt float %386, 0.000000e+00
  br i1 %387, label %391, label %388

.split.us:                                        ; preds = %346
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.1, i32 noundef 4487, ptr noundef nonnull @__PRETTY_FUNCTION__.stbtt_GetGlyphSDF) #10
  unreachable

388:                                              ; preds = %.lr.ph507.split
  %389 = fcmp ogt float %386, 2.550000e+02
  br i1 %389, label %390, label %391

390:                                              ; preds = %388
  br label %391

391:                                              ; preds = %.lr.ph507.split, %388, %390
  %.0431 = phi float [ 2.550000e+02, %390 ], [ %386, %388 ], [ 0.000000e+00, %.lr.ph507.split ]
  %392 = fptoui float %.0431 to i8
  %393 = load i32, ptr %12, align 4, !tbaa !5
  %394 = sub nsw i32 %.0428509, %393
  %395 = mul nsw i32 %394, %31
  %396 = load i32, ptr %11, align 4, !tbaa !5
  %397 = sub i32 %.0427505, %396
  %398 = add nsw i32 %397, %395
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds i8, ptr %45, i64 %399
  store i8 %392, ptr %400, align 1, !tbaa !22
  %401 = add nsw i32 %.0427505, 1
  %402 = load i32, ptr %13, align 4, !tbaa !5
  %403 = icmp slt i32 %401, %402
  br i1 %403, label %.lr.ph507.split, label %._crit_edge508, !llvm.loop !23

._crit_edge508:                                   ; preds = %391, %146, %.lr.ph512.split
  %404 = phi i32 [ %132, %.lr.ph512.split ], [ %157, %146 ], [ %402, %391 ]
  %405 = phi i32 [ %133, %.lr.ph512.split ], [ %151, %146 ], [ %396, %391 ]
  %406 = add nsw i32 %.0428509, 1
  %407 = load i32, ptr %14, align 4, !tbaa !5
  %408 = icmp slt i32 %406, %407
  br i1 %408, label %.lr.ph512.split, label %._crit_edge513, !llvm.loop !26

._crit_edge513:                                   ; preds = %._crit_edge508, %.lr.ph512, %._crit_edge
  call void @free(ptr noundef %48) #7
  %409 = load ptr, ptr %15, align 8, !tbaa !9
  call void @free(ptr noundef %409) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %410

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

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

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

declare float @sqrtf(float) local_unnamed_addr

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

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

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

!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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !7, i64 12}
!12 = !{!"", !13, i64 0, !13, i64 2, !13, i64 4, !13, i64 6, !13, i64 8, !13, i64 10, !7, i64 12, !7, i64 13}
!13 = !{!"short", !7, i64 0}
!14 = !{!12, !13, i64 0}
!15 = !{!12, !13, i64 2}
!16 = !{!12, !13, i64 4}
!17 = !{!12, !13, i64 6}
!18 = !{!19, !19, i64 0}
!19 = !{!"float", !7, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !21}
!24 = !{!13, !13, i64 0}
!25 = distinct !{!25, !21}
!26 = distinct !{!26, !21, !27}
!27 = !{!"llvm.loop.unswitch.partial.disable"}


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