; LLVM IR from reworks-org/galaxy :: deps/sfml_deps/freetype-src/src/psaux (psblues)

; 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.CF2_FontRec_ = type { ptr, i32, i8, i8, i32, %struct.CF2_Matrix_, %struct.CF2_Matrix_, %struct.CF2_Matrix_, i32, %struct.CFF_BlendRec_, i32, i32, ptr, i32, i32, i32, %struct.CF2_OutlineRec_, ptr, ptr, i8, i8, i8, [8 x i32], i32, i32, i32, i32, i8, %struct.CF2_BluesRec_, ptr }
%struct.CF2_Matrix_ = type { i32, i32, i32, i32, i32, i32 }
%struct.CFF_BlendRec_ = type { i8, i8, ptr, i32, i32, ptr, i32, ptr }
%struct.CF2_OutlineRec_ = type { %struct.CF2_OutlineCallbacksRec_, ptr }
%struct.CF2_OutlineCallbacksRec_ = type { ptr, ptr, ptr, ptr, i32, ptr, ptr }
%struct.CF2_BluesRec_ = type { i32, i32, i8, i8, i32, i32, i32, i32, %struct.CF2_HintRec_, %struct.CF2_HintRec_, [12 x %struct.CF2_BlueRec_] }
%struct.CF2_HintRec_ = type { i32, i64, i32, i32, i32 }
%struct.CF2_BlueRec_ = type { i32, i32, i32, i32, i8 }

; Function Attrs: nounwind uwtable
define hidden void @cf2_blues_init(ptr noundef %0, ptr noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.CF2_FontRec_, ptr %26, i32 0, i32 17
  %28 = load ptr, ptr %27, align 8, !tbaa !9
  store ptr %28, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %29 = load ptr, ptr %3, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 336, i1 false)
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.CF2_FontRec_, ptr %30, i32 0, i32 6
  %32 = getelementptr inbounds %struct.CF2_Matrix_, ptr %31, i32 0, i32 3
  %33 = load i32, ptr %32, align 4, !tbaa !20
  %34 = load ptr, ptr %3, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %34, i32 0, i32 0
  store i32 %33, ptr %35, align 8, !tbaa !21
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = load ptr, ptr %3, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %37, i32 0, i32 4
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %39, i32 0, i32 5
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %41, i32 0, i32 6
  call void @cf2_getBlueMetrics(ptr noundef %36, ptr noundef %38, ptr noundef %40, ptr noundef %42)
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  call void @cf2_getBlueValues(ptr noundef %43, ptr noundef %9, ptr noundef %13)
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  call void @cf2_getOtherBlues(ptr noundef %44, ptr noundef %10, ptr noundef %14)
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  call void @cf2_getFamilyBlues(ptr noundef %45, ptr noundef %11, ptr noundef %15)
  %46 = load ptr, ptr %5, align 8, !tbaa !5
  call void @cf2_getFamilyOtherBlues(ptr noundef %46, ptr noundef %12, ptr noundef %16)
  store i32 -7864320, ptr %18, align 4, !tbaa !19
  store i32 57671680, ptr %19, align 4, !tbaa !19
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = call i32 @cf2_getLanguageGroup(ptr noundef %47)
  %49 = icmp eq i32 %48, 1
  br i1 %49, label %50, label %156

50:                                               ; preds = %2
  %51 = load i64, ptr %9, align 8, !tbaa !22
  %52 = icmp eq i64 %51, 0
  br i1 %52, label %88, label %53

53:                                               ; preds = %50
  %54 = load i64, ptr %9, align 8, !tbaa !22
  %55 = icmp eq i64 %54, 4
  br i1 %55, label %56, label %156

56:                                               ; preds = %53
  %57 = load ptr, ptr %13, align 8, !tbaa !5
  %58 = getelementptr inbounds i64, ptr %57, i64 0
  %59 = load i64, ptr %58, align 8, !tbaa !22
  %60 = trunc i64 %59 to i32
  %61 = shl i32 %60, 16
  %62 = load i32, ptr %18, align 4, !tbaa !19
  %63 = icmp slt i32 %61, %62
  br i1 %63, label %64, label %156

64:                                               ; preds = %56
  %65 = load ptr, ptr %13, align 8, !tbaa !5
  %66 = getelementptr inbounds i64, ptr %65, i64 1
  %67 = load i64, ptr %66, align 8, !tbaa !22
  %68 = trunc i64 %67 to i32
  %69 = shl i32 %68, 16
  %70 = load i32, ptr %18, align 4, !tbaa !19
  %71 = icmp slt i32 %69, %70
  br i1 %71, label %72, label %156

72:                                               ; preds = %64
  %73 = load ptr, ptr %13, align 8, !tbaa !5
  %74 = getelementptr inbounds i64, ptr %73, i64 2
  %75 = load i64, ptr %74, align 8, !tbaa !22
  %76 = trunc i64 %75 to i32
  %77 = shl i32 %76, 16
  %78 = load i32, ptr %19, align 4, !tbaa !19
  %79 = icmp sgt i32 %77, %78
  br i1 %79, label %80, label %156

80:                                               ; preds = %72
  %81 = load ptr, ptr %13, align 8, !tbaa !5
  %82 = getelementptr inbounds i64, ptr %81, i64 3
  %83 = load i64, ptr %82, align 8, !tbaa !22
  %84 = trunc i64 %83 to i32
  %85 = shl i32 %84, 16
  %86 = load i32, ptr %19, align 4, !tbaa !19
  %87 = icmp sgt i32 %85, %86
  br i1 %87, label %88, label %156

88:                                               ; preds = %80, %50
  %89 = load i32, ptr %18, align 4, !tbaa !19
  %90 = sub nsw i32 %89, 1
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %91, i32 0, i32 9
  %93 = getelementptr inbounds %struct.CF2_HintRec_, ptr %92, i32 0, i32 2
  store i32 %90, ptr %93, align 8, !tbaa !23
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %94, i32 0, i32 9
  %96 = getelementptr inbounds %struct.CF2_HintRec_, ptr %95, i32 0, i32 2
  %97 = load i32, ptr %96, align 8, !tbaa !23
  %98 = load ptr, ptr %3, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %98, i32 0, i32 0
  %100 = load i32, ptr %99, align 8, !tbaa !21
  %101 = call i32 @FT_MulFix_x86_64(i32 noundef %97, i32 noundef %100)
  %102 = add i32 %101, 32768
  %103 = zext i32 %102 to i64
  %104 = and i64 %103, 4294901760
  %105 = trunc i64 %104 to i32
  %106 = sub nsw i32 %105, 32768
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %107, i32 0, i32 9
  %109 = getelementptr inbounds %struct.CF2_HintRec_, ptr %108, i32 0, i32 3
  store i32 %106, ptr %109, align 4, !tbaa !24
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %110, i32 0, i32 0
  %112 = load i32, ptr %111, align 8, !tbaa !21
  %113 = load ptr, ptr %3, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %113, i32 0, i32 9
  %115 = getelementptr inbounds %struct.CF2_HintRec_, ptr %114, i32 0, i32 4
  store i32 %112, ptr %115, align 8, !tbaa !25
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %116, i32 0, i32 9
  %118 = getelementptr inbounds %struct.CF2_HintRec_, ptr %117, i32 0, i32 0
  store i32 49, ptr %118, align 8, !tbaa !26
  %119 = load i32, ptr %19, align 4, !tbaa !19
  %120 = add nsw i32 %119, 1
  %121 = load ptr, ptr %4, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.CF2_FontRec_, ptr %121, i32 0, i32 26
  %123 = load i32, ptr %122, align 8, !tbaa !27
  %124 = mul nsw i32 2, %123
  %125 = add nsw i32 %120, %124
  %126 = load ptr, ptr %3, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %126, i32 0, i32 8
  %128 = getelementptr inbounds %struct.CF2_HintRec_, ptr %127, i32 0, i32 2
  store i32 %125, ptr %128, align 8, !tbaa !28
  %129 = load ptr, ptr %3, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %129, i32 0, i32 8
  %131 = getelementptr inbounds %struct.CF2_HintRec_, ptr %130, i32 0, i32 2
  %132 = load i32, ptr %131, align 8, !tbaa !28
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %133, i32 0, i32 0
  %135 = load i32, ptr %134, align 8, !tbaa !21
  %136 = call i32 @FT_MulFix_x86_64(i32 noundef %132, i32 noundef %135)
  %137 = add i32 %136, 32768
  %138 = zext i32 %137 to i64
  %139 = and i64 %138, 4294901760
  %140 = trunc i64 %139 to i32
  %141 = add nsw i32 %140, 32768
  %142 = load ptr, ptr %3, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %142, i32 0, i32 8
  %144 = getelementptr inbounds %struct.CF2_HintRec_, ptr %143, i32 0, i32 3
  store i32 %141, ptr %144, align 4, !tbaa !29
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %145, i32 0, i32 0
  %147 = load i32, ptr %146, align 8, !tbaa !21
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %148, i32 0, i32 8
  %150 = getelementptr inbounds %struct.CF2_HintRec_, ptr %149, i32 0, i32 4
  store i32 %147, ptr %150, align 8, !tbaa !30
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %151, i32 0, i32 8
  %153 = getelementptr inbounds %struct.CF2_HintRec_, ptr %152, i32 0, i32 0
  store i32 50, ptr %153, align 8, !tbaa !31
  %154 = load ptr, ptr %3, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %154, i32 0, i32 3
  store i8 1, ptr %155, align 1, !tbaa !32
  store i32 1, ptr %20, align 4
  br label %725

156:                                              ; preds = %80, %72, %64, %56, %53, %2
  store i64 0, ptr %17, align 8, !tbaa !22
  br label %157

157:                                              ; preds = %314, %156
  %158 = load i64, ptr %17, align 8, !tbaa !22
  %159 = load i64, ptr %9, align 8, !tbaa !22
  %160 = icmp ult i64 %158, %159
  br i1 %160, label %161, label %317

161:                                              ; preds = %157
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = load i64, ptr %17, align 8, !tbaa !22
  %164 = getelementptr inbounds i64, ptr %162, i64 %163
  %165 = load i64, ptr %164, align 8, !tbaa !22
  %166 = trunc i64 %165 to i32
  %167 = shl i32 %166, 16
  %168 = load ptr, ptr %3, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %168, i32 0, i32 10
  %170 = load ptr, ptr %3, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %170, i32 0, i32 1
  %172 = load i32, ptr %171, align 4, !tbaa !33
  %173 = zext i32 %172 to i64
  %174 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %169, i64 0, i64 %173
  %175 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %174, i32 0, i32 0
  store i32 %167, ptr %175, align 4, !tbaa !34
  %176 = load ptr, ptr %13, align 8, !tbaa !5
  %177 = load i64, ptr %17, align 8, !tbaa !22
  %178 = add i64 %177, 1
  %179 = getelementptr inbounds i64, ptr %176, i64 %178
  %180 = load i64, ptr %179, align 8, !tbaa !22
  %181 = trunc i64 %180 to i32
  %182 = shl i32 %181, 16
  %183 = load ptr, ptr %3, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %183, i32 0, i32 10
  %185 = load ptr, ptr %3, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %185, i32 0, i32 1
  %187 = load i32, ptr %186, align 4, !tbaa !33
  %188 = zext i32 %187 to i64
  %189 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %184, i64 0, i64 %188
  %190 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %189, i32 0, i32 1
  store i32 %182, ptr %190, align 4, !tbaa !36
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %191, i32 0, i32 10
  %193 = load ptr, ptr %3, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %193, i32 0, i32 1
  %195 = load i32, ptr %194, align 4, !tbaa !33
  %196 = zext i32 %195 to i64
  %197 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %192, i64 0, i64 %196
  %198 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %197, i32 0, i32 1
  %199 = load i32, ptr %198, align 4, !tbaa !36
  %200 = load ptr, ptr %3, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %200, i32 0, i32 10
  %202 = load ptr, ptr %3, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %202, i32 0, i32 1
  %204 = load i32, ptr %203, align 4, !tbaa !33
  %205 = zext i32 %204 to i64
  %206 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %201, i64 0, i64 %205
  %207 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %206, i32 0, i32 0
  %208 = load i32, ptr %207, align 4, !tbaa !34
  %209 = sub i32 %199, %208
  store i32 %209, ptr %6, align 4, !tbaa !19
  %210 = load i32, ptr %6, align 4, !tbaa !19
  %211 = icmp slt i32 %210, 0
  br i1 %211, label %212, label %216

212:                                              ; preds = %161
  br label %213

213:                                              ; preds = %212
  br label %214

214:                                              ; preds = %213
  br label %215

215:                                              ; preds = %214
  br label %314

216:                                              ; preds = %161
  %217 = load i32, ptr %6, align 4, !tbaa !19
  %218 = load i32, ptr %7, align 4, !tbaa !19
  %219 = icmp sgt i32 %217, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %216
  %221 = load i32, ptr %6, align 4, !tbaa !19
  store i32 %221, ptr %7, align 4, !tbaa !19
  br label %222

222:                                              ; preds = %220, %216
  %223 = load i64, ptr %17, align 8, !tbaa !22
  %224 = icmp ne i64 %223, 0
  br i1 %224, label %225, label %254

225:                                              ; preds = %222
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.CF2_FontRec_, ptr %226, i32 0, i32 26
  %228 = load i32, ptr %227, align 8, !tbaa !27
  %229 = mul nsw i32 2, %228
  %230 = load ptr, ptr %3, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %230, i32 0, i32 10
  %232 = load ptr, ptr %3, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %232, i32 0, i32 1
  %234 = load i32, ptr %233, align 4, !tbaa !33
  %235 = zext i32 %234 to i64
  %236 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %231, i64 0, i64 %235
  %237 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %237, align 4, !tbaa !36
  %239 = add nsw i32 %238, %229
  store i32 %239, ptr %237, align 4, !tbaa !36
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.CF2_FontRec_, ptr %240, i32 0, i32 26
  %242 = load i32, ptr %241, align 8, !tbaa !27
  %243 = mul nsw i32 2, %242
  %244 = load ptr, ptr %3, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %244, i32 0, i32 10
  %246 = load ptr, ptr %3, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %246, i32 0, i32 1
  %248 = load i32, ptr %247, align 4, !tbaa !33
  %249 = zext i32 %248 to i64
  %250 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %245, i64 0, i64 %249
  %251 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %250, i32 0, i32 0
  %252 = load i32, ptr %251, align 4, !tbaa !34
  %253 = add nsw i32 %252, %243
  store i32 %253, ptr %251, align 4, !tbaa !34
  br label %254

254:                                              ; preds = %225, %222
  %255 = load i64, ptr %17, align 8, !tbaa !22
  %256 = icmp eq i64 %255, 0
  br i1 %256, label %257, label %283

257:                                              ; preds = %254
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %258, i32 0, i32 10
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %260, i32 0, i32 1
  %262 = load i32, ptr %261, align 4, !tbaa !33
  %263 = zext i32 %262 to i64
  %264 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %259, i64 0, i64 %263
  %265 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %264, i32 0, i32 4
  store i8 1, ptr %265, align 4, !tbaa !37
  %266 = load ptr, ptr %3, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %266, i32 0, i32 10
  %268 = load ptr, ptr %3, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %268, i32 0, i32 1
  %270 = load i32, ptr %269, align 4, !tbaa !33
  %271 = zext i32 %270 to i64
  %272 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %267, i64 0, i64 %271
  %273 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %272, i32 0, i32 1
  %274 = load i32, ptr %273, align 4, !tbaa !36
  %275 = load ptr, ptr %3, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %275, i32 0, i32 10
  %277 = load ptr, ptr %3, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %277, i32 0, i32 1
  %279 = load i32, ptr %278, align 4, !tbaa !33
  %280 = zext i32 %279 to i64
  %281 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %276, i64 0, i64 %280
  %282 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %281, i32 0, i32 2
  store i32 %274, ptr %282, align 4, !tbaa !38
  br label %309

283:                                              ; preds = %254
  %284 = load ptr, ptr %3, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %284, i32 0, i32 10
  %286 = load ptr, ptr %3, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %286, i32 0, i32 1
  %288 = load i32, ptr %287, align 4, !tbaa !33
  %289 = zext i32 %288 to i64
  %290 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %285, i64 0, i64 %289
  %291 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %290, i32 0, i32 4
  store i8 0, ptr %291, align 4, !tbaa !37
  %292 = load ptr, ptr %3, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %292, i32 0, i32 10
  %294 = load ptr, ptr %3, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %294, i32 0, i32 1
  %296 = load i32, ptr %295, align 4, !tbaa !33
  %297 = zext i32 %296 to i64
  %298 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %293, i64 0, i64 %297
  %299 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %298, i32 0, i32 0
  %300 = load i32, ptr %299, align 4, !tbaa !34
  %301 = load ptr, ptr %3, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %301, i32 0, i32 10
  %303 = load ptr, ptr %3, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %303, i32 0, i32 1
  %305 = load i32, ptr %304, align 4, !tbaa !33
  %306 = zext i32 %305 to i64
  %307 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %302, i64 0, i64 %306
  %308 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %307, i32 0, i32 2
  store i32 %300, ptr %308, align 4, !tbaa !38
  br label %309

309:                                              ; preds = %283, %257
  %310 = load ptr, ptr %3, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %310, i32 0, i32 1
  %312 = load i32, ptr %311, align 4, !tbaa !33
  %313 = add i32 %312, 1
  store i32 %313, ptr %311, align 4, !tbaa !33
  br label %314

314:                                              ; preds = %309, %215
  %315 = load i64, ptr %17, align 8, !tbaa !22
  %316 = add i64 %315, 2
  store i64 %316, ptr %17, align 8, !tbaa !22
  br label %157, !llvm.loop !39

317:                                              ; preds = %157
  store i64 0, ptr %17, align 8, !tbaa !22
  br label %318

318:                                              ; preds = %413, %317
  %319 = load i64, ptr %17, align 8, !tbaa !22
  %320 = load i64, ptr %10, align 8, !tbaa !22
  %321 = icmp ult i64 %319, %320
  br i1 %321, label %322, label %416

322:                                              ; preds = %318
  %323 = load ptr, ptr %14, align 8, !tbaa !5
  %324 = load i64, ptr %17, align 8, !tbaa !22
  %325 = getelementptr inbounds i64, ptr %323, i64 %324
  %326 = load i64, ptr %325, align 8, !tbaa !22
  %327 = trunc i64 %326 to i32
  %328 = shl i32 %327, 16
  %329 = load ptr, ptr %3, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %329, i32 0, i32 10
  %331 = load ptr, ptr %3, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %331, i32 0, i32 1
  %333 = load i32, ptr %332, align 4, !tbaa !33
  %334 = zext i32 %333 to i64
  %335 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %330, i64 0, i64 %334
  %336 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %335, i32 0, i32 0
  store i32 %328, ptr %336, align 4, !tbaa !34
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = load i64, ptr %17, align 8, !tbaa !22
  %339 = add i64 %338, 1
  %340 = getelementptr inbounds i64, ptr %337, i64 %339
  %341 = load i64, ptr %340, align 8, !tbaa !22
  %342 = trunc i64 %341 to i32
  %343 = shl i32 %342, 16
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %344, i32 0, i32 10
  %346 = load ptr, ptr %3, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %346, i32 0, i32 1
  %348 = load i32, ptr %347, align 4, !tbaa !33
  %349 = zext i32 %348 to i64
  %350 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %345, i64 0, i64 %349
  %351 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %350, i32 0, i32 1
  store i32 %343, ptr %351, align 4, !tbaa !36
  %352 = load ptr, ptr %3, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %352, i32 0, i32 10
  %354 = load ptr, ptr %3, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %354, i32 0, i32 1
  %356 = load i32, ptr %355, align 4, !tbaa !33
  %357 = zext i32 %356 to i64
  %358 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %353, i64 0, i64 %357
  %359 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %358, i32 0, i32 1
  %360 = load i32, ptr %359, align 4, !tbaa !36
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %361, i32 0, i32 10
  %363 = load ptr, ptr %3, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %363, i32 0, i32 1
  %365 = load i32, ptr %364, align 4, !tbaa !33
  %366 = zext i32 %365 to i64
  %367 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %362, i64 0, i64 %366
  %368 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %367, i32 0, i32 0
  %369 = load i32, ptr %368, align 4, !tbaa !34
  %370 = sub i32 %360, %369
  store i32 %370, ptr %6, align 4, !tbaa !19
  %371 = load i32, ptr %6, align 4, !tbaa !19
  %372 = icmp slt i32 %371, 0
  br i1 %372, label %373, label %377

373:                                              ; preds = %322
  br label %374

374:                                              ; preds = %373
  br label %375

375:                                              ; preds = %374
  br label %376

376:                                              ; preds = %375
  br label %413

377:                                              ; preds = %322
  %378 = load i32, ptr %6, align 4, !tbaa !19
  %379 = load i32, ptr %7, align 4, !tbaa !19
  %380 = icmp sgt i32 %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %377
  %382 = load i32, ptr %6, align 4, !tbaa !19
  store i32 %382, ptr %7, align 4, !tbaa !19
  br label %383

383:                                              ; preds = %381, %377
  %384 = load ptr, ptr %3, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %384, i32 0, i32 10
  %386 = load ptr, ptr %3, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %386, i32 0, i32 1
  %388 = load i32, ptr %387, align 4, !tbaa !33
  %389 = zext i32 %388 to i64
  %390 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %385, i64 0, i64 %389
  %391 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %390, i32 0, i32 4
  store i8 1, ptr %391, align 4, !tbaa !37
  %392 = load ptr, ptr %3, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %392, i32 0, i32 10
  %394 = load ptr, ptr %3, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %394, i32 0, i32 1
  %396 = load i32, ptr %395, align 4, !tbaa !33
  %397 = zext i32 %396 to i64
  %398 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %393, i64 0, i64 %397
  %399 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %398, i32 0, i32 1
  %400 = load i32, ptr %399, align 4, !tbaa !36
  %401 = load ptr, ptr %3, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %401, i32 0, i32 10
  %403 = load ptr, ptr %3, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %403, i32 0, i32 1
  %405 = load i32, ptr %404, align 4, !tbaa !33
  %406 = zext i32 %405 to i64
  %407 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %402, i64 0, i64 %406
  %408 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %407, i32 0, i32 2
  store i32 %400, ptr %408, align 4, !tbaa !38
  %409 = load ptr, ptr %3, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %409, i32 0, i32 1
  %411 = load i32, ptr %410, align 4, !tbaa !33
  %412 = add i32 %411, 1
  store i32 %412, ptr %410, align 4, !tbaa !33
  br label %413

413:                                              ; preds = %383, %376
  %414 = load i64, ptr %17, align 8, !tbaa !22
  %415 = add i64 %414, 2
  store i64 %415, ptr %17, align 8, !tbaa !22
  br label %318, !llvm.loop !41

416:                                              ; preds = %318
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %417, i32 0, i32 0
  %419 = load i32, ptr %418, align 8, !tbaa !21
  %420 = sext i32 %419 to i64
  %421 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %420)
  %422 = trunc i64 %421 to i32
  store i32 %422, ptr %8, align 4, !tbaa !19
  store i64 0, ptr %17, align 8, !tbaa !22
  br label %423

423:                                              ; preds = %593, %416
  %424 = load i64, ptr %17, align 8, !tbaa !22
  %425 = load ptr, ptr %3, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %425, i32 0, i32 1
  %427 = load i32, ptr %426, align 4, !tbaa !33
  %428 = zext i32 %427 to i64
  %429 = icmp ult i64 %424, %428
  br i1 %429, label %430, label %596

430:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  %431 = load ptr, ptr %3, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %431, i32 0, i32 10
  %433 = load i64, ptr %17, align 8, !tbaa !22
  %434 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %432, i64 0, i64 %433
  %435 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %434, i32 0, i32 2
  %436 = load i32, ptr %435, align 4, !tbaa !38
  store i32 %436, ptr %25, align 4, !tbaa !19
  %437 = load ptr, ptr %3, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %437, i32 0, i32 10
  %439 = load i64, ptr %17, align 8, !tbaa !22
  %440 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %438, i64 0, i64 %439
  %441 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %440, i32 0, i32 4
  %442 = load i8, ptr %441, align 4, !tbaa !37
  %443 = icmp ne i8 %442, 0
  br i1 %443, label %444, label %535

444:                                              ; preds = %430
  store i32 2147483647, ptr %22, align 4, !tbaa !19
  store i64 0, ptr %21, align 8, !tbaa !22
  br label %445

445:                                              ; preds = %492, %444
  %446 = load i64, ptr %21, align 8, !tbaa !22
  %447 = load i64, ptr %12, align 8, !tbaa !22
  %448 = icmp ult i64 %446, %447
  br i1 %448, label %449, label %495

449:                                              ; preds = %445
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = load i64, ptr %21, align 8, !tbaa !22
  %452 = add i64 %451, 1
  %453 = getelementptr inbounds i64, ptr %450, i64 %452
  %454 = load i64, ptr %453, align 8, !tbaa !22
  %455 = trunc i64 %454 to i32
  %456 = shl i32 %455, 16
  store i32 %456, ptr %23, align 4, !tbaa !19
  %457 = load i32, ptr %25, align 4, !tbaa !19
  %458 = load i32, ptr %23, align 4, !tbaa !19
  %459 = sub i32 %457, %458
  %460 = icmp slt i32 %459, 0
  br i1 %460, label %461, label %466

461:                                              ; preds = %449
  %462 = load i32, ptr %25, align 4, !tbaa !19
  %463 = load i32, ptr %23, align 4, !tbaa !19
  %464 = sub i32 %462, %463
  %465 = sub i32 0, %464
  br label %470

466:                                              ; preds = %449
  %467 = load i32, ptr %25, align 4, !tbaa !19
  %468 = load i32, ptr %23, align 4, !tbaa !19
  %469 = sub i32 %467, %468
  br label %470

470:                                              ; preds = %466, %461
  %471 = phi i32 [ %465, %461 ], [ %469, %466 ]
  store i32 %471, ptr %24, align 4, !tbaa !19
  %472 = load i32, ptr %24, align 4, !tbaa !19
  %473 = load i32, ptr %22, align 4, !tbaa !19
  %474 = icmp slt i32 %472, %473
  br i1 %474, label %475, label %491

475:                                              ; preds = %470
  %476 = load i32, ptr %24, align 4, !tbaa !19
  %477 = load i32, ptr %8, align 4, !tbaa !19
  %478 = icmp slt i32 %476, %477
  br i1 %478, label %479, label %491

479:                                              ; preds = %475
  %480 = load i32, ptr %23, align 4, !tbaa !19
  %481 = load ptr, ptr %3, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %481, i32 0, i32 10
  %483 = load i64, ptr %17, align 8, !tbaa !22
  %484 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %482, i64 0, i64 %483
  %485 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %484, i32 0, i32 2
  store i32 %480, ptr %485, align 4, !tbaa !38
  %486 = load i32, ptr %24, align 4, !tbaa !19
  store i32 %486, ptr %22, align 4, !tbaa !19
  %487 = load i32, ptr %24, align 4, !tbaa !19
  %488 = icmp eq i32 %487, 0
  br i1 %488, label %489, label %490

489:                                              ; preds = %479
  br label %495

490:                                              ; preds = %479
  br label %491

491:                                              ; preds = %490, %475, %470
  br label %492

492:                                              ; preds = %491
  %493 = load i64, ptr %21, align 8, !tbaa !22
  %494 = add i64 %493, 2
  store i64 %494, ptr %21, align 8, !tbaa !22
  br label %445, !llvm.loop !42

495:                                              ; preds = %489, %445
  %496 = load i64, ptr %11, align 8, !tbaa !22
  %497 = icmp uge i64 %496, 2
  br i1 %497, label %498, label %534

498:                                              ; preds = %495
  %499 = load ptr, ptr %15, align 8, !tbaa !5
  %500 = getelementptr inbounds i64, ptr %499, i64 1
  %501 = load i64, ptr %500, align 8, !tbaa !22
  %502 = trunc i64 %501 to i32
  %503 = shl i32 %502, 16
  store i32 %503, ptr %23, align 4, !tbaa !19
  %504 = load i32, ptr %25, align 4, !tbaa !19
  %505 = load i32, ptr %23, align 4, !tbaa !19
  %506 = sub i32 %504, %505
  %507 = icmp slt i32 %506, 0
  br i1 %507, label %508, label %513

508:                                              ; preds = %498
  %509 = load i32, ptr %25, align 4, !tbaa !19
  %510 = load i32, ptr %23, align 4, !tbaa !19
  %511 = sub i32 %509, %510
  %512 = sub i32 0, %511
  br label %517

513:                                              ; preds = %498
  %514 = load i32, ptr %25, align 4, !tbaa !19
  %515 = load i32, ptr %23, align 4, !tbaa !19
  %516 = sub i32 %514, %515
  br label %517

517:                                              ; preds = %513, %508
  %518 = phi i32 [ %512, %508 ], [ %516, %513 ]
  store i32 %518, ptr %24, align 4, !tbaa !19
  %519 = load i32, ptr %24, align 4, !tbaa !19
  %520 = load i32, ptr %22, align 4, !tbaa !19
  %521 = icmp slt i32 %519, %520
  br i1 %521, label %522, label %533

522:                                              ; preds = %517
  %523 = load i32, ptr %24, align 4, !tbaa !19
  %524 = load i32, ptr %8, align 4, !tbaa !19
  %525 = icmp slt i32 %523, %524
  br i1 %525, label %526, label %533

526:                                              ; preds = %522
  %527 = load i32, ptr %23, align 4, !tbaa !19
  %528 = load ptr, ptr %3, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %528, i32 0, i32 10
  %530 = load i64, ptr %17, align 8, !tbaa !22
  %531 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %529, i64 0, i64 %530
  %532 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %531, i32 0, i32 2
  store i32 %527, ptr %532, align 4, !tbaa !38
  br label %533

533:                                              ; preds = %526, %522, %517
  br label %534

534:                                              ; preds = %533, %495
  br label %592

535:                                              ; preds = %430
  store i32 2147483647, ptr %22, align 4, !tbaa !19
  store i64 2, ptr %21, align 8, !tbaa !22
  br label %536

536:                                              ; preds = %588, %535
  %537 = load i64, ptr %21, align 8, !tbaa !22
  %538 = load i64, ptr %11, align 8, !tbaa !22
  %539 = icmp ult i64 %537, %538
  br i1 %539, label %540, label %591

540:                                              ; preds = %536
  %541 = load ptr, ptr %15, align 8, !tbaa !5
  %542 = load i64, ptr %21, align 8, !tbaa !22
  %543 = getelementptr inbounds i64, ptr %541, i64 %542
  %544 = load i64, ptr %543, align 8, !tbaa !22
  %545 = trunc i64 %544 to i32
  %546 = shl i32 %545, 16
  store i32 %546, ptr %23, align 4, !tbaa !19
  %547 = load ptr, ptr %4, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.CF2_FontRec_, ptr %547, i32 0, i32 26
  %549 = load i32, ptr %548, align 8, !tbaa !27
  %550 = mul nsw i32 2, %549
  %551 = load i32, ptr %23, align 4, !tbaa !19
  %552 = add nsw i32 %551, %550
  store i32 %552, ptr %23, align 4, !tbaa !19
  %553 = load i32, ptr %25, align 4, !tbaa !19
  %554 = load i32, ptr %23, align 4, !tbaa !19
  %555 = sub i32 %553, %554
  %556 = icmp slt i32 %555, 0
  br i1 %556, label %557, label %562

557:                                              ; preds = %540
  %558 = load i32, ptr %25, align 4, !tbaa !19
  %559 = load i32, ptr %23, align 4, !tbaa !19
  %560 = sub i32 %558, %559
  %561 = sub i32 0, %560
  br label %566

562:                                              ; preds = %540
  %563 = load i32, ptr %25, align 4, !tbaa !19
  %564 = load i32, ptr %23, align 4, !tbaa !19
  %565 = sub i32 %563, %564
  br label %566

566:                                              ; preds = %562, %557
  %567 = phi i32 [ %561, %557 ], [ %565, %562 ]
  store i32 %567, ptr %24, align 4, !tbaa !19
  %568 = load i32, ptr %24, align 4, !tbaa !19
  %569 = load i32, ptr %22, align 4, !tbaa !19
  %570 = icmp slt i32 %568, %569
  br i1 %570, label %571, label %587

571:                                              ; preds = %566
  %572 = load i32, ptr %24, align 4, !tbaa !19
  %573 = load i32, ptr %8, align 4, !tbaa !19
  %574 = icmp slt i32 %572, %573
  br i1 %574, label %575, label %587

575:                                              ; preds = %571
  %576 = load i32, ptr %23, align 4, !tbaa !19
  %577 = load ptr, ptr %3, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %577, i32 0, i32 10
  %579 = load i64, ptr %17, align 8, !tbaa !22
  %580 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %578, i64 0, i64 %579
  %581 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %580, i32 0, i32 2
  store i32 %576, ptr %581, align 4, !tbaa !38
  %582 = load i32, ptr %24, align 4, !tbaa !19
  store i32 %582, ptr %22, align 4, !tbaa !19
  %583 = load i32, ptr %24, align 4, !tbaa !19
  %584 = icmp eq i32 %583, 0
  br i1 %584, label %585, label %586

585:                                              ; preds = %575
  br label %591

586:                                              ; preds = %575
  br label %587

587:                                              ; preds = %586, %571, %566
  br label %588

588:                                              ; preds = %587
  %589 = load i64, ptr %21, align 8, !tbaa !22
  %590 = add i64 %589, 2
  store i64 %590, ptr %21, align 8, !tbaa !22
  br label %536, !llvm.loop !43

591:                                              ; preds = %585, %536
  br label %592

592:                                              ; preds = %591, %534
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  br label %593

593:                                              ; preds = %592
  %594 = load i64, ptr %17, align 8, !tbaa !22
  %595 = add i64 %594, 1
  store i64 %595, ptr %17, align 8, !tbaa !22
  br label %423, !llvm.loop !44

596:                                              ; preds = %423
  %597 = load i32, ptr %7, align 4, !tbaa !19
  %598 = icmp sgt i32 %597, 0
  br i1 %598, label %599, label %616

599:                                              ; preds = %596
  %600 = load ptr, ptr %3, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %600, i32 0, i32 4
  %602 = load i32, ptr %601, align 4, !tbaa !45
  %603 = sext i32 %602 to i64
  %604 = load i32, ptr %7, align 4, !tbaa !19
  %605 = sext i32 %604 to i64
  %606 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %605)
  %607 = icmp sgt i64 %603, %606
  br i1 %607, label %608, label %615

608:                                              ; preds = %599
  %609 = load i32, ptr %7, align 4, !tbaa !19
  %610 = sext i32 %609 to i64
  %611 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %610)
  %612 = trunc i64 %611 to i32
  %613 = load ptr, ptr %3, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %613, i32 0, i32 4
  store i32 %612, ptr %614, align 4, !tbaa !45
  br label %615

615:                                              ; preds = %608, %599
  br label %616

616:                                              ; preds = %615, %596
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %617, i32 0, i32 0
  %619 = load i32, ptr %618, align 8, !tbaa !21
  %620 = load ptr, ptr %3, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %620, i32 0, i32 4
  %622 = load i32, ptr %621, align 4, !tbaa !45
  %623 = icmp slt i32 %619, %622
  br i1 %623, label %624, label %648

624:                                              ; preds = %616
  %625 = load ptr, ptr %3, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %625, i32 0, i32 2
  store i8 1, ptr %626, align 8, !tbaa !46
  %627 = load ptr, ptr %3, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %627, i32 0, i32 0
  %629 = load i32, ptr %628, align 8, !tbaa !21
  %630 = sext i32 %629 to i64
  %631 = load ptr, ptr %3, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %631, i32 0, i32 4
  %633 = load i32, ptr %632, align 4, !tbaa !45
  %634 = sext i32 %633 to i64
  %635 = call i64 @FT_MulDiv(i64 noundef 39322, i64 noundef %630, i64 noundef %634)
  %636 = sub nsw i64 39322, %635
  %637 = trunc i64 %636 to i32
  %638 = load ptr, ptr %3, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %638, i32 0, i32 7
  store i32 %637, ptr %639, align 8, !tbaa !47
  %640 = load ptr, ptr %3, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %640, i32 0, i32 7
  %642 = load i32, ptr %641, align 8, !tbaa !47
  %643 = icmp sgt i32 %642, 32767
  br i1 %643, label %644, label %647

644:                                              ; preds = %624
  %645 = load ptr, ptr %3, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %645, i32 0, i32 7
  store i32 32767, ptr %646, align 8, !tbaa !47
  br label %647

647:                                              ; preds = %644, %624
  br label %648

648:                                              ; preds = %647, %616
  %649 = load ptr, ptr %4, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.CF2_FontRec_, ptr %649, i32 0, i32 21
  %651 = load i8, ptr %650, align 2, !tbaa !48
  %652 = icmp ne i8 %651, 0
  br i1 %652, label %653, label %656

653:                                              ; preds = %648
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %654, i32 0, i32 7
  store i32 0, ptr %655, align 8, !tbaa !47
  br label %656

656:                                              ; preds = %653, %648
  store i64 0, ptr %17, align 8, !tbaa !22
  br label %657

657:                                              ; preds = %721, %656
  %658 = load i64, ptr %17, align 8, !tbaa !22
  %659 = load ptr, ptr %3, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %659, i32 0, i32 1
  %661 = load i32, ptr %660, align 4, !tbaa !33
  %662 = zext i32 %661 to i64
  %663 = icmp ult i64 %658, %662
  br i1 %663, label %664, label %724

664:                                              ; preds = %657
  %665 = load ptr, ptr %3, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %665, i32 0, i32 10
  %667 = load i64, ptr %17, align 8, !tbaa !22
  %668 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %666, i64 0, i64 %667
  %669 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %668, i32 0, i32 4
  %670 = load i8, ptr %669, align 4, !tbaa !37
  %671 = icmp ne i8 %670, 0
  br i1 %671, label %672, label %696

672:                                              ; preds = %664
  %673 = load ptr, ptr %3, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %673, i32 0, i32 10
  %675 = load i64, ptr %17, align 8, !tbaa !22
  %676 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %674, i64 0, i64 %675
  %677 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %676, i32 0, i32 2
  %678 = load i32, ptr %677, align 4, !tbaa !38
  %679 = load ptr, ptr %3, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %679, i32 0, i32 0
  %681 = load i32, ptr %680, align 8, !tbaa !21
  %682 = call i32 @FT_MulFix_x86_64(i32 noundef %678, i32 noundef %681)
  %683 = load ptr, ptr %3, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %683, i32 0, i32 7
  %685 = load i32, ptr %684, align 8, !tbaa !47
  %686 = sub nsw i32 %682, %685
  %687 = add i32 %686, 32768
  %688 = zext i32 %687 to i64
  %689 = and i64 %688, 4294901760
  %690 = trunc i64 %689 to i32
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %691, i32 0, i32 10
  %693 = load i64, ptr %17, align 8, !tbaa !22
  %694 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %692, i64 0, i64 %693
  %695 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %694, i32 0, i32 3
  store i32 %690, ptr %695, align 4, !tbaa !49
  br label %720

696:                                              ; preds = %664
  %697 = load ptr, ptr %3, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %697, i32 0, i32 10
  %699 = load i64, ptr %17, align 8, !tbaa !22
  %700 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %698, i64 0, i64 %699
  %701 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %700, i32 0, i32 2
  %702 = load i32, ptr %701, align 4, !tbaa !38
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %703, i32 0, i32 0
  %705 = load i32, ptr %704, align 8, !tbaa !21
  %706 = call i32 @FT_MulFix_x86_64(i32 noundef %702, i32 noundef %705)
  %707 = load ptr, ptr %3, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %707, i32 0, i32 7
  %709 = load i32, ptr %708, align 8, !tbaa !47
  %710 = add nsw i32 %706, %709
  %711 = add i32 %710, 32768
  %712 = zext i32 %711 to i64
  %713 = and i64 %712, 4294901760
  %714 = trunc i64 %713 to i32
  %715 = load ptr, ptr %3, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.CF2_BluesRec_, ptr %715, i32 0, i32 10
  %717 = load i64, ptr %17, align 8, !tbaa !22
  %718 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %716, i64 0, i64 %717
  %719 = getelementptr inbounds %struct.CF2_BlueRec_, ptr %718, i32 0, i32 3
  store i32 %714, ptr %719, align 4, !tbaa !49
  br label %720

720:                                              ; preds = %696, %672
  br label %721

721:                                              ; preds = %720
  %722 = load i64, ptr %17, align 8, !tbaa !22
  %723 = add i64 %722, 1
  store i64 %723, ptr %17, align 8, !tbaa !22
  br label %657, !llvm.loop !50

724:                                              ; preds = %657
  store i32 0, ptr %20, align 4
  br label %725

725:                                              ; preds = %724, %88
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  %726 = load i32, ptr %20, align 4
  switch i32 %726, label %728 [
    i32 0, label %727
    i32 1, label %727
  ]

727:                                              ; preds = %725, %725
  ret void

728:                                              ; preds = %725
  unreachable
}

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

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

declare hidden void @cf2_getBlueMetrics(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare hidden void @cf2_getBlueValues(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden void @cf2_getOtherBlues(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden void @cf2_getFamilyBlues(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden void @cf2_getFamilyOtherBlues(ptr noundef, ptr noundef, ptr noundef) #3

declare hidden i32 @cf2_getLanguageGroup(ptr noundef) #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @FT_MulFix_x86_64(i32 noundef, i32 noundef) #4

declare i64 @FT_DivFix(i64 noundef, i64 noundef) #3

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

declare i64 @FT_MulDiv(i64 noundef, i64 noundef, i64 noundef) #3

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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, !6, i64 240}
!10 = !{!"CF2_FontRec_", !6, i64 0, !11, i64 8, !7, i64 12, !7, i64 13, !11, i64 16, !12, i64 20, !12, i64 44, !12, i64 68, !11, i64 92, !13, i64 96, !11, i64 144, !11, i64 148, !6, i64 152, !11, i64 160, !11, i64 164, !11, i64 168, !14, i64 176, !6, i64 240, !6, i64 248, !7, i64 256, !7, i64 257, !7, i64 258, !7, i64 260, !11, i64 292, !11, i64 296, !11, i64 300, !11, i64 304, !7, i64 308, !16, i64 312, !6, i64 648}
!11 = !{!"int", !7, i64 0}
!12 = !{!"CF2_Matrix_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!13 = !{!"CFF_BlendRec_", !7, i64 0, !7, i64 1, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !11, i64 32, !6, i64 40}
!14 = !{!"CF2_OutlineRec_", !15, i64 0, !6, i64 56}
!15 = !{!"CF2_OutlineCallbacksRec_", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !6, i64 40, !6, i64 48}
!16 = !{!"CF2_BluesRec_", !11, i64 0, !11, i64 4, !7, i64 8, !7, i64 9, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !17, i64 32, !17, i64 64, !7, i64 96}
!17 = !{!"CF2_HintRec_", !11, i64 0, !18, i64 8, !11, i64 16, !11, i64 20, !11, i64 24}
!18 = !{!"long", !7, i64 0}
!19 = !{!11, !11, i64 0}
!20 = !{!10, !11, i64 56}
!21 = !{!16, !11, i64 0}
!22 = !{!18, !18, i64 0}
!23 = !{!16, !11, i64 80}
!24 = !{!16, !11, i64 84}
!25 = !{!16, !11, i64 88}
!26 = !{!16, !11, i64 64}
!27 = !{!10, !11, i64 304}
!28 = !{!16, !11, i64 48}
!29 = !{!16, !11, i64 52}
!30 = !{!16, !11, i64 56}
!31 = !{!16, !11, i64 32}
!32 = !{!16, !7, i64 9}
!33 = !{!16, !11, i64 4}
!34 = !{!35, !11, i64 0}
!35 = !{!"CF2_BlueRec_", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !7, i64 16}
!36 = !{!35, !11, i64 4}
!37 = !{!35, !7, i64 16}
!38 = !{!35, !11, i64 8}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = distinct !{!41, !40}
!42 = distinct !{!42, !40}
!43 = distinct !{!43, !40}
!44 = distinct !{!44, !40}
!45 = !{!16, !11, i64 12}
!46 = !{!16, !7, i64 8}
!47 = !{!16, !11, i64 24}
!48 = !{!10, !7, i64 258}
!49 = !{!35, !11, i64 12}
!50 = distinct !{!50, !40}


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

; Function Attrs: nounwind uwtable
define hidden void @cf2_blues_init(ptr noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca i64, align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = getelementptr inbounds i8, ptr %1, i64 240
  %12 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(336) %0, i8 0, i64 336, i1 false)
  %13 = getelementptr inbounds i8, ptr %1, i64 56
  %14 = load i32, ptr %13, align 4, !tbaa !18
  store i32 %14, ptr %0, align 8, !tbaa !19
  %15 = getelementptr inbounds i8, ptr %0, i64 12
  %16 = getelementptr inbounds i8, ptr %0, i64 16
  %17 = getelementptr inbounds i8, ptr %0, i64 20
  tail call void @cf2_getBlueMetrics(ptr noundef %12, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17) #6
  call void @cf2_getBlueValues(ptr noundef %12, ptr noundef nonnull %3, ptr noundef nonnull %7) #6
  call void @cf2_getOtherBlues(ptr noundef %12, ptr noundef nonnull %4, ptr noundef nonnull %8) #6
  call void @cf2_getFamilyBlues(ptr noundef %12, ptr noundef nonnull %5, ptr noundef nonnull %9) #6
  call void @cf2_getFamilyOtherBlues(ptr noundef %12, ptr noundef nonnull %6, ptr noundef nonnull %10) #6
  %18 = call i32 @cf2_getLanguageGroup(ptr noundef %12) #6
  %19 = icmp eq i32 %18, 1
  %.pre = load i64, ptr %3, align 8, !tbaa !20
  br i1 %19, label %20, label %66

20:                                               ; preds = %2
  switch i64 %.pre, label %.lr.ph [
    i64 0, label %41
    i64 4, label %21
  ]

21:                                               ; preds = %20
  %22 = load ptr, ptr %7, align 8, !tbaa !21
  %23 = load i64, ptr %22, align 8, !tbaa !20
  %24 = trunc i64 %23 to i16
  %25 = icmp slt i16 %24, -120
  br i1 %25, label %26, label %.lr.ph

26:                                               ; preds = %21
  %27 = getelementptr inbounds i8, ptr %22, i64 8
  %28 = load i64, ptr %27, align 8, !tbaa !20
  %29 = trunc i64 %28 to i16
  %30 = icmp slt i16 %29, -120
  br i1 %30, label %31, label %.lr.ph

31:                                               ; preds = %26
  %32 = getelementptr inbounds i8, ptr %22, i64 16
  %33 = load i64, ptr %32, align 8, !tbaa !20
  %34 = trunc i64 %33 to i16
  %35 = icmp sgt i16 %34, 880
  br i1 %35, label %36, label %.lr.ph

36:                                               ; preds = %31
  %37 = getelementptr inbounds i8, ptr %22, i64 24
  %38 = load i64, ptr %37, align 8, !tbaa !20
  %39 = trunc i64 %38 to i16
  %40 = icmp sgt i16 %39, 880
  br i1 %40, label %41, label %.lr.ph

41:                                               ; preds = %20, %36
  %42 = getelementptr inbounds i8, ptr %0, i64 64
  %43 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 -7864321, ptr %43, align 8, !tbaa !22
  %44 = load i32, ptr %0, align 8, !tbaa !19
  %45 = call i32 @FT_MulFix_x86_64(i32 noundef -7864321, i32 noundef %44)
  %46 = add i32 %45, 32768
  %47 = and i32 %46, -65536
  %48 = add nsw i32 %47, -32768
  %49 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %48, ptr %49, align 4, !tbaa !23
  %50 = load i32, ptr %0, align 8, !tbaa !19
  %51 = getelementptr inbounds i8, ptr %0, i64 88
  store i32 %50, ptr %51, align 8, !tbaa !24
  store i32 49, ptr %42, align 8, !tbaa !25
  %52 = getelementptr inbounds i8, ptr %1, i64 304
  %53 = load i32, ptr %52, align 8, !tbaa !26
  %54 = shl nsw i32 %53, 1
  %55 = add nsw i32 %54, 57671681
  %56 = getelementptr inbounds i8, ptr %0, i64 32
  %57 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 %55, ptr %57, align 8, !tbaa !27
  %58 = call i32 @FT_MulFix_x86_64(i32 noundef %55, i32 noundef %50)
  %59 = add i32 %58, 32768
  %60 = and i32 %59, -65536
  %61 = or disjoint i32 %60, 32768
  %62 = getelementptr inbounds i8, ptr %0, i64 52
  store i32 %61, ptr %62, align 4, !tbaa !28
  %63 = load i32, ptr %0, align 8, !tbaa !19
  %64 = getelementptr inbounds i8, ptr %0, i64 56
  store i32 %63, ptr %64, align 8, !tbaa !29
  store i32 50, ptr %56, align 8, !tbaa !30
  %65 = getelementptr inbounds i8, ptr %0, i64 9
  store i8 1, ptr %65, align 1, !tbaa !31
  br label %.loopexit

66:                                               ; preds = %2
  %.not242 = icmp eq i64 %.pre, 0
  br i1 %.not242, label %.preheader216, label %.lr.ph

.lr.ph:                                           ; preds = %20, %21, %26, %31, %36, %66
  %67 = load ptr, ptr %7, align 8, !tbaa !21
  %68 = getelementptr inbounds i8, ptr %0, i64 96
  %69 = getelementptr inbounds i8, ptr %0, i64 4
  %70 = getelementptr inbounds i8, ptr %1, i64 304
  %.promoted = load i32, ptr %69, align 4, !tbaa !32
  %71 = load i64, ptr %67, align 8, !tbaa !20
  %72 = trunc i64 %71 to i32
  %73 = shl i32 %72, 16
  %74 = zext i32 %.promoted to i64
  %75 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %74
  store i32 %73, ptr %75, align 4, !tbaa !33
  %76 = getelementptr inbounds i8, ptr %67, i64 8
  %77 = load i64, ptr %76, align 8, !tbaa !20
  %78 = trunc i64 %77 to i32
  %79 = shl i32 %78, 16
  %80 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %74, i32 1
  store i32 %79, ptr %80, align 4, !tbaa !35
  %81 = sub i32 %79, %73
  %82 = icmp slt i32 %81, 0
  br i1 %82, label %87, label %83

83:                                               ; preds = %.lr.ph
  %84 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %74, i32 4
  store i8 1, ptr %84, align 4
  %85 = getelementptr inbounds i8, ptr %75, i64 8
  store i32 %79, ptr %85, align 4
  %86 = add i32 %.promoted, 1
  store i32 %86, ptr %69, align 4, !tbaa !32
  br label %87

87:                                               ; preds = %83, %.lr.ph
  %88 = phi i32 [ %.promoted, %.lr.ph ], [ %86, %83 ]
  %.2189.peel = phi i32 [ 0, %.lr.ph ], [ %81, %83 ]
  %89 = icmp ugt i64 %.pre, 2
  br i1 %89, label %.peel.next, label %.preheader216

.preheader216:                                    ; preds = %117, %87, %66
  %.0187.lcssa = phi i32 [ 0, %66 ], [ %.2189.peel, %87 ], [ %.2189, %117 ]
  %90 = load i64, ptr %4, align 8, !tbaa !20
  %.not243 = icmp eq i64 %90, 0
  br i1 %.not243, label %._crit_edge, label %.lr.ph221

.lr.ph221:                                        ; preds = %.preheader216
  %91 = load ptr, ptr %8, align 8, !tbaa !21
  %92 = getelementptr inbounds i8, ptr %0, i64 96
  %93 = getelementptr inbounds i8, ptr %0, i64 4
  %.promoted223 = load i32, ptr %93, align 4, !tbaa !32
  br label %121

.peel.next:                                       ; preds = %87, %117
  %94 = phi i32 [ %118, %117 ], [ %88, %87 ]
  %.0187218 = phi i32 [ %.2189, %117 ], [ %.2189.peel, %87 ]
  %.0192217 = phi i64 [ %119, %117 ], [ 2, %87 ]
  %95 = getelementptr inbounds i64, ptr %67, i64 %.0192217
  %96 = load i64, ptr %95, align 8, !tbaa !20
  %97 = trunc i64 %96 to i32
  %98 = shl i32 %97, 16
  %99 = zext i32 %94 to i64
  %100 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %99
  store i32 %98, ptr %100, align 4, !tbaa !33
  %101 = or disjoint i64 %.0192217, 1
  %102 = getelementptr inbounds i64, ptr %67, i64 %101
  %103 = load i64, ptr %102, align 8, !tbaa !20
  %104 = trunc i64 %103 to i32
  %105 = shl i32 %104, 16
  %106 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %99, i32 1
  store i32 %105, ptr %106, align 4, !tbaa !35
  %107 = sub i32 %105, %98
  %108 = icmp slt i32 %107, 0
  br i1 %108, label %117, label %109

109:                                              ; preds = %.peel.next
  %spec.select = call i32 @llvm.smax.i32(i32 %107, i32 %.0187218)
  %110 = load i32, ptr %70, align 8, !tbaa !26
  %111 = shl nsw i32 %110, 1
  %112 = add nsw i32 %111, %105
  store i32 %112, ptr %106, align 4, !tbaa !35
  %113 = add nsw i32 %111, %98
  store i32 %113, ptr %100, align 4, !tbaa !33
  %114 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %68, i64 0, i64 %99, i32 4
  store i8 0, ptr %114, align 4
  %115 = getelementptr inbounds i8, ptr %100, i64 8
  store i32 %113, ptr %115, align 4
  %116 = add i32 %94, 1
  store i32 %116, ptr %69, align 4, !tbaa !32
  br label %117

117:                                              ; preds = %.peel.next, %109
  %118 = phi i32 [ %94, %.peel.next ], [ %116, %109 ]
  %.2189 = phi i32 [ %.0187218, %.peel.next ], [ %spec.select, %109 ]
  %119 = add nuw i64 %.0192217, 2
  %120 = icmp ult i64 %119, %.pre
  br i1 %120, label %.peel.next, label %.preheader216, !llvm.loop !36

121:                                              ; preds = %.lr.ph221, %141
  %122 = phi i32 [ %.promoted223, %.lr.ph221 ], [ %142, %141 ]
  %.3190220 = phi i32 [ %.0187.lcssa, %.lr.ph221 ], [ %.5, %141 ]
  %.1193219 = phi i64 [ 0, %.lr.ph221 ], [ %143, %141 ]
  %123 = getelementptr inbounds i64, ptr %91, i64 %.1193219
  %124 = load i64, ptr %123, align 8, !tbaa !20
  %125 = trunc i64 %124 to i32
  %126 = shl i32 %125, 16
  %127 = zext i32 %122 to i64
  %128 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %92, i64 0, i64 %127
  store i32 %126, ptr %128, align 4, !tbaa !33
  %129 = or disjoint i64 %.1193219, 1
  %130 = getelementptr inbounds i64, ptr %91, i64 %129
  %131 = load i64, ptr %130, align 8, !tbaa !20
  %132 = trunc i64 %131 to i32
  %133 = shl i32 %132, 16
  %134 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %92, i64 0, i64 %127, i32 1
  store i32 %133, ptr %134, align 4, !tbaa !35
  %135 = sub i32 %133, %126
  %136 = icmp slt i32 %135, 0
  br i1 %136, label %141, label %137

137:                                              ; preds = %121
  %spec.select211 = call i32 @llvm.smax.i32(i32 %135, i32 %.3190220)
  %138 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %92, i64 0, i64 %127, i32 4
  store i8 1, ptr %138, align 4, !tbaa !39
  %139 = getelementptr inbounds i8, ptr %128, i64 8
  store i32 %133, ptr %139, align 4, !tbaa !40
  %140 = add i32 %122, 1
  store i32 %140, ptr %93, align 4, !tbaa !32
  br label %141

141:                                              ; preds = %121, %137
  %142 = phi i32 [ %122, %121 ], [ %140, %137 ]
  %.5 = phi i32 [ %.3190220, %121 ], [ %spec.select211, %137 ]
  %143 = add nuw i64 %.1193219, 2
  %144 = icmp ult i64 %143, %90
  br i1 %144, label %121, label %._crit_edge, !llvm.loop !41

._crit_edge:                                      ; preds = %141, %.preheader216
  %.3190.lcssa = phi i32 [ %.0187.lcssa, %.preheader216 ], [ %.5, %141 ]
  %145 = load i32, ptr %0, align 8, !tbaa !19
  %146 = sext i32 %145 to i64
  %147 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %146) #6
  %148 = trunc i64 %147 to i32
  %149 = getelementptr inbounds i8, ptr %0, i64 4
  %150 = load i32, ptr %149, align 4, !tbaa !32
  %151 = zext i32 %150 to i64
  %.not244 = icmp eq i32 %150, 0
  br i1 %.not244, label %._crit_edge238, label %.lr.ph237

.lr.ph237:                                        ; preds = %._crit_edge
  %152 = getelementptr inbounds i8, ptr %0, i64 96
  %153 = load i64, ptr %6, align 8
  %.not245 = icmp eq i64 %153, 0
  %154 = load ptr, ptr %10, align 8
  %155 = load i64, ptr %5, align 8
  %156 = icmp ugt i64 %155, 1
  %157 = load ptr, ptr %9, align 8
  %158 = getelementptr inbounds i8, ptr %157, i64 8
  %159 = icmp ugt i64 %155, 2
  %160 = getelementptr inbounds i8, ptr %1, i64 304
  br label %161

161:                                              ; preds = %.lr.ph237, %.loopexit214
  %.2194235 = phi i64 [ 0, %.lr.ph237 ], [ %207, %.loopexit214 ]
  %162 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %152, i64 0, i64 %.2194235
  %163 = getelementptr inbounds i8, ptr %162, i64 8
  %164 = load i32, ptr %163, align 4, !tbaa !40
  %165 = getelementptr inbounds i8, ptr %162, i64 16
  %166 = load i8, ptr %165, align 4, !tbaa !39
  %.not209 = icmp eq i8 %166, 0
  br i1 %.not209, label %.preheader, label %.preheader215

.preheader215:                                    ; preds = %161
  br i1 %.not245, label %._crit_edge227, label %.lr.ph226

.preheader:                                       ; preds = %161
  br i1 %159, label %.lr.ph233, label %.loopexit214

.lr.ph233:                                        ; preds = %.preheader
  %167 = load i32, ptr %160, align 8, !tbaa !26
  %168 = shl nsw i32 %167, 1
  br label %192

.lr.ph226:                                        ; preds = %.preheader215, %180
  %.0225 = phi i32 [ %.1, %180 ], [ 2147483647, %.preheader215 ]
  %.0185224 = phi i64 [ %181, %180 ], [ 0, %.preheader215 ]
  %169 = or disjoint i64 %.0185224, 1
  %170 = getelementptr inbounds i64, ptr %154, i64 %169
  %171 = load i64, ptr %170, align 8, !tbaa !20
  %172 = trunc i64 %171 to i32
  %173 = shl i32 %172, 16
  %174 = sub i32 %164, %173
  %175 = call i32 @llvm.abs.i32(i32 %174, i1 false)
  %176 = icmp slt i32 %175, %.0225
  %177 = icmp slt i32 %175, %148
  %or.cond = select i1 %176, i1 %177, i1 false
  br i1 %or.cond, label %178, label %180

178:                                              ; preds = %.lr.ph226
  store i32 %173, ptr %163, align 4, !tbaa !40
  %179 = icmp eq i32 %164, %173
  br i1 %179, label %._crit_edge227, label %180

180:                                              ; preds = %.lr.ph226, %178
  %.1 = phi i32 [ %175, %178 ], [ %.0225, %.lr.ph226 ]
  %181 = add i64 %.0185224, 2
  %182 = icmp ult i64 %181, %153
  br i1 %182, label %.lr.ph226, label %._crit_edge227, !llvm.loop !42

._crit_edge227:                                   ; preds = %180, %178, %.preheader215
  %.2 = phi i32 [ 2147483647, %.preheader215 ], [ 0, %178 ], [ %.1, %180 ]
  br i1 %156, label %183, label %.loopexit214

183:                                              ; preds = %._crit_edge227
  %184 = load i64, ptr %158, align 8, !tbaa !20
  %185 = trunc i64 %184 to i32
  %186 = shl i32 %185, 16
  %187 = sub i32 %164, %186
  %188 = call i32 @llvm.abs.i32(i32 %187, i1 false)
  %189 = icmp slt i32 %188, %.2
  %190 = icmp slt i32 %188, %148
  %or.cond212 = select i1 %189, i1 %190, i1 false
  br i1 %or.cond212, label %191, label %.loopexit214

191:                                              ; preds = %183
  store i32 %186, ptr %163, align 4, !tbaa !40
  br label %.loopexit214

192:                                              ; preds = %.lr.ph233, %204
  %.3232 = phi i32 [ 2147483647, %.lr.ph233 ], [ %.4, %204 ]
  %.1186231 = phi i64 [ 2, %.lr.ph233 ], [ %205, %204 ]
  %193 = getelementptr inbounds i64, ptr %157, i64 %.1186231
  %194 = load i64, ptr %193, align 8, !tbaa !20
  %195 = trunc i64 %194 to i32
  %196 = shl i32 %195, 16
  %197 = add nsw i32 %196, %168
  %198 = sub i32 %164, %197
  %199 = call i32 @llvm.abs.i32(i32 %198, i1 false)
  %200 = icmp slt i32 %199, %.3232
  %201 = icmp slt i32 %199, %148
  %or.cond213 = select i1 %200, i1 %201, i1 false
  br i1 %or.cond213, label %202, label %204

202:                                              ; preds = %192
  store i32 %197, ptr %163, align 4, !tbaa !40
  %203 = icmp eq i32 %164, %197
  br i1 %203, label %.loopexit214, label %204

204:                                              ; preds = %192, %202
  %.4 = phi i32 [ %199, %202 ], [ %.3232, %192 ]
  %205 = add i64 %.1186231, 2
  %206 = icmp ult i64 %205, %155
  br i1 %206, label %192, label %.loopexit214, !llvm.loop !43

.loopexit214:                                     ; preds = %202, %204, %.preheader, %._crit_edge227, %191, %183
  %207 = add nuw nsw i64 %.2194235, 1
  %exitcond.not = icmp eq i64 %207, %151
  br i1 %exitcond.not, label %._crit_edge238, label %161, !llvm.loop !44

._crit_edge238:                                   ; preds = %.loopexit214, %._crit_edge
  %208 = icmp sgt i32 %.3190.lcssa, 0
  %.pre254 = load i32, ptr %15, align 4, !tbaa !45
  br i1 %208, label %209, label %217

209:                                              ; preds = %._crit_edge238
  %210 = sext i32 %.pre254 to i64
  %211 = zext nneg i32 %.3190.lcssa to i64
  %212 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %211) #6
  %213 = icmp slt i64 %212, %210
  br i1 %213, label %214, label %._crit_edge252

._crit_edge252:                                   ; preds = %209
  %.pre253 = load i32, ptr %15, align 4, !tbaa !45
  br label %217

214:                                              ; preds = %209
  %215 = call i64 @FT_DivFix(i64 noundef 65536, i64 noundef %211) #6
  %216 = trunc i64 %215 to i32
  store i32 %216, ptr %15, align 4, !tbaa !45
  br label %217

217:                                              ; preds = %._crit_edge252, %214, %._crit_edge238
  %218 = phi i32 [ %.pre253, %._crit_edge252 ], [ %216, %214 ], [ %.pre254, %._crit_edge238 ]
  %219 = load i32, ptr %0, align 8, !tbaa !19
  %220 = icmp slt i32 %219, %218
  br i1 %220, label %221, label %229

221:                                              ; preds = %217
  %222 = getelementptr inbounds i8, ptr %0, i64 8
  store i8 1, ptr %222, align 8, !tbaa !46
  %223 = sext i32 %219 to i64
  %224 = sext i32 %218 to i64
  %225 = call i64 @FT_MulDiv(i64 noundef 39322, i64 noundef %223, i64 noundef %224) #6
  %226 = trunc i64 %225 to i32
  %227 = sub i32 39322, %226
  %228 = getelementptr inbounds i8, ptr %0, i64 24
  %spec.store.select = call i32 @llvm.smin.i32(i32 %227, i32 32767)
  store i32 %spec.store.select, ptr %228, align 8
  br label %229

229:                                              ; preds = %221, %217
  %230 = getelementptr inbounds i8, ptr %1, i64 258
  %231 = load i8, ptr %230, align 2, !tbaa !47
  %.not = icmp eq i8 %231, 0
  br i1 %.not, label %234, label %232

232:                                              ; preds = %229
  %233 = getelementptr inbounds i8, ptr %0, i64 24
  store i32 0, ptr %233, align 8, !tbaa !48
  br label %234

234:                                              ; preds = %232, %229
  %235 = load i32, ptr %149, align 4, !tbaa !32
  %.not246 = icmp eq i32 %235, 0
  br i1 %.not246, label %.loopexit, label %.lr.ph241

.lr.ph241:                                        ; preds = %234
  %236 = getelementptr inbounds i8, ptr %0, i64 96
  %237 = getelementptr inbounds i8, ptr %0, i64 24
  br label %238

238:                                              ; preds = %.lr.ph241, %238
  %.3195239 = phi i64 [ 0, %.lr.ph241 ], [ %250, %238 ]
  %239 = getelementptr inbounds [12 x %struct.CF2_BlueRec_], ptr %236, i64 0, i64 %.3195239
  %240 = getelementptr inbounds i8, ptr %239, i64 16
  %241 = load i8, ptr %240, align 4, !tbaa !39
  %.not208 = icmp eq i8 %241, 0
  %242 = getelementptr inbounds i8, ptr %239, i64 8
  %243 = load i32, ptr %242, align 4, !tbaa !40
  %244 = load i32, ptr %0, align 8, !tbaa !19
  %245 = call i32 @FT_MulFix_x86_64(i32 noundef %243, i32 noundef %244)
  %246 = load i32, ptr %237, align 8, !tbaa !48
  %247 = add i32 %245, 32768
  %248 = sub i32 0, %246
  %.sink251.in.p = select i1 %.not208, i32 %246, i32 %248
  %.sink251.in = add i32 %247, %.sink251.in.p
  %.sink251 = and i32 %.sink251.in, -65536
  %249 = getelementptr inbounds i8, ptr %239, i64 12
  store i32 %.sink251, ptr %249, align 4
  %250 = add nuw nsw i64 %.3195239, 1
  %251 = load i32, ptr %149, align 4, !tbaa !32
  %252 = zext i32 %251 to i64
  %253 = icmp ult i64 %250, %252
  br i1 %253, label %238, label %.loopexit, !llvm.loop !49

.loopexit:                                        ; preds = %238, %234, %41
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  ret void
}

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

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

declare hidden void @cf2_getBlueMetrics(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare hidden void @cf2_getBlueValues(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare hidden void @cf2_getOtherBlues(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare hidden void @cf2_getFamilyBlues(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare hidden void @cf2_getFamilyOtherBlues(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare hidden i32 @cf2_getLanguageGroup(ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden i32 @FT_MulFix_x86_64(i32 noundef, i32 noundef) local_unnamed_addr #4

declare i64 @FT_DivFix(i64 noundef, i64 noundef) local_unnamed_addr #3

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

declare i64 @FT_MulDiv(i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 240}
!6 = !{!"CF2_FontRec_", !7, i64 0, !10, i64 8, !8, i64 12, !8, i64 13, !10, i64 16, !11, i64 20, !11, i64 44, !11, i64 68, !10, i64 92, !12, i64 96, !10, i64 144, !10, i64 148, !7, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !13, i64 176, !7, i64 240, !7, i64 248, !8, i64 256, !8, i64 257, !8, i64 258, !8, i64 260, !10, i64 292, !10, i64 296, !10, i64 300, !10, i64 304, !8, i64 308, !15, i64 312, !7, i64 648}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"CF2_Matrix_", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!12 = !{!"CFF_BlendRec_", !8, i64 0, !8, i64 1, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !7, i64 40}
!13 = !{!"CF2_OutlineRec_", !14, i64 0, !7, i64 56}
!14 = !{!"CF2_OutlineCallbacksRec_", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48}
!15 = !{!"CF2_BluesRec_", !10, i64 0, !10, i64 4, !8, i64 8, !8, i64 9, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !16, i64 32, !16, i64 64, !8, i64 96}
!16 = !{!"CF2_HintRec_", !10, i64 0, !17, i64 8, !10, i64 16, !10, i64 20, !10, i64 24}
!17 = !{!"long", !8, i64 0}
!18 = !{!6, !10, i64 56}
!19 = !{!15, !10, i64 0}
!20 = !{!17, !17, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!15, !10, i64 80}
!23 = !{!15, !10, i64 84}
!24 = !{!15, !10, i64 88}
!25 = !{!15, !10, i64 64}
!26 = !{!6, !10, i64 304}
!27 = !{!15, !10, i64 48}
!28 = !{!15, !10, i64 52}
!29 = !{!15, !10, i64 56}
!30 = !{!15, !10, i64 32}
!31 = !{!15, !8, i64 9}
!32 = !{!15, !10, i64 4}
!33 = !{!34, !10, i64 0}
!34 = !{!"CF2_BlueRec_", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !8, i64 16}
!35 = !{!34, !10, i64 4}
!36 = distinct !{!36, !37, !38}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!"llvm.loop.peeled.count", i32 1}
!39 = !{!34, !8, i64 16}
!40 = !{!34, !10, i64 8}
!41 = distinct !{!41, !37}
!42 = distinct !{!42, !37}
!43 = distinct !{!43, !37}
!44 = distinct !{!44, !37}
!45 = !{!15, !10, i64 12}
!46 = !{!15, !8, i64 8}
!47 = !{!6, !8, i64 258}
!48 = !{!15, !10, i64 24}
!49 = distinct !{!49, !37}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass