; LLVM IR from caryll/otfcc :: lib/table/otl/subtables (gsub-ligature)

; 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.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.subtable_gsub_ligature = type { i64, i64, ptr }
%struct.otl_GsubLigatureEntry = type { ptr, %struct.otfcc_Handle }
%struct.otl_Coverage = type { i16, i32, ptr }
%struct.ligature_aggerator = type { i32, %struct.UT_hash_handle }
%struct.UT_hash_handle = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.UT_hash_table = type { ptr, i32, i32, i32, ptr, i64, i32, i32, i32, i32, i32 }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otl_iCoverage = external constant %struct.__otfcc_ICoverage, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

; 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: nounwind uwtable
define dso_local ptr @otfcc_build_gsub_ligature_subtable(ptr noundef %0, i32 noundef %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i16, align 2
  %10 = alloca i16, align 2
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %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 i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %struct.otfcc_Handle, align 8
  %44 = alloca ptr, align 8
  %45 = alloca i16, align 2
  %46 = alloca i16, align 2
  %47 = alloca ptr, align 8
  %48 = alloca i16, align 2
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i16, align 2
  %52 = alloca ptr, align 8
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #9
  %55 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %55, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #9
  store ptr null, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 2, ptr %9) #9
  %56 = load ptr, ptr %5, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %56, i32 0, i32 0
  %58 = load i64, ptr %57, align 8, !tbaa !11
  %59 = trunc i64 %58 to i16
  store i16 %59, ptr %9, align 2, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 2, ptr %10) #9
  store i16 0, ptr %10, align 2, !tbaa !14
  br label %60

60:                                               ; preds = %1409, %2
  %61 = load i16, ptr %10, align 2, !tbaa !14
  %62 = zext i16 %61 to i32
  %63 = load i16, ptr %9, align 2, !tbaa !14
  %64 = zext i16 %63 to i32
  %65 = icmp slt i32 %62, %64
  br i1 %65, label %67, label %66

66:                                               ; preds = %60
  call void @llvm.lifetime.end.p0(i64 2, ptr %10) #9
  br label %1412

67:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %68, i32 0, i32 2
  %70 = load ptr, ptr %69, align 8, !tbaa !16
  %71 = load i16, ptr %10, align 2, !tbaa !14
  %72 = zext i16 %71 to i64
  %73 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %70, i64 %72
  %74 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %73, i32 0, i32 0
  %75 = load ptr, ptr %74, align 8, !tbaa !17
  %76 = getelementptr inbounds %struct.otl_Coverage, ptr %75, i32 0, i32 2
  %77 = load ptr, ptr %76, align 8, !tbaa !20
  %78 = getelementptr inbounds %struct.otfcc_Handle, ptr %77, i64 0
  %79 = getelementptr inbounds %struct.otfcc_Handle, ptr %78, i32 0, i32 1
  %80 = load i16, ptr %79, align 4, !tbaa !22
  %81 = zext i16 %80 to i32
  store i32 %81, ptr %11, align 4, !tbaa !9
  br label %82

82:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  br label %83

83:                                               ; preds = %82
  br label %84

84:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  store ptr %11, ptr %16, align 8, !tbaa !5
  store i32 -17973521, ptr %12, align 4, !tbaa !9
  store i32 -1640531527, ptr %14, align 4, !tbaa !9
  store i32 -1640531527, ptr %13, align 4, !tbaa !9
  store i32 4, ptr %15, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %253, %84
  %86 = load i32, ptr %15, align 4, !tbaa !9
  %87 = icmp uge i32 %86, 12
  br i1 %87, label %88, label %258

88:                                               ; preds = %85
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %89, i64 0
  %91 = load i8, ptr %90, align 1, !tbaa !23
  %92 = zext i8 %91 to i32
  %93 = load ptr, ptr %16, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %93, i64 1
  %95 = load i8, ptr %94, align 1, !tbaa !23
  %96 = zext i8 %95 to i32
  %97 = shl i32 %96, 8
  %98 = add i32 %92, %97
  %99 = load ptr, ptr %16, align 8, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %99, i64 2
  %101 = load i8, ptr %100, align 1, !tbaa !23
  %102 = zext i8 %101 to i32
  %103 = shl i32 %102, 16
  %104 = add i32 %98, %103
  %105 = load ptr, ptr %16, align 8, !tbaa !5
  %106 = getelementptr inbounds i8, ptr %105, i64 3
  %107 = load i8, ptr %106, align 1, !tbaa !23
  %108 = zext i8 %107 to i32
  %109 = shl i32 %108, 24
  %110 = add i32 %104, %109
  %111 = load i32, ptr %13, align 4, !tbaa !9
  %112 = add i32 %111, %110
  store i32 %112, ptr %13, align 4, !tbaa !9
  %113 = load ptr, ptr %16, align 8, !tbaa !5
  %114 = getelementptr inbounds i8, ptr %113, i64 4
  %115 = load i8, ptr %114, align 1, !tbaa !23
  %116 = zext i8 %115 to i32
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 5
  %119 = load i8, ptr %118, align 1, !tbaa !23
  %120 = zext i8 %119 to i32
  %121 = shl i32 %120, 8
  %122 = add i32 %116, %121
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = getelementptr inbounds i8, ptr %123, i64 6
  %125 = load i8, ptr %124, align 1, !tbaa !23
  %126 = zext i8 %125 to i32
  %127 = shl i32 %126, 16
  %128 = add i32 %122, %127
  %129 = load ptr, ptr %16, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 7
  %131 = load i8, ptr %130, align 1, !tbaa !23
  %132 = zext i8 %131 to i32
  %133 = shl i32 %132, 24
  %134 = add i32 %128, %133
  %135 = load i32, ptr %14, align 4, !tbaa !9
  %136 = add i32 %135, %134
  store i32 %136, ptr %14, align 4, !tbaa !9
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 8
  %139 = load i8, ptr %138, align 1, !tbaa !23
  %140 = zext i8 %139 to i32
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 9
  %143 = load i8, ptr %142, align 1, !tbaa !23
  %144 = zext i8 %143 to i32
  %145 = shl i32 %144, 8
  %146 = add i32 %140, %145
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i64 10
  %149 = load i8, ptr %148, align 1, !tbaa !23
  %150 = zext i8 %149 to i32
  %151 = shl i32 %150, 16
  %152 = add i32 %146, %151
  %153 = load ptr, ptr %16, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 11
  %155 = load i8, ptr %154, align 1, !tbaa !23
  %156 = zext i8 %155 to i32
  %157 = shl i32 %156, 24
  %158 = add i32 %152, %157
  %159 = load i32, ptr %12, align 4, !tbaa !9
  %160 = add i32 %159, %158
  store i32 %160, ptr %12, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %88
  %162 = load i32, ptr %14, align 4, !tbaa !9
  %163 = load i32, ptr %13, align 4, !tbaa !9
  %164 = sub i32 %163, %162
  store i32 %164, ptr %13, align 4, !tbaa !9
  %165 = load i32, ptr %12, align 4, !tbaa !9
  %166 = load i32, ptr %13, align 4, !tbaa !9
  %167 = sub i32 %166, %165
  store i32 %167, ptr %13, align 4, !tbaa !9
  %168 = load i32, ptr %12, align 4, !tbaa !9
  %169 = lshr i32 %168, 13
  %170 = load i32, ptr %13, align 4, !tbaa !9
  %171 = xor i32 %170, %169
  store i32 %171, ptr %13, align 4, !tbaa !9
  %172 = load i32, ptr %12, align 4, !tbaa !9
  %173 = load i32, ptr %14, align 4, !tbaa !9
  %174 = sub i32 %173, %172
  store i32 %174, ptr %14, align 4, !tbaa !9
  %175 = load i32, ptr %13, align 4, !tbaa !9
  %176 = load i32, ptr %14, align 4, !tbaa !9
  %177 = sub i32 %176, %175
  store i32 %177, ptr %14, align 4, !tbaa !9
  %178 = load i32, ptr %13, align 4, !tbaa !9
  %179 = shl i32 %178, 8
  %180 = load i32, ptr %14, align 4, !tbaa !9
  %181 = xor i32 %180, %179
  store i32 %181, ptr %14, align 4, !tbaa !9
  %182 = load i32, ptr %13, align 4, !tbaa !9
  %183 = load i32, ptr %12, align 4, !tbaa !9
  %184 = sub i32 %183, %182
  store i32 %184, ptr %12, align 4, !tbaa !9
  %185 = load i32, ptr %14, align 4, !tbaa !9
  %186 = load i32, ptr %12, align 4, !tbaa !9
  %187 = sub i32 %186, %185
  store i32 %187, ptr %12, align 4, !tbaa !9
  %188 = load i32, ptr %14, align 4, !tbaa !9
  %189 = lshr i32 %188, 13
  %190 = load i32, ptr %12, align 4, !tbaa !9
  %191 = xor i32 %190, %189
  store i32 %191, ptr %12, align 4, !tbaa !9
  %192 = load i32, ptr %14, align 4, !tbaa !9
  %193 = load i32, ptr %13, align 4, !tbaa !9
  %194 = sub i32 %193, %192
  store i32 %194, ptr %13, align 4, !tbaa !9
  %195 = load i32, ptr %12, align 4, !tbaa !9
  %196 = load i32, ptr %13, align 4, !tbaa !9
  %197 = sub i32 %196, %195
  store i32 %197, ptr %13, align 4, !tbaa !9
  %198 = load i32, ptr %12, align 4, !tbaa !9
  %199 = lshr i32 %198, 12
  %200 = load i32, ptr %13, align 4, !tbaa !9
  %201 = xor i32 %200, %199
  store i32 %201, ptr %13, align 4, !tbaa !9
  %202 = load i32, ptr %12, align 4, !tbaa !9
  %203 = load i32, ptr %14, align 4, !tbaa !9
  %204 = sub i32 %203, %202
  store i32 %204, ptr %14, align 4, !tbaa !9
  %205 = load i32, ptr %13, align 4, !tbaa !9
  %206 = load i32, ptr %14, align 4, !tbaa !9
  %207 = sub i32 %206, %205
  store i32 %207, ptr %14, align 4, !tbaa !9
  %208 = load i32, ptr %13, align 4, !tbaa !9
  %209 = shl i32 %208, 16
  %210 = load i32, ptr %14, align 4, !tbaa !9
  %211 = xor i32 %210, %209
  store i32 %211, ptr %14, align 4, !tbaa !9
  %212 = load i32, ptr %13, align 4, !tbaa !9
  %213 = load i32, ptr %12, align 4, !tbaa !9
  %214 = sub i32 %213, %212
  store i32 %214, ptr %12, align 4, !tbaa !9
  %215 = load i32, ptr %14, align 4, !tbaa !9
  %216 = load i32, ptr %12, align 4, !tbaa !9
  %217 = sub i32 %216, %215
  store i32 %217, ptr %12, align 4, !tbaa !9
  %218 = load i32, ptr %14, align 4, !tbaa !9
  %219 = lshr i32 %218, 5
  %220 = load i32, ptr %12, align 4, !tbaa !9
  %221 = xor i32 %220, %219
  store i32 %221, ptr %12, align 4, !tbaa !9
  %222 = load i32, ptr %14, align 4, !tbaa !9
  %223 = load i32, ptr %13, align 4, !tbaa !9
  %224 = sub i32 %223, %222
  store i32 %224, ptr %13, align 4, !tbaa !9
  %225 = load i32, ptr %12, align 4, !tbaa !9
  %226 = load i32, ptr %13, align 4, !tbaa !9
  %227 = sub i32 %226, %225
  store i32 %227, ptr %13, align 4, !tbaa !9
  %228 = load i32, ptr %12, align 4, !tbaa !9
  %229 = lshr i32 %228, 3
  %230 = load i32, ptr %13, align 4, !tbaa !9
  %231 = xor i32 %230, %229
  store i32 %231, ptr %13, align 4, !tbaa !9
  %232 = load i32, ptr %12, align 4, !tbaa !9
  %233 = load i32, ptr %14, align 4, !tbaa !9
  %234 = sub i32 %233, %232
  store i32 %234, ptr %14, align 4, !tbaa !9
  %235 = load i32, ptr %13, align 4, !tbaa !9
  %236 = load i32, ptr %14, align 4, !tbaa !9
  %237 = sub i32 %236, %235
  store i32 %237, ptr %14, align 4, !tbaa !9
  %238 = load i32, ptr %13, align 4, !tbaa !9
  %239 = shl i32 %238, 10
  %240 = load i32, ptr %14, align 4, !tbaa !9
  %241 = xor i32 %240, %239
  store i32 %241, ptr %14, align 4, !tbaa !9
  %242 = load i32, ptr %13, align 4, !tbaa !9
  %243 = load i32, ptr %12, align 4, !tbaa !9
  %244 = sub i32 %243, %242
  store i32 %244, ptr %12, align 4, !tbaa !9
  %245 = load i32, ptr %14, align 4, !tbaa !9
  %246 = load i32, ptr %12, align 4, !tbaa !9
  %247 = sub i32 %246, %245
  store i32 %247, ptr %12, align 4, !tbaa !9
  %248 = load i32, ptr %14, align 4, !tbaa !9
  %249 = lshr i32 %248, 15
  %250 = load i32, ptr %12, align 4, !tbaa !9
  %251 = xor i32 %250, %249
  store i32 %251, ptr %12, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %161
  br label %253

253:                                              ; preds = %252
  %254 = load ptr, ptr %16, align 8, !tbaa !5
  %255 = getelementptr inbounds i8, ptr %254, i64 12
  store ptr %255, ptr %16, align 8, !tbaa !5
  %256 = load i32, ptr %15, align 4, !tbaa !9
  %257 = sub i32 %256, 12
  store i32 %257, ptr %15, align 4, !tbaa !9
  br label %85, !llvm.loop !24

258:                                              ; preds = %85
  %259 = load i32, ptr %12, align 4, !tbaa !9
  %260 = add i32 %259, 4
  store i32 %260, ptr %12, align 4, !tbaa !9
  %261 = load i32, ptr %15, align 4, !tbaa !9
  switch i32 %261, label %348 [
    i32 11, label %262
    i32 10, label %270
    i32 9, label %278
    i32 8, label %286
    i32 7, label %294
    i32 6, label %302
    i32 5, label %310
    i32 4, label %317
    i32 3, label %325
    i32 2, label %333
    i32 1, label %341
  ]

262:                                              ; preds = %258
  %263 = load ptr, ptr %16, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i64 10
  %265 = load i8, ptr %264, align 1, !tbaa !23
  %266 = zext i8 %265 to i32
  %267 = shl i32 %266, 24
  %268 = load i32, ptr %12, align 4, !tbaa !9
  %269 = add i32 %268, %267
  store i32 %269, ptr %12, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %262, %258
  %271 = load ptr, ptr %16, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 9
  %273 = load i8, ptr %272, align 1, !tbaa !23
  %274 = zext i8 %273 to i32
  %275 = shl i32 %274, 16
  %276 = load i32, ptr %12, align 4, !tbaa !9
  %277 = add i32 %276, %275
  store i32 %277, ptr %12, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %270, %258
  %279 = load ptr, ptr %16, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i64 8
  %281 = load i8, ptr %280, align 1, !tbaa !23
  %282 = zext i8 %281 to i32
  %283 = shl i32 %282, 8
  %284 = load i32, ptr %12, align 4, !tbaa !9
  %285 = add i32 %284, %283
  store i32 %285, ptr %12, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %278, %258
  %287 = load ptr, ptr %16, align 8, !tbaa !5
  %288 = getelementptr inbounds i8, ptr %287, i64 7
  %289 = load i8, ptr %288, align 1, !tbaa !23
  %290 = zext i8 %289 to i32
  %291 = shl i32 %290, 24
  %292 = load i32, ptr %14, align 4, !tbaa !9
  %293 = add i32 %292, %291
  store i32 %293, ptr %14, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %286, %258
  %295 = load ptr, ptr %16, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 6
  %297 = load i8, ptr %296, align 1, !tbaa !23
  %298 = zext i8 %297 to i32
  %299 = shl i32 %298, 16
  %300 = load i32, ptr %14, align 4, !tbaa !9
  %301 = add i32 %300, %299
  store i32 %301, ptr %14, align 4, !tbaa !9
  br label %302

302:                                              ; preds = %294, %258
  %303 = load ptr, ptr %16, align 8, !tbaa !5
  %304 = getelementptr inbounds i8, ptr %303, i64 5
  %305 = load i8, ptr %304, align 1, !tbaa !23
  %306 = zext i8 %305 to i32
  %307 = shl i32 %306, 8
  %308 = load i32, ptr %14, align 4, !tbaa !9
  %309 = add i32 %308, %307
  store i32 %309, ptr %14, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %302, %258
  %311 = load ptr, ptr %16, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 4
  %313 = load i8, ptr %312, align 1, !tbaa !23
  %314 = zext i8 %313 to i32
  %315 = load i32, ptr %14, align 4, !tbaa !9
  %316 = add i32 %315, %314
  store i32 %316, ptr %14, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %310, %258
  %318 = load ptr, ptr %16, align 8, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %318, i64 3
  %320 = load i8, ptr %319, align 1, !tbaa !23
  %321 = zext i8 %320 to i32
  %322 = shl i32 %321, 24
  %323 = load i32, ptr %13, align 4, !tbaa !9
  %324 = add i32 %323, %322
  store i32 %324, ptr %13, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %317, %258
  %326 = load ptr, ptr %16, align 8, !tbaa !5
  %327 = getelementptr inbounds i8, ptr %326, i64 2
  %328 = load i8, ptr %327, align 1, !tbaa !23
  %329 = zext i8 %328 to i32
  %330 = shl i32 %329, 16
  %331 = load i32, ptr %13, align 4, !tbaa !9
  %332 = add i32 %331, %330
  store i32 %332, ptr %13, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %325, %258
  %334 = load ptr, ptr %16, align 8, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %334, i64 1
  %336 = load i8, ptr %335, align 1, !tbaa !23
  %337 = zext i8 %336 to i32
  %338 = shl i32 %337, 8
  %339 = load i32, ptr %13, align 4, !tbaa !9
  %340 = add i32 %339, %338
  store i32 %340, ptr %13, align 4, !tbaa !9
  br label %341

341:                                              ; preds = %333, %258
  %342 = load ptr, ptr %16, align 8, !tbaa !5
  %343 = getelementptr inbounds i8, ptr %342, i64 0
  %344 = load i8, ptr %343, align 1, !tbaa !23
  %345 = zext i8 %344 to i32
  %346 = load i32, ptr %13, align 4, !tbaa !9
  %347 = add i32 %346, %345
  store i32 %347, ptr %13, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %341, %258
  br label %349

349:                                              ; preds = %348
  %350 = load i32, ptr %14, align 4, !tbaa !9
  %351 = load i32, ptr %13, align 4, !tbaa !9
  %352 = sub i32 %351, %350
  store i32 %352, ptr %13, align 4, !tbaa !9
  %353 = load i32, ptr %12, align 4, !tbaa !9
  %354 = load i32, ptr %13, align 4, !tbaa !9
  %355 = sub i32 %354, %353
  store i32 %355, ptr %13, align 4, !tbaa !9
  %356 = load i32, ptr %12, align 4, !tbaa !9
  %357 = lshr i32 %356, 13
  %358 = load i32, ptr %13, align 4, !tbaa !9
  %359 = xor i32 %358, %357
  store i32 %359, ptr %13, align 4, !tbaa !9
  %360 = load i32, ptr %12, align 4, !tbaa !9
  %361 = load i32, ptr %14, align 4, !tbaa !9
  %362 = sub i32 %361, %360
  store i32 %362, ptr %14, align 4, !tbaa !9
  %363 = load i32, ptr %13, align 4, !tbaa !9
  %364 = load i32, ptr %14, align 4, !tbaa !9
  %365 = sub i32 %364, %363
  store i32 %365, ptr %14, align 4, !tbaa !9
  %366 = load i32, ptr %13, align 4, !tbaa !9
  %367 = shl i32 %366, 8
  %368 = load i32, ptr %14, align 4, !tbaa !9
  %369 = xor i32 %368, %367
  store i32 %369, ptr %14, align 4, !tbaa !9
  %370 = load i32, ptr %13, align 4, !tbaa !9
  %371 = load i32, ptr %12, align 4, !tbaa !9
  %372 = sub i32 %371, %370
  store i32 %372, ptr %12, align 4, !tbaa !9
  %373 = load i32, ptr %14, align 4, !tbaa !9
  %374 = load i32, ptr %12, align 4, !tbaa !9
  %375 = sub i32 %374, %373
  store i32 %375, ptr %12, align 4, !tbaa !9
  %376 = load i32, ptr %14, align 4, !tbaa !9
  %377 = lshr i32 %376, 13
  %378 = load i32, ptr %12, align 4, !tbaa !9
  %379 = xor i32 %378, %377
  store i32 %379, ptr %12, align 4, !tbaa !9
  %380 = load i32, ptr %14, align 4, !tbaa !9
  %381 = load i32, ptr %13, align 4, !tbaa !9
  %382 = sub i32 %381, %380
  store i32 %382, ptr %13, align 4, !tbaa !9
  %383 = load i32, ptr %12, align 4, !tbaa !9
  %384 = load i32, ptr %13, align 4, !tbaa !9
  %385 = sub i32 %384, %383
  store i32 %385, ptr %13, align 4, !tbaa !9
  %386 = load i32, ptr %12, align 4, !tbaa !9
  %387 = lshr i32 %386, 12
  %388 = load i32, ptr %13, align 4, !tbaa !9
  %389 = xor i32 %388, %387
  store i32 %389, ptr %13, align 4, !tbaa !9
  %390 = load i32, ptr %12, align 4, !tbaa !9
  %391 = load i32, ptr %14, align 4, !tbaa !9
  %392 = sub i32 %391, %390
  store i32 %392, ptr %14, align 4, !tbaa !9
  %393 = load i32, ptr %13, align 4, !tbaa !9
  %394 = load i32, ptr %14, align 4, !tbaa !9
  %395 = sub i32 %394, %393
  store i32 %395, ptr %14, align 4, !tbaa !9
  %396 = load i32, ptr %13, align 4, !tbaa !9
  %397 = shl i32 %396, 16
  %398 = load i32, ptr %14, align 4, !tbaa !9
  %399 = xor i32 %398, %397
  store i32 %399, ptr %14, align 4, !tbaa !9
  %400 = load i32, ptr %13, align 4, !tbaa !9
  %401 = load i32, ptr %12, align 4, !tbaa !9
  %402 = sub i32 %401, %400
  store i32 %402, ptr %12, align 4, !tbaa !9
  %403 = load i32, ptr %14, align 4, !tbaa !9
  %404 = load i32, ptr %12, align 4, !tbaa !9
  %405 = sub i32 %404, %403
  store i32 %405, ptr %12, align 4, !tbaa !9
  %406 = load i32, ptr %14, align 4, !tbaa !9
  %407 = lshr i32 %406, 5
  %408 = load i32, ptr %12, align 4, !tbaa !9
  %409 = xor i32 %408, %407
  store i32 %409, ptr %12, align 4, !tbaa !9
  %410 = load i32, ptr %14, align 4, !tbaa !9
  %411 = load i32, ptr %13, align 4, !tbaa !9
  %412 = sub i32 %411, %410
  store i32 %412, ptr %13, align 4, !tbaa !9
  %413 = load i32, ptr %12, align 4, !tbaa !9
  %414 = load i32, ptr %13, align 4, !tbaa !9
  %415 = sub i32 %414, %413
  store i32 %415, ptr %13, align 4, !tbaa !9
  %416 = load i32, ptr %12, align 4, !tbaa !9
  %417 = lshr i32 %416, 3
  %418 = load i32, ptr %13, align 4, !tbaa !9
  %419 = xor i32 %418, %417
  store i32 %419, ptr %13, align 4, !tbaa !9
  %420 = load i32, ptr %12, align 4, !tbaa !9
  %421 = load i32, ptr %14, align 4, !tbaa !9
  %422 = sub i32 %421, %420
  store i32 %422, ptr %14, align 4, !tbaa !9
  %423 = load i32, ptr %13, align 4, !tbaa !9
  %424 = load i32, ptr %14, align 4, !tbaa !9
  %425 = sub i32 %424, %423
  store i32 %425, ptr %14, align 4, !tbaa !9
  %426 = load i32, ptr %13, align 4, !tbaa !9
  %427 = shl i32 %426, 10
  %428 = load i32, ptr %14, align 4, !tbaa !9
  %429 = xor i32 %428, %427
  store i32 %429, ptr %14, align 4, !tbaa !9
  %430 = load i32, ptr %13, align 4, !tbaa !9
  %431 = load i32, ptr %12, align 4, !tbaa !9
  %432 = sub i32 %431, %430
  store i32 %432, ptr %12, align 4, !tbaa !9
  %433 = load i32, ptr %14, align 4, !tbaa !9
  %434 = load i32, ptr %12, align 4, !tbaa !9
  %435 = sub i32 %434, %433
  store i32 %435, ptr %12, align 4, !tbaa !9
  %436 = load i32, ptr %14, align 4, !tbaa !9
  %437 = lshr i32 %436, 15
  %438 = load i32, ptr %12, align 4, !tbaa !9
  %439 = xor i32 %438, %437
  store i32 %439, ptr %12, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %349
  br label %441

441:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %442

442:                                              ; preds = %441
  br label %443

443:                                              ; preds = %442
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  br label %446

446:                                              ; preds = %445
  store ptr null, ptr %7, align 8, !tbaa !5
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = icmp ne ptr %447, null
  br i1 %448, label %449, label %553

449:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  br label %450

450:                                              ; preds = %449
  %451 = load i32, ptr %12, align 4, !tbaa !9
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.ligature_aggerator, ptr %452, i32 0, i32 1
  %454 = getelementptr inbounds %struct.UT_hash_handle, ptr %453, i32 0, i32 0
  %455 = load ptr, ptr %454, align 8, !tbaa !26
  %456 = getelementptr inbounds %struct.UT_hash_table, ptr %455, i32 0, i32 1
  %457 = load i32, ptr %456, align 8, !tbaa !29
  %458 = sub i32 %457, 1
  %459 = and i32 %451, %458
  store i32 %459, ptr %17, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %450
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  %463 = load ptr, ptr %6, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ligature_aggerator, ptr %463, i32 0, i32 1
  %465 = getelementptr inbounds %struct.UT_hash_handle, ptr %464, i32 0, i32 0
  %466 = load ptr, ptr %465, align 8, !tbaa !26
  %467 = getelementptr inbounds %struct.UT_hash_table, ptr %466, i32 0, i32 0
  %468 = load ptr, ptr %467, align 8, !tbaa !31
  %469 = load i32, ptr %17, align 4, !tbaa !9
  %470 = zext i32 %469 to i64
  %471 = getelementptr inbounds %struct.UT_hash_bucket, ptr %468, i64 %470
  %472 = getelementptr inbounds %struct.UT_hash_bucket, ptr %471, i32 0, i32 0
  %473 = load ptr, ptr %472, align 8, !tbaa !32
  %474 = icmp ne ptr %473, null
  br i1 %474, label %475, label %498

475:                                              ; preds = %462
  br label %476

476:                                              ; preds = %475
  %477 = load ptr, ptr %6, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ligature_aggerator, ptr %477, i32 0, i32 1
  %479 = getelementptr inbounds %struct.UT_hash_handle, ptr %478, i32 0, i32 0
  %480 = load ptr, ptr %479, align 8, !tbaa !26
  %481 = getelementptr inbounds %struct.UT_hash_table, ptr %480, i32 0, i32 0
  %482 = load ptr, ptr %481, align 8, !tbaa !31
  %483 = load i32, ptr %17, align 4, !tbaa !9
  %484 = zext i32 %483 to i64
  %485 = getelementptr inbounds %struct.UT_hash_bucket, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.UT_hash_bucket, ptr %485, i32 0, i32 0
  %487 = load ptr, ptr %486, align 8, !tbaa !32
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.ligature_aggerator, ptr %488, i32 0, i32 1
  %490 = getelementptr inbounds %struct.UT_hash_handle, ptr %489, i32 0, i32 0
  %491 = load ptr, ptr %490, align 8, !tbaa !26
  %492 = getelementptr inbounds %struct.UT_hash_table, ptr %491, i32 0, i32 5
  %493 = load i64, ptr %492, align 8, !tbaa !34
  %494 = sub i64 0, %493
  %495 = getelementptr inbounds i8, ptr %487, i64 %494
  store ptr %495, ptr %7, align 8, !tbaa !5
  br label %496

496:                                              ; preds = %476
  br label %497

497:                                              ; preds = %496
  br label %499

498:                                              ; preds = %462
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %499

499:                                              ; preds = %498, %497
  br label %500

500:                                              ; preds = %549, %499
  %501 = load ptr, ptr %7, align 8, !tbaa !5
  %502 = icmp ne ptr %501, null
  br i1 %502, label %503, label %550

503:                                              ; preds = %500
  %504 = load ptr, ptr %7, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.ligature_aggerator, ptr %504, i32 0, i32 1
  %506 = getelementptr inbounds %struct.UT_hash_handle, ptr %505, i32 0, i32 7
  %507 = load i32, ptr %506, align 4, !tbaa !35
  %508 = load i32, ptr %12, align 4, !tbaa !9
  %509 = icmp eq i32 %507, %508
  br i1 %509, label %510, label %526

510:                                              ; preds = %503
  %511 = load ptr, ptr %7, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.ligature_aggerator, ptr %511, i32 0, i32 1
  %513 = getelementptr inbounds %struct.UT_hash_handle, ptr %512, i32 0, i32 6
  %514 = load i32, ptr %513, align 8, !tbaa !36
  %515 = zext i32 %514 to i64
  %516 = icmp eq i64 %515, 4
  br i1 %516, label %517, label %526

517:                                              ; preds = %510
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ligature_aggerator, ptr %518, i32 0, i32 1
  %520 = getelementptr inbounds %struct.UT_hash_handle, ptr %519, i32 0, i32 5
  %521 = load ptr, ptr %520, align 8, !tbaa !37
  %522 = call i32 @memcmp(ptr noundef %521, ptr noundef %11, i64 noundef 4) #10
  %523 = icmp eq i32 %522, 0
  br i1 %523, label %524, label %525

524:                                              ; preds = %517
  br label %550

525:                                              ; preds = %517
  br label %526

526:                                              ; preds = %525, %510, %503
  %527 = load ptr, ptr %7, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.ligature_aggerator, ptr %527, i32 0, i32 1
  %529 = getelementptr inbounds %struct.UT_hash_handle, ptr %528, i32 0, i32 4
  %530 = load ptr, ptr %529, align 8, !tbaa !38
  %531 = icmp ne ptr %530, null
  br i1 %531, label %532, label %548

532:                                              ; preds = %526
  br label %533

533:                                              ; preds = %532
  %534 = load ptr, ptr %7, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ligature_aggerator, ptr %534, i32 0, i32 1
  %536 = getelementptr inbounds %struct.UT_hash_handle, ptr %535, i32 0, i32 4
  %537 = load ptr, ptr %536, align 8, !tbaa !38
  %538 = load ptr, ptr %6, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ligature_aggerator, ptr %538, i32 0, i32 1
  %540 = getelementptr inbounds %struct.UT_hash_handle, ptr %539, i32 0, i32 0
  %541 = load ptr, ptr %540, align 8, !tbaa !26
  %542 = getelementptr inbounds %struct.UT_hash_table, ptr %541, i32 0, i32 5
  %543 = load i64, ptr %542, align 8, !tbaa !34
  %544 = sub i64 0, %543
  %545 = getelementptr inbounds i8, ptr %537, i64 %544
  store ptr %545, ptr %7, align 8, !tbaa !5
  br label %546

546:                                              ; preds = %533
  br label %547

547:                                              ; preds = %546
  br label %549

548:                                              ; preds = %526
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %549

549:                                              ; preds = %548, %547
  br label %500, !llvm.loop !39

550:                                              ; preds = %524, %500
  br label %551

551:                                              ; preds = %550
  br label %552

552:                                              ; preds = %551
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %553

553:                                              ; preds = %552, %446
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %556

556:                                              ; preds = %555
  br label %557

557:                                              ; preds = %556
  %558 = load ptr, ptr %7, align 8, !tbaa !5
  %559 = icmp ne ptr %558, null
  br i1 %559, label %1408, label %560

560:                                              ; preds = %557
  %561 = call ptr @__caryll_allocate_clean(i64 noundef 64, i64 noundef 132)
  store ptr %561, ptr %7, align 8, !tbaa !5
  %562 = load i32, ptr %11, align 4, !tbaa !9
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ligature_aggerator, ptr %563, i32 0, i32 0
  store i32 %562, ptr %564, align 8, !tbaa !40
  br label %565

565:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  br label %566

566:                                              ; preds = %565
  br label %567

567:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.ligature_aggerator, ptr %568, i32 0, i32 0
  store ptr %569, ptr %22, align 8, !tbaa !5
  store i32 -17973521, ptr %18, align 4, !tbaa !9
  store i32 -1640531527, ptr %20, align 4, !tbaa !9
  store i32 -1640531527, ptr %19, align 4, !tbaa !9
  store i32 4, ptr %21, align 4, !tbaa !9
  br label %570

570:                                              ; preds = %738, %567
  %571 = load i32, ptr %21, align 4, !tbaa !9
  %572 = icmp uge i32 %571, 12
  br i1 %572, label %573, label %743

573:                                              ; preds = %570
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 0
  %576 = load i8, ptr %575, align 1, !tbaa !23
  %577 = zext i8 %576 to i32
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = getelementptr inbounds i8, ptr %578, i64 1
  %580 = load i8, ptr %579, align 1, !tbaa !23
  %581 = zext i8 %580 to i32
  %582 = shl i32 %581, 8
  %583 = add i32 %577, %582
  %584 = load ptr, ptr %22, align 8, !tbaa !5
  %585 = getelementptr inbounds i8, ptr %584, i64 2
  %586 = load i8, ptr %585, align 1, !tbaa !23
  %587 = zext i8 %586 to i32
  %588 = shl i32 %587, 16
  %589 = add i32 %583, %588
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = getelementptr inbounds i8, ptr %590, i64 3
  %592 = load i8, ptr %591, align 1, !tbaa !23
  %593 = zext i8 %592 to i32
  %594 = shl i32 %593, 24
  %595 = add i32 %589, %594
  %596 = load i32, ptr %19, align 4, !tbaa !9
  %597 = add i32 %596, %595
  store i32 %597, ptr %19, align 4, !tbaa !9
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = getelementptr inbounds i8, ptr %598, i64 4
  %600 = load i8, ptr %599, align 1, !tbaa !23
  %601 = zext i8 %600 to i32
  %602 = load ptr, ptr %22, align 8, !tbaa !5
  %603 = getelementptr inbounds i8, ptr %602, i64 5
  %604 = load i8, ptr %603, align 1, !tbaa !23
  %605 = zext i8 %604 to i32
  %606 = shl i32 %605, 8
  %607 = add i32 %601, %606
  %608 = load ptr, ptr %22, align 8, !tbaa !5
  %609 = getelementptr inbounds i8, ptr %608, i64 6
  %610 = load i8, ptr %609, align 1, !tbaa !23
  %611 = zext i8 %610 to i32
  %612 = shl i32 %611, 16
  %613 = add i32 %607, %612
  %614 = load ptr, ptr %22, align 8, !tbaa !5
  %615 = getelementptr inbounds i8, ptr %614, i64 7
  %616 = load i8, ptr %615, align 1, !tbaa !23
  %617 = zext i8 %616 to i32
  %618 = shl i32 %617, 24
  %619 = add i32 %613, %618
  %620 = load i32, ptr %20, align 4, !tbaa !9
  %621 = add i32 %620, %619
  store i32 %621, ptr %20, align 4, !tbaa !9
  %622 = load ptr, ptr %22, align 8, !tbaa !5
  %623 = getelementptr inbounds i8, ptr %622, i64 8
  %624 = load i8, ptr %623, align 1, !tbaa !23
  %625 = zext i8 %624 to i32
  %626 = load ptr, ptr %22, align 8, !tbaa !5
  %627 = getelementptr inbounds i8, ptr %626, i64 9
  %628 = load i8, ptr %627, align 1, !tbaa !23
  %629 = zext i8 %628 to i32
  %630 = shl i32 %629, 8
  %631 = add i32 %625, %630
  %632 = load ptr, ptr %22, align 8, !tbaa !5
  %633 = getelementptr inbounds i8, ptr %632, i64 10
  %634 = load i8, ptr %633, align 1, !tbaa !23
  %635 = zext i8 %634 to i32
  %636 = shl i32 %635, 16
  %637 = add i32 %631, %636
  %638 = load ptr, ptr %22, align 8, !tbaa !5
  %639 = getelementptr inbounds i8, ptr %638, i64 11
  %640 = load i8, ptr %639, align 1, !tbaa !23
  %641 = zext i8 %640 to i32
  %642 = shl i32 %641, 24
  %643 = add i32 %637, %642
  %644 = load i32, ptr %18, align 4, !tbaa !9
  %645 = add i32 %644, %643
  store i32 %645, ptr %18, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %573
  %647 = load i32, ptr %20, align 4, !tbaa !9
  %648 = load i32, ptr %19, align 4, !tbaa !9
  %649 = sub i32 %648, %647
  store i32 %649, ptr %19, align 4, !tbaa !9
  %650 = load i32, ptr %18, align 4, !tbaa !9
  %651 = load i32, ptr %19, align 4, !tbaa !9
  %652 = sub i32 %651, %650
  store i32 %652, ptr %19, align 4, !tbaa !9
  %653 = load i32, ptr %18, align 4, !tbaa !9
  %654 = lshr i32 %653, 13
  %655 = load i32, ptr %19, align 4, !tbaa !9
  %656 = xor i32 %655, %654
  store i32 %656, ptr %19, align 4, !tbaa !9
  %657 = load i32, ptr %18, align 4, !tbaa !9
  %658 = load i32, ptr %20, align 4, !tbaa !9
  %659 = sub i32 %658, %657
  store i32 %659, ptr %20, align 4, !tbaa !9
  %660 = load i32, ptr %19, align 4, !tbaa !9
  %661 = load i32, ptr %20, align 4, !tbaa !9
  %662 = sub i32 %661, %660
  store i32 %662, ptr %20, align 4, !tbaa !9
  %663 = load i32, ptr %19, align 4, !tbaa !9
  %664 = shl i32 %663, 8
  %665 = load i32, ptr %20, align 4, !tbaa !9
  %666 = xor i32 %665, %664
  store i32 %666, ptr %20, align 4, !tbaa !9
  %667 = load i32, ptr %19, align 4, !tbaa !9
  %668 = load i32, ptr %18, align 4, !tbaa !9
  %669 = sub i32 %668, %667
  store i32 %669, ptr %18, align 4, !tbaa !9
  %670 = load i32, ptr %20, align 4, !tbaa !9
  %671 = load i32, ptr %18, align 4, !tbaa !9
  %672 = sub i32 %671, %670
  store i32 %672, ptr %18, align 4, !tbaa !9
  %673 = load i32, ptr %20, align 4, !tbaa !9
  %674 = lshr i32 %673, 13
  %675 = load i32, ptr %18, align 4, !tbaa !9
  %676 = xor i32 %675, %674
  store i32 %676, ptr %18, align 4, !tbaa !9
  %677 = load i32, ptr %20, align 4, !tbaa !9
  %678 = load i32, ptr %19, align 4, !tbaa !9
  %679 = sub i32 %678, %677
  store i32 %679, ptr %19, align 4, !tbaa !9
  %680 = load i32, ptr %18, align 4, !tbaa !9
  %681 = load i32, ptr %19, align 4, !tbaa !9
  %682 = sub i32 %681, %680
  store i32 %682, ptr %19, align 4, !tbaa !9
  %683 = load i32, ptr %18, align 4, !tbaa !9
  %684 = lshr i32 %683, 12
  %685 = load i32, ptr %19, align 4, !tbaa !9
  %686 = xor i32 %685, %684
  store i32 %686, ptr %19, align 4, !tbaa !9
  %687 = load i32, ptr %18, align 4, !tbaa !9
  %688 = load i32, ptr %20, align 4, !tbaa !9
  %689 = sub i32 %688, %687
  store i32 %689, ptr %20, align 4, !tbaa !9
  %690 = load i32, ptr %19, align 4, !tbaa !9
  %691 = load i32, ptr %20, align 4, !tbaa !9
  %692 = sub i32 %691, %690
  store i32 %692, ptr %20, align 4, !tbaa !9
  %693 = load i32, ptr %19, align 4, !tbaa !9
  %694 = shl i32 %693, 16
  %695 = load i32, ptr %20, align 4, !tbaa !9
  %696 = xor i32 %695, %694
  store i32 %696, ptr %20, align 4, !tbaa !9
  %697 = load i32, ptr %19, align 4, !tbaa !9
  %698 = load i32, ptr %18, align 4, !tbaa !9
  %699 = sub i32 %698, %697
  store i32 %699, ptr %18, align 4, !tbaa !9
  %700 = load i32, ptr %20, align 4, !tbaa !9
  %701 = load i32, ptr %18, align 4, !tbaa !9
  %702 = sub i32 %701, %700
  store i32 %702, ptr %18, align 4, !tbaa !9
  %703 = load i32, ptr %20, align 4, !tbaa !9
  %704 = lshr i32 %703, 5
  %705 = load i32, ptr %18, align 4, !tbaa !9
  %706 = xor i32 %705, %704
  store i32 %706, ptr %18, align 4, !tbaa !9
  %707 = load i32, ptr %20, align 4, !tbaa !9
  %708 = load i32, ptr %19, align 4, !tbaa !9
  %709 = sub i32 %708, %707
  store i32 %709, ptr %19, align 4, !tbaa !9
  %710 = load i32, ptr %18, align 4, !tbaa !9
  %711 = load i32, ptr %19, align 4, !tbaa !9
  %712 = sub i32 %711, %710
  store i32 %712, ptr %19, align 4, !tbaa !9
  %713 = load i32, ptr %18, align 4, !tbaa !9
  %714 = lshr i32 %713, 3
  %715 = load i32, ptr %19, align 4, !tbaa !9
  %716 = xor i32 %715, %714
  store i32 %716, ptr %19, align 4, !tbaa !9
  %717 = load i32, ptr %18, align 4, !tbaa !9
  %718 = load i32, ptr %20, align 4, !tbaa !9
  %719 = sub i32 %718, %717
  store i32 %719, ptr %20, align 4, !tbaa !9
  %720 = load i32, ptr %19, align 4, !tbaa !9
  %721 = load i32, ptr %20, align 4, !tbaa !9
  %722 = sub i32 %721, %720
  store i32 %722, ptr %20, align 4, !tbaa !9
  %723 = load i32, ptr %19, align 4, !tbaa !9
  %724 = shl i32 %723, 10
  %725 = load i32, ptr %20, align 4, !tbaa !9
  %726 = xor i32 %725, %724
  store i32 %726, ptr %20, align 4, !tbaa !9
  %727 = load i32, ptr %19, align 4, !tbaa !9
  %728 = load i32, ptr %18, align 4, !tbaa !9
  %729 = sub i32 %728, %727
  store i32 %729, ptr %18, align 4, !tbaa !9
  %730 = load i32, ptr %20, align 4, !tbaa !9
  %731 = load i32, ptr %18, align 4, !tbaa !9
  %732 = sub i32 %731, %730
  store i32 %732, ptr %18, align 4, !tbaa !9
  %733 = load i32, ptr %20, align 4, !tbaa !9
  %734 = lshr i32 %733, 15
  %735 = load i32, ptr %18, align 4, !tbaa !9
  %736 = xor i32 %735, %734
  store i32 %736, ptr %18, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %646
  br label %738

738:                                              ; preds = %737
  %739 = load ptr, ptr %22, align 8, !tbaa !5
  %740 = getelementptr inbounds i8, ptr %739, i64 12
  store ptr %740, ptr %22, align 8, !tbaa !5
  %741 = load i32, ptr %21, align 4, !tbaa !9
  %742 = sub i32 %741, 12
  store i32 %742, ptr %21, align 4, !tbaa !9
  br label %570, !llvm.loop !41

743:                                              ; preds = %570
  %744 = load i32, ptr %18, align 4, !tbaa !9
  %745 = add i32 %744, 4
  store i32 %745, ptr %18, align 4, !tbaa !9
  %746 = load i32, ptr %21, align 4, !tbaa !9
  switch i32 %746, label %833 [
    i32 11, label %747
    i32 10, label %755
    i32 9, label %763
    i32 8, label %771
    i32 7, label %779
    i32 6, label %787
    i32 5, label %795
    i32 4, label %802
    i32 3, label %810
    i32 2, label %818
    i32 1, label %826
  ]

747:                                              ; preds = %743
  %748 = load ptr, ptr %22, align 8, !tbaa !5
  %749 = getelementptr inbounds i8, ptr %748, i64 10
  %750 = load i8, ptr %749, align 1, !tbaa !23
  %751 = zext i8 %750 to i32
  %752 = shl i32 %751, 24
  %753 = load i32, ptr %18, align 4, !tbaa !9
  %754 = add i32 %753, %752
  store i32 %754, ptr %18, align 4, !tbaa !9
  br label %755

755:                                              ; preds = %747, %743
  %756 = load ptr, ptr %22, align 8, !tbaa !5
  %757 = getelementptr inbounds i8, ptr %756, i64 9
  %758 = load i8, ptr %757, align 1, !tbaa !23
  %759 = zext i8 %758 to i32
  %760 = shl i32 %759, 16
  %761 = load i32, ptr %18, align 4, !tbaa !9
  %762 = add i32 %761, %760
  store i32 %762, ptr %18, align 4, !tbaa !9
  br label %763

763:                                              ; preds = %755, %743
  %764 = load ptr, ptr %22, align 8, !tbaa !5
  %765 = getelementptr inbounds i8, ptr %764, i64 8
  %766 = load i8, ptr %765, align 1, !tbaa !23
  %767 = zext i8 %766 to i32
  %768 = shl i32 %767, 8
  %769 = load i32, ptr %18, align 4, !tbaa !9
  %770 = add i32 %769, %768
  store i32 %770, ptr %18, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %763, %743
  %772 = load ptr, ptr %22, align 8, !tbaa !5
  %773 = getelementptr inbounds i8, ptr %772, i64 7
  %774 = load i8, ptr %773, align 1, !tbaa !23
  %775 = zext i8 %774 to i32
  %776 = shl i32 %775, 24
  %777 = load i32, ptr %20, align 4, !tbaa !9
  %778 = add i32 %777, %776
  store i32 %778, ptr %20, align 4, !tbaa !9
  br label %779

779:                                              ; preds = %771, %743
  %780 = load ptr, ptr %22, align 8, !tbaa !5
  %781 = getelementptr inbounds i8, ptr %780, i64 6
  %782 = load i8, ptr %781, align 1, !tbaa !23
  %783 = zext i8 %782 to i32
  %784 = shl i32 %783, 16
  %785 = load i32, ptr %20, align 4, !tbaa !9
  %786 = add i32 %785, %784
  store i32 %786, ptr %20, align 4, !tbaa !9
  br label %787

787:                                              ; preds = %779, %743
  %788 = load ptr, ptr %22, align 8, !tbaa !5
  %789 = getelementptr inbounds i8, ptr %788, i64 5
  %790 = load i8, ptr %789, align 1, !tbaa !23
  %791 = zext i8 %790 to i32
  %792 = shl i32 %791, 8
  %793 = load i32, ptr %20, align 4, !tbaa !9
  %794 = add i32 %793, %792
  store i32 %794, ptr %20, align 4, !tbaa !9
  br label %795

795:                                              ; preds = %787, %743
  %796 = load ptr, ptr %22, align 8, !tbaa !5
  %797 = getelementptr inbounds i8, ptr %796, i64 4
  %798 = load i8, ptr %797, align 1, !tbaa !23
  %799 = zext i8 %798 to i32
  %800 = load i32, ptr %20, align 4, !tbaa !9
  %801 = add i32 %800, %799
  store i32 %801, ptr %20, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %795, %743
  %803 = load ptr, ptr %22, align 8, !tbaa !5
  %804 = getelementptr inbounds i8, ptr %803, i64 3
  %805 = load i8, ptr %804, align 1, !tbaa !23
  %806 = zext i8 %805 to i32
  %807 = shl i32 %806, 24
  %808 = load i32, ptr %19, align 4, !tbaa !9
  %809 = add i32 %808, %807
  store i32 %809, ptr %19, align 4, !tbaa !9
  br label %810

810:                                              ; preds = %802, %743
  %811 = load ptr, ptr %22, align 8, !tbaa !5
  %812 = getelementptr inbounds i8, ptr %811, i64 2
  %813 = load i8, ptr %812, align 1, !tbaa !23
  %814 = zext i8 %813 to i32
  %815 = shl i32 %814, 16
  %816 = load i32, ptr %19, align 4, !tbaa !9
  %817 = add i32 %816, %815
  store i32 %817, ptr %19, align 4, !tbaa !9
  br label %818

818:                                              ; preds = %810, %743
  %819 = load ptr, ptr %22, align 8, !tbaa !5
  %820 = getelementptr inbounds i8, ptr %819, i64 1
  %821 = load i8, ptr %820, align 1, !tbaa !23
  %822 = zext i8 %821 to i32
  %823 = shl i32 %822, 8
  %824 = load i32, ptr %19, align 4, !tbaa !9
  %825 = add i32 %824, %823
  store i32 %825, ptr %19, align 4, !tbaa !9
  br label %826

826:                                              ; preds = %818, %743
  %827 = load ptr, ptr %22, align 8, !tbaa !5
  %828 = getelementptr inbounds i8, ptr %827, i64 0
  %829 = load i8, ptr %828, align 1, !tbaa !23
  %830 = zext i8 %829 to i32
  %831 = load i32, ptr %19, align 4, !tbaa !9
  %832 = add i32 %831, %830
  store i32 %832, ptr %19, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %826, %743
  br label %834

834:                                              ; preds = %833
  %835 = load i32, ptr %20, align 4, !tbaa !9
  %836 = load i32, ptr %19, align 4, !tbaa !9
  %837 = sub i32 %836, %835
  store i32 %837, ptr %19, align 4, !tbaa !9
  %838 = load i32, ptr %18, align 4, !tbaa !9
  %839 = load i32, ptr %19, align 4, !tbaa !9
  %840 = sub i32 %839, %838
  store i32 %840, ptr %19, align 4, !tbaa !9
  %841 = load i32, ptr %18, align 4, !tbaa !9
  %842 = lshr i32 %841, 13
  %843 = load i32, ptr %19, align 4, !tbaa !9
  %844 = xor i32 %843, %842
  store i32 %844, ptr %19, align 4, !tbaa !9
  %845 = load i32, ptr %18, align 4, !tbaa !9
  %846 = load i32, ptr %20, align 4, !tbaa !9
  %847 = sub i32 %846, %845
  store i32 %847, ptr %20, align 4, !tbaa !9
  %848 = load i32, ptr %19, align 4, !tbaa !9
  %849 = load i32, ptr %20, align 4, !tbaa !9
  %850 = sub i32 %849, %848
  store i32 %850, ptr %20, align 4, !tbaa !9
  %851 = load i32, ptr %19, align 4, !tbaa !9
  %852 = shl i32 %851, 8
  %853 = load i32, ptr %20, align 4, !tbaa !9
  %854 = xor i32 %853, %852
  store i32 %854, ptr %20, align 4, !tbaa !9
  %855 = load i32, ptr %19, align 4, !tbaa !9
  %856 = load i32, ptr %18, align 4, !tbaa !9
  %857 = sub i32 %856, %855
  store i32 %857, ptr %18, align 4, !tbaa !9
  %858 = load i32, ptr %20, align 4, !tbaa !9
  %859 = load i32, ptr %18, align 4, !tbaa !9
  %860 = sub i32 %859, %858
  store i32 %860, ptr %18, align 4, !tbaa !9
  %861 = load i32, ptr %20, align 4, !tbaa !9
  %862 = lshr i32 %861, 13
  %863 = load i32, ptr %18, align 4, !tbaa !9
  %864 = xor i32 %863, %862
  store i32 %864, ptr %18, align 4, !tbaa !9
  %865 = load i32, ptr %20, align 4, !tbaa !9
  %866 = load i32, ptr %19, align 4, !tbaa !9
  %867 = sub i32 %866, %865
  store i32 %867, ptr %19, align 4, !tbaa !9
  %868 = load i32, ptr %18, align 4, !tbaa !9
  %869 = load i32, ptr %19, align 4, !tbaa !9
  %870 = sub i32 %869, %868
  store i32 %870, ptr %19, align 4, !tbaa !9
  %871 = load i32, ptr %18, align 4, !tbaa !9
  %872 = lshr i32 %871, 12
  %873 = load i32, ptr %19, align 4, !tbaa !9
  %874 = xor i32 %873, %872
  store i32 %874, ptr %19, align 4, !tbaa !9
  %875 = load i32, ptr %18, align 4, !tbaa !9
  %876 = load i32, ptr %20, align 4, !tbaa !9
  %877 = sub i32 %876, %875
  store i32 %877, ptr %20, align 4, !tbaa !9
  %878 = load i32, ptr %19, align 4, !tbaa !9
  %879 = load i32, ptr %20, align 4, !tbaa !9
  %880 = sub i32 %879, %878
  store i32 %880, ptr %20, align 4, !tbaa !9
  %881 = load i32, ptr %19, align 4, !tbaa !9
  %882 = shl i32 %881, 16
  %883 = load i32, ptr %20, align 4, !tbaa !9
  %884 = xor i32 %883, %882
  store i32 %884, ptr %20, align 4, !tbaa !9
  %885 = load i32, ptr %19, align 4, !tbaa !9
  %886 = load i32, ptr %18, align 4, !tbaa !9
  %887 = sub i32 %886, %885
  store i32 %887, ptr %18, align 4, !tbaa !9
  %888 = load i32, ptr %20, align 4, !tbaa !9
  %889 = load i32, ptr %18, align 4, !tbaa !9
  %890 = sub i32 %889, %888
  store i32 %890, ptr %18, align 4, !tbaa !9
  %891 = load i32, ptr %20, align 4, !tbaa !9
  %892 = lshr i32 %891, 5
  %893 = load i32, ptr %18, align 4, !tbaa !9
  %894 = xor i32 %893, %892
  store i32 %894, ptr %18, align 4, !tbaa !9
  %895 = load i32, ptr %20, align 4, !tbaa !9
  %896 = load i32, ptr %19, align 4, !tbaa !9
  %897 = sub i32 %896, %895
  store i32 %897, ptr %19, align 4, !tbaa !9
  %898 = load i32, ptr %18, align 4, !tbaa !9
  %899 = load i32, ptr %19, align 4, !tbaa !9
  %900 = sub i32 %899, %898
  store i32 %900, ptr %19, align 4, !tbaa !9
  %901 = load i32, ptr %18, align 4, !tbaa !9
  %902 = lshr i32 %901, 3
  %903 = load i32, ptr %19, align 4, !tbaa !9
  %904 = xor i32 %903, %902
  store i32 %904, ptr %19, align 4, !tbaa !9
  %905 = load i32, ptr %18, align 4, !tbaa !9
  %906 = load i32, ptr %20, align 4, !tbaa !9
  %907 = sub i32 %906, %905
  store i32 %907, ptr %20, align 4, !tbaa !9
  %908 = load i32, ptr %19, align 4, !tbaa !9
  %909 = load i32, ptr %20, align 4, !tbaa !9
  %910 = sub i32 %909, %908
  store i32 %910, ptr %20, align 4, !tbaa !9
  %911 = load i32, ptr %19, align 4, !tbaa !9
  %912 = shl i32 %911, 10
  %913 = load i32, ptr %20, align 4, !tbaa !9
  %914 = xor i32 %913, %912
  store i32 %914, ptr %20, align 4, !tbaa !9
  %915 = load i32, ptr %19, align 4, !tbaa !9
  %916 = load i32, ptr %18, align 4, !tbaa !9
  %917 = sub i32 %916, %915
  store i32 %917, ptr %18, align 4, !tbaa !9
  %918 = load i32, ptr %20, align 4, !tbaa !9
  %919 = load i32, ptr %18, align 4, !tbaa !9
  %920 = sub i32 %919, %918
  store i32 %920, ptr %18, align 4, !tbaa !9
  %921 = load i32, ptr %20, align 4, !tbaa !9
  %922 = lshr i32 %921, 15
  %923 = load i32, ptr %18, align 4, !tbaa !9
  %924 = xor i32 %923, %922
  store i32 %924, ptr %18, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %834
  br label %926

926:                                              ; preds = %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %927

927:                                              ; preds = %926
  br label %928

928:                                              ; preds = %927
  br label %929

929:                                              ; preds = %928
  br label %930

930:                                              ; preds = %929
  br label %931

931:                                              ; preds = %930
  %932 = load i32, ptr %18, align 4, !tbaa !9
  %933 = load ptr, ptr %7, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.ligature_aggerator, ptr %933, i32 0, i32 1
  %935 = getelementptr inbounds %struct.UT_hash_handle, ptr %934, i32 0, i32 7
  store i32 %932, ptr %935, align 4, !tbaa !35
  %936 = load ptr, ptr %7, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ligature_aggerator, ptr %936, i32 0, i32 0
  %938 = load ptr, ptr %7, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ligature_aggerator, ptr %938, i32 0, i32 1
  %940 = getelementptr inbounds %struct.UT_hash_handle, ptr %939, i32 0, i32 5
  store ptr %937, ptr %940, align 8, !tbaa !37
  %941 = load ptr, ptr %7, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ligature_aggerator, ptr %941, i32 0, i32 1
  %943 = getelementptr inbounds %struct.UT_hash_handle, ptr %942, i32 0, i32 6
  store i32 4, ptr %943, align 8, !tbaa !36
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  %945 = icmp ne ptr %944, null
  br i1 %945, label %1028, label %946

946:                                              ; preds = %931
  %947 = load ptr, ptr %7, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ligature_aggerator, ptr %947, i32 0, i32 1
  %949 = getelementptr inbounds %struct.UT_hash_handle, ptr %948, i32 0, i32 2
  store ptr null, ptr %949, align 8, !tbaa !42
  %950 = load ptr, ptr %7, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ligature_aggerator, ptr %950, i32 0, i32 1
  %952 = getelementptr inbounds %struct.UT_hash_handle, ptr %951, i32 0, i32 1
  store ptr null, ptr %952, align 8, !tbaa !43
  br label %953

953:                                              ; preds = %946
  %954 = call noalias ptr @malloc(i64 noundef 64) #11
  %955 = load ptr, ptr %7, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.ligature_aggerator, ptr %955, i32 0, i32 1
  %957 = getelementptr inbounds %struct.UT_hash_handle, ptr %956, i32 0, i32 0
  store ptr %954, ptr %957, align 8, !tbaa !26
  %958 = load ptr, ptr %7, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.ligature_aggerator, ptr %958, i32 0, i32 1
  %960 = getelementptr inbounds %struct.UT_hash_handle, ptr %959, i32 0, i32 0
  %961 = load ptr, ptr %960, align 8, !tbaa !26
  %962 = icmp ne ptr %961, null
  br i1 %962, label %964, label %963

963:                                              ; preds = %953
  call void @exit(i32 noundef -1) #12
  unreachable

964:                                              ; preds = %953
  %965 = load ptr, ptr %7, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.ligature_aggerator, ptr %965, i32 0, i32 1
  %967 = getelementptr inbounds %struct.UT_hash_handle, ptr %966, i32 0, i32 0
  %968 = load ptr, ptr %967, align 8, !tbaa !26
  call void @llvm.memset.p0.i64(ptr align 8 %968, i8 0, i64 64, i1 false)
  %969 = load ptr, ptr %7, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ligature_aggerator, ptr %969, i32 0, i32 1
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.ligature_aggerator, ptr %971, i32 0, i32 1
  %973 = getelementptr inbounds %struct.UT_hash_handle, ptr %972, i32 0, i32 0
  %974 = load ptr, ptr %973, align 8, !tbaa !26
  %975 = getelementptr inbounds %struct.UT_hash_table, ptr %974, i32 0, i32 4
  store ptr %970, ptr %975, align 8, !tbaa !44
  %976 = load ptr, ptr %7, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ligature_aggerator, ptr %976, i32 0, i32 1
  %978 = getelementptr inbounds %struct.UT_hash_handle, ptr %977, i32 0, i32 0
  %979 = load ptr, ptr %978, align 8, !tbaa !26
  %980 = getelementptr inbounds %struct.UT_hash_table, ptr %979, i32 0, i32 1
  store i32 32, ptr %980, align 8, !tbaa !29
  %981 = load ptr, ptr %7, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ligature_aggerator, ptr %981, i32 0, i32 1
  %983 = getelementptr inbounds %struct.UT_hash_handle, ptr %982, i32 0, i32 0
  %984 = load ptr, ptr %983, align 8, !tbaa !26
  %985 = getelementptr inbounds %struct.UT_hash_table, ptr %984, i32 0, i32 2
  store i32 5, ptr %985, align 4, !tbaa !45
  %986 = load ptr, ptr %7, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ligature_aggerator, ptr %986, i32 0, i32 1
  %988 = load ptr, ptr %7, align 8, !tbaa !5
  %989 = ptrtoint ptr %987 to i64
  %990 = ptrtoint ptr %988 to i64
  %991 = sub i64 %989, %990
  %992 = load ptr, ptr %7, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ligature_aggerator, ptr %992, i32 0, i32 1
  %994 = getelementptr inbounds %struct.UT_hash_handle, ptr %993, i32 0, i32 0
  %995 = load ptr, ptr %994, align 8, !tbaa !26
  %996 = getelementptr inbounds %struct.UT_hash_table, ptr %995, i32 0, i32 5
  store i64 %991, ptr %996, align 8, !tbaa !34
  %997 = call noalias ptr @malloc(i64 noundef 512) #11
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.ligature_aggerator, ptr %998, i32 0, i32 1
  %1000 = getelementptr inbounds %struct.UT_hash_handle, ptr %999, i32 0, i32 0
  %1001 = load ptr, ptr %1000, align 8, !tbaa !26
  %1002 = getelementptr inbounds %struct.UT_hash_table, ptr %1001, i32 0, i32 0
  store ptr %997, ptr %1002, align 8, !tbaa !31
  %1003 = load ptr, ptr %7, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ligature_aggerator, ptr %1003, i32 0, i32 1
  %1005 = getelementptr inbounds %struct.UT_hash_handle, ptr %1004, i32 0, i32 0
  %1006 = load ptr, ptr %1005, align 8, !tbaa !26
  %1007 = getelementptr inbounds %struct.UT_hash_table, ptr %1006, i32 0, i32 10
  store i32 -1609490463, ptr %1007, align 8, !tbaa !46
  %1008 = load ptr, ptr %7, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.ligature_aggerator, ptr %1008, i32 0, i32 1
  %1010 = getelementptr inbounds %struct.UT_hash_handle, ptr %1009, i32 0, i32 0
  %1011 = load ptr, ptr %1010, align 8, !tbaa !26
  %1012 = getelementptr inbounds %struct.UT_hash_table, ptr %1011, i32 0, i32 0
  %1013 = load ptr, ptr %1012, align 8, !tbaa !31
  %1014 = icmp ne ptr %1013, null
  br i1 %1014, label %1016, label %1015

1015:                                             ; preds = %964
  call void @exit(i32 noundef -1) #12
  unreachable

1016:                                             ; preds = %964
  %1017 = load ptr, ptr %7, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ligature_aggerator, ptr %1017, i32 0, i32 1
  %1019 = getelementptr inbounds %struct.UT_hash_handle, ptr %1018, i32 0, i32 0
  %1020 = load ptr, ptr %1019, align 8, !tbaa !26
  %1021 = getelementptr inbounds %struct.UT_hash_table, ptr %1020, i32 0, i32 0
  %1022 = load ptr, ptr %1021, align 8, !tbaa !31
  call void @llvm.memset.p0.i64(ptr align 8 %1022, i8 0, i64 512, i1 false)
  br label %1023

1023:                                             ; preds = %1016
  br label %1024

1024:                                             ; preds = %1023
  br label %1025

1025:                                             ; preds = %1024
  br label %1026

1026:                                             ; preds = %1025
  %1027 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1027, ptr %6, align 8, !tbaa !5
  br label %1074

1028:                                             ; preds = %931
  %1029 = load ptr, ptr %6, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.ligature_aggerator, ptr %1029, i32 0, i32 1
  %1031 = getelementptr inbounds %struct.UT_hash_handle, ptr %1030, i32 0, i32 0
  %1032 = load ptr, ptr %1031, align 8, !tbaa !26
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ligature_aggerator, ptr %1033, i32 0, i32 1
  %1035 = getelementptr inbounds %struct.UT_hash_handle, ptr %1034, i32 0, i32 0
  store ptr %1032, ptr %1035, align 8, !tbaa !26
  br label %1036

1036:                                             ; preds = %1028
  %1037 = load ptr, ptr %7, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct.ligature_aggerator, ptr %1037, i32 0, i32 1
  %1039 = getelementptr inbounds %struct.UT_hash_handle, ptr %1038, i32 0, i32 2
  store ptr null, ptr %1039, align 8, !tbaa !42
  %1040 = load ptr, ptr %6, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ligature_aggerator, ptr %1040, i32 0, i32 1
  %1042 = getelementptr inbounds %struct.UT_hash_handle, ptr %1041, i32 0, i32 0
  %1043 = load ptr, ptr %1042, align 8, !tbaa !26
  %1044 = getelementptr inbounds %struct.UT_hash_table, ptr %1043, i32 0, i32 4
  %1045 = load ptr, ptr %1044, align 8, !tbaa !44
  %1046 = load ptr, ptr %6, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.ligature_aggerator, ptr %1046, i32 0, i32 1
  %1048 = getelementptr inbounds %struct.UT_hash_handle, ptr %1047, i32 0, i32 0
  %1049 = load ptr, ptr %1048, align 8, !tbaa !26
  %1050 = getelementptr inbounds %struct.UT_hash_table, ptr %1049, i32 0, i32 5
  %1051 = load i64, ptr %1050, align 8, !tbaa !34
  %1052 = sub i64 0, %1051
  %1053 = getelementptr inbounds i8, ptr %1045, i64 %1052
  %1054 = load ptr, ptr %7, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ligature_aggerator, ptr %1054, i32 0, i32 1
  %1056 = getelementptr inbounds %struct.UT_hash_handle, ptr %1055, i32 0, i32 1
  store ptr %1053, ptr %1056, align 8, !tbaa !43
  %1057 = load ptr, ptr %7, align 8, !tbaa !5
  %1058 = load ptr, ptr %6, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ligature_aggerator, ptr %1058, i32 0, i32 1
  %1060 = getelementptr inbounds %struct.UT_hash_handle, ptr %1059, i32 0, i32 0
  %1061 = load ptr, ptr %1060, align 8, !tbaa !26
  %1062 = getelementptr inbounds %struct.UT_hash_table, ptr %1061, i32 0, i32 4
  %1063 = load ptr, ptr %1062, align 8, !tbaa !44
  %1064 = getelementptr inbounds %struct.UT_hash_handle, ptr %1063, i32 0, i32 2
  store ptr %1057, ptr %1064, align 8, !tbaa !47
  %1065 = load ptr, ptr %7, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ligature_aggerator, ptr %1065, i32 0, i32 1
  %1067 = load ptr, ptr %6, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ligature_aggerator, ptr %1067, i32 0, i32 1
  %1069 = getelementptr inbounds %struct.UT_hash_handle, ptr %1068, i32 0, i32 0
  %1070 = load ptr, ptr %1069, align 8, !tbaa !26
  %1071 = getelementptr inbounds %struct.UT_hash_table, ptr %1070, i32 0, i32 4
  store ptr %1066, ptr %1071, align 8, !tbaa !44
  br label %1072

1072:                                             ; preds = %1036
  br label %1073

1073:                                             ; preds = %1072
  br label %1074

1074:                                             ; preds = %1073, %1026
  br label %1075

1075:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %1076 = load ptr, ptr %6, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ligature_aggerator, ptr %1076, i32 0, i32 1
  %1078 = getelementptr inbounds %struct.UT_hash_handle, ptr %1077, i32 0, i32 0
  %1079 = load ptr, ptr %1078, align 8, !tbaa !26
  %1080 = getelementptr inbounds %struct.UT_hash_table, ptr %1079, i32 0, i32 3
  %1081 = load i32, ptr %1080, align 8, !tbaa !48
  %1082 = add i32 %1081, 1
  store i32 %1082, ptr %1080, align 8, !tbaa !48
  br label %1083

1083:                                             ; preds = %1075
  %1084 = load i32, ptr %18, align 4, !tbaa !9
  %1085 = load ptr, ptr %6, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.ligature_aggerator, ptr %1085, i32 0, i32 1
  %1087 = getelementptr inbounds %struct.UT_hash_handle, ptr %1086, i32 0, i32 0
  %1088 = load ptr, ptr %1087, align 8, !tbaa !26
  %1089 = getelementptr inbounds %struct.UT_hash_table, ptr %1088, i32 0, i32 1
  %1090 = load i32, ptr %1089, align 8, !tbaa !29
  %1091 = sub i32 %1090, 1
  %1092 = and i32 %1084, %1091
  store i32 %1092, ptr %23, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1083
  br label %1094

1094:                                             ; preds = %1093
  br label %1095

1095:                                             ; preds = %1094
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %1096 = load ptr, ptr %6, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.ligature_aggerator, ptr %1096, i32 0, i32 1
  %1098 = getelementptr inbounds %struct.UT_hash_handle, ptr %1097, i32 0, i32 0
  %1099 = load ptr, ptr %1098, align 8, !tbaa !26
  %1100 = getelementptr inbounds %struct.UT_hash_table, ptr %1099, i32 0, i32 0
  %1101 = load ptr, ptr %1100, align 8, !tbaa !31
  %1102 = load i32, ptr %23, align 4, !tbaa !9
  %1103 = zext i32 %1102 to i64
  %1104 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1101, i64 %1103
  store ptr %1104, ptr %24, align 8, !tbaa !5
  %1105 = load ptr, ptr %24, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1105, i32 0, i32 1
  %1107 = load i32, ptr %1106, align 8, !tbaa !49
  %1108 = add i32 %1107, 1
  store i32 %1108, ptr %1106, align 8, !tbaa !49
  %1109 = load ptr, ptr %24, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1109, i32 0, i32 0
  %1111 = load ptr, ptr %1110, align 8, !tbaa !32
  %1112 = load ptr, ptr %7, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ligature_aggerator, ptr %1112, i32 0, i32 1
  %1114 = getelementptr inbounds %struct.UT_hash_handle, ptr %1113, i32 0, i32 4
  store ptr %1111, ptr %1114, align 8, !tbaa !38
  %1115 = load ptr, ptr %7, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ligature_aggerator, ptr %1115, i32 0, i32 1
  %1117 = getelementptr inbounds %struct.UT_hash_handle, ptr %1116, i32 0, i32 3
  store ptr null, ptr %1117, align 8, !tbaa !50
  %1118 = load ptr, ptr %24, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1118, i32 0, i32 0
  %1120 = load ptr, ptr %1119, align 8, !tbaa !32
  %1121 = icmp ne ptr %1120, null
  br i1 %1121, label %1122, label %1129

1122:                                             ; preds = %1095
  %1123 = load ptr, ptr %7, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ligature_aggerator, ptr %1123, i32 0, i32 1
  %1125 = load ptr, ptr %24, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1125, i32 0, i32 0
  %1127 = load ptr, ptr %1126, align 8, !tbaa !32
  %1128 = getelementptr inbounds %struct.UT_hash_handle, ptr %1127, i32 0, i32 3
  store ptr %1124, ptr %1128, align 8, !tbaa !51
  br label %1129

1129:                                             ; preds = %1122, %1095
  %1130 = load ptr, ptr %7, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ligature_aggerator, ptr %1130, i32 0, i32 1
  %1132 = load ptr, ptr %24, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1132, i32 0, i32 0
  store ptr %1131, ptr %1133, align 8, !tbaa !32
  %1134 = load ptr, ptr %24, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1134, i32 0, i32 1
  %1136 = load i32, ptr %1135, align 8, !tbaa !49
  %1137 = load ptr, ptr %24, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1137, i32 0, i32 2
  %1139 = load i32, ptr %1138, align 4, !tbaa !52
  %1140 = add i32 %1139, 1
  %1141 = mul i32 %1140, 10
  %1142 = icmp uge i32 %1136, %1141
  br i1 %1142, label %1143, label %1399

1143:                                             ; preds = %1129
  %1144 = load ptr, ptr %7, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ligature_aggerator, ptr %1144, i32 0, i32 1
  %1146 = getelementptr inbounds %struct.UT_hash_handle, ptr %1145, i32 0, i32 0
  %1147 = load ptr, ptr %1146, align 8, !tbaa !26
  %1148 = getelementptr inbounds %struct.UT_hash_table, ptr %1147, i32 0, i32 9
  %1149 = load i32, ptr %1148, align 4, !tbaa !53
  %1150 = icmp ne i32 %1149, 0
  br i1 %1150, label %1399, label %1151

1151:                                             ; preds = %1143
  br label %1152

1152:                                             ; preds = %1151
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %1153 = load ptr, ptr %7, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.ligature_aggerator, ptr %1153, i32 0, i32 1
  %1155 = getelementptr inbounds %struct.UT_hash_handle, ptr %1154, i32 0, i32 0
  %1156 = load ptr, ptr %1155, align 8, !tbaa !26
  %1157 = getelementptr inbounds %struct.UT_hash_table, ptr %1156, i32 0, i32 1
  %1158 = load i32, ptr %1157, align 8, !tbaa !29
  %1159 = zext i32 %1158 to i64
  %1160 = mul i64 2, %1159
  %1161 = mul i64 %1160, 16
  %1162 = call noalias ptr @malloc(i64 noundef %1161) #11
  store ptr %1162, ptr %29, align 8, !tbaa !5
  %1163 = load ptr, ptr %29, align 8, !tbaa !5
  %1164 = icmp ne ptr %1163, null
  br i1 %1164, label %1166, label %1165

1165:                                             ; preds = %1152
  call void @exit(i32 noundef -1) #12
  unreachable

1166:                                             ; preds = %1152
  %1167 = load ptr, ptr %29, align 8, !tbaa !5
  %1168 = load ptr, ptr %7, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ligature_aggerator, ptr %1168, i32 0, i32 1
  %1170 = getelementptr inbounds %struct.UT_hash_handle, ptr %1169, i32 0, i32 0
  %1171 = load ptr, ptr %1170, align 8, !tbaa !26
  %1172 = getelementptr inbounds %struct.UT_hash_table, ptr %1171, i32 0, i32 1
  %1173 = load i32, ptr %1172, align 8, !tbaa !29
  %1174 = zext i32 %1173 to i64
  %1175 = mul i64 2, %1174
  %1176 = mul i64 %1175, 16
  call void @llvm.memset.p0.i64(ptr align 8 %1167, i8 0, i64 %1176, i1 false)
  %1177 = load ptr, ptr %7, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.ligature_aggerator, ptr %1177, i32 0, i32 1
  %1179 = getelementptr inbounds %struct.UT_hash_handle, ptr %1178, i32 0, i32 0
  %1180 = load ptr, ptr %1179, align 8, !tbaa !26
  %1181 = getelementptr inbounds %struct.UT_hash_table, ptr %1180, i32 0, i32 3
  %1182 = load i32, ptr %1181, align 8, !tbaa !48
  %1183 = load ptr, ptr %7, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ligature_aggerator, ptr %1183, i32 0, i32 1
  %1185 = getelementptr inbounds %struct.UT_hash_handle, ptr %1184, i32 0, i32 0
  %1186 = load ptr, ptr %1185, align 8, !tbaa !26
  %1187 = getelementptr inbounds %struct.UT_hash_table, ptr %1186, i32 0, i32 2
  %1188 = load i32, ptr %1187, align 4, !tbaa !45
  %1189 = add i32 %1188, 1
  %1190 = lshr i32 %1182, %1189
  %1191 = load ptr, ptr %7, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.ligature_aggerator, ptr %1191, i32 0, i32 1
  %1193 = getelementptr inbounds %struct.UT_hash_handle, ptr %1192, i32 0, i32 0
  %1194 = load ptr, ptr %1193, align 8, !tbaa !26
  %1195 = getelementptr inbounds %struct.UT_hash_table, ptr %1194, i32 0, i32 3
  %1196 = load i32, ptr %1195, align 8, !tbaa !48
  %1197 = load ptr, ptr %7, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.ligature_aggerator, ptr %1197, i32 0, i32 1
  %1199 = getelementptr inbounds %struct.UT_hash_handle, ptr %1198, i32 0, i32 0
  %1200 = load ptr, ptr %1199, align 8, !tbaa !26
  %1201 = getelementptr inbounds %struct.UT_hash_table, ptr %1200, i32 0, i32 1
  %1202 = load i32, ptr %1201, align 8, !tbaa !29
  %1203 = mul i32 %1202, 2
  %1204 = sub i32 %1203, 1
  %1205 = and i32 %1196, %1204
  %1206 = icmp ne i32 %1205, 0
  %1207 = zext i1 %1206 to i64
  %1208 = select i1 %1206, i32 1, i32 0
  %1209 = add i32 %1190, %1208
  %1210 = load ptr, ptr %7, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.ligature_aggerator, ptr %1210, i32 0, i32 1
  %1212 = getelementptr inbounds %struct.UT_hash_handle, ptr %1211, i32 0, i32 0
  %1213 = load ptr, ptr %1212, align 8, !tbaa !26
  %1214 = getelementptr inbounds %struct.UT_hash_table, ptr %1213, i32 0, i32 6
  store i32 %1209, ptr %1214, align 8, !tbaa !54
  %1215 = load ptr, ptr %7, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ligature_aggerator, ptr %1215, i32 0, i32 1
  %1217 = getelementptr inbounds %struct.UT_hash_handle, ptr %1216, i32 0, i32 0
  %1218 = load ptr, ptr %1217, align 8, !tbaa !26
  %1219 = getelementptr inbounds %struct.UT_hash_table, ptr %1218, i32 0, i32 7
  store i32 0, ptr %1219, align 4, !tbaa !55
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %1220

1220:                                             ; preds = %1322, %1166
  %1221 = load i32, ptr %26, align 4, !tbaa !9
  %1222 = load ptr, ptr %7, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ligature_aggerator, ptr %1222, i32 0, i32 1
  %1224 = getelementptr inbounds %struct.UT_hash_handle, ptr %1223, i32 0, i32 0
  %1225 = load ptr, ptr %1224, align 8, !tbaa !26
  %1226 = getelementptr inbounds %struct.UT_hash_table, ptr %1225, i32 0, i32 1
  %1227 = load i32, ptr %1226, align 8, !tbaa !29
  %1228 = icmp ult i32 %1221, %1227
  br i1 %1228, label %1229, label %1325

1229:                                             ; preds = %1220
  %1230 = load ptr, ptr %7, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.ligature_aggerator, ptr %1230, i32 0, i32 1
  %1232 = getelementptr inbounds %struct.UT_hash_handle, ptr %1231, i32 0, i32 0
  %1233 = load ptr, ptr %1232, align 8, !tbaa !26
  %1234 = getelementptr inbounds %struct.UT_hash_table, ptr %1233, i32 0, i32 0
  %1235 = load ptr, ptr %1234, align 8, !tbaa !31
  %1236 = load i32, ptr %26, align 4, !tbaa !9
  %1237 = zext i32 %1236 to i64
  %1238 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1235, i64 %1237
  %1239 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1238, i32 0, i32 0
  %1240 = load ptr, ptr %1239, align 8, !tbaa !32
  store ptr %1240, ptr %27, align 8, !tbaa !5
  br label %1241

1241:                                             ; preds = %1316, %1229
  %1242 = load ptr, ptr %27, align 8, !tbaa !5
  %1243 = icmp ne ptr %1242, null
  br i1 %1243, label %1244, label %1321

1244:                                             ; preds = %1241
  %1245 = load ptr, ptr %27, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.UT_hash_handle, ptr %1245, i32 0, i32 4
  %1247 = load ptr, ptr %1246, align 8, !tbaa !56
  store ptr %1247, ptr %28, align 8, !tbaa !5
  br label %1248

1248:                                             ; preds = %1244
  %1249 = load ptr, ptr %27, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.UT_hash_handle, ptr %1249, i32 0, i32 7
  %1251 = load i32, ptr %1250, align 4, !tbaa !57
  %1252 = load ptr, ptr %7, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ligature_aggerator, ptr %1252, i32 0, i32 1
  %1254 = getelementptr inbounds %struct.UT_hash_handle, ptr %1253, i32 0, i32 0
  %1255 = load ptr, ptr %1254, align 8, !tbaa !26
  %1256 = getelementptr inbounds %struct.UT_hash_table, ptr %1255, i32 0, i32 1
  %1257 = load i32, ptr %1256, align 8, !tbaa !29
  %1258 = mul i32 %1257, 2
  %1259 = sub i32 %1258, 1
  %1260 = and i32 %1251, %1259
  store i32 %1260, ptr %25, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1248
  br label %1262

1262:                                             ; preds = %1261
  %1263 = load ptr, ptr %29, align 8, !tbaa !5
  %1264 = load i32, ptr %25, align 4, !tbaa !9
  %1265 = zext i32 %1264 to i64
  %1266 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1263, i64 %1265
  store ptr %1266, ptr %30, align 8, !tbaa !5
  %1267 = load ptr, ptr %30, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1267, i32 0, i32 1
  %1269 = load i32, ptr %1268, align 8, !tbaa !49
  %1270 = add i32 %1269, 1
  store i32 %1270, ptr %1268, align 8, !tbaa !49
  %1271 = load ptr, ptr %7, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.ligature_aggerator, ptr %1271, i32 0, i32 1
  %1273 = getelementptr inbounds %struct.UT_hash_handle, ptr %1272, i32 0, i32 0
  %1274 = load ptr, ptr %1273, align 8, !tbaa !26
  %1275 = getelementptr inbounds %struct.UT_hash_table, ptr %1274, i32 0, i32 6
  %1276 = load i32, ptr %1275, align 8, !tbaa !54
  %1277 = icmp ugt i32 %1270, %1276
  br i1 %1277, label %1278, label %1298

1278:                                             ; preds = %1262
  %1279 = load ptr, ptr %7, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.ligature_aggerator, ptr %1279, i32 0, i32 1
  %1281 = getelementptr inbounds %struct.UT_hash_handle, ptr %1280, i32 0, i32 0
  %1282 = load ptr, ptr %1281, align 8, !tbaa !26
  %1283 = getelementptr inbounds %struct.UT_hash_table, ptr %1282, i32 0, i32 7
  %1284 = load i32, ptr %1283, align 4, !tbaa !55
  %1285 = add i32 %1284, 1
  store i32 %1285, ptr %1283, align 4, !tbaa !55
  %1286 = load ptr, ptr %30, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1286, i32 0, i32 1
  %1288 = load i32, ptr %1287, align 8, !tbaa !49
  %1289 = load ptr, ptr %7, align 8, !tbaa !5
  %1290 = getelementptr inbounds %struct.ligature_aggerator, ptr %1289, i32 0, i32 1
  %1291 = getelementptr inbounds %struct.UT_hash_handle, ptr %1290, i32 0, i32 0
  %1292 = load ptr, ptr %1291, align 8, !tbaa !26
  %1293 = getelementptr inbounds %struct.UT_hash_table, ptr %1292, i32 0, i32 6
  %1294 = load i32, ptr %1293, align 8, !tbaa !54
  %1295 = udiv i32 %1288, %1294
  %1296 = load ptr, ptr %30, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1296, i32 0, i32 2
  store i32 %1295, ptr %1297, align 4, !tbaa !52
  br label %1298

1298:                                             ; preds = %1278, %1262
  %1299 = load ptr, ptr %27, align 8, !tbaa !5
  %1300 = getelementptr inbounds %struct.UT_hash_handle, ptr %1299, i32 0, i32 3
  store ptr null, ptr %1300, align 8, !tbaa !51
  %1301 = load ptr, ptr %30, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1301, i32 0, i32 0
  %1303 = load ptr, ptr %1302, align 8, !tbaa !32
  %1304 = load ptr, ptr %27, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.UT_hash_handle, ptr %1304, i32 0, i32 4
  store ptr %1303, ptr %1305, align 8, !tbaa !56
  %1306 = load ptr, ptr %30, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1306, i32 0, i32 0
  %1308 = load ptr, ptr %1307, align 8, !tbaa !32
  %1309 = icmp ne ptr %1308, null
  br i1 %1309, label %1310, label %1316

1310:                                             ; preds = %1298
  %1311 = load ptr, ptr %27, align 8, !tbaa !5
  %1312 = load ptr, ptr %30, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1312, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8, !tbaa !32
  %1315 = getelementptr inbounds %struct.UT_hash_handle, ptr %1314, i32 0, i32 3
  store ptr %1311, ptr %1315, align 8, !tbaa !51
  br label %1316

1316:                                             ; preds = %1310, %1298
  %1317 = load ptr, ptr %27, align 8, !tbaa !5
  %1318 = load ptr, ptr %30, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1318, i32 0, i32 0
  store ptr %1317, ptr %1319, align 8, !tbaa !32
  %1320 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %1320, ptr %27, align 8, !tbaa !5
  br label %1241, !llvm.loop !58

1321:                                             ; preds = %1241
  br label %1322

1322:                                             ; preds = %1321
  %1323 = load i32, ptr %26, align 4, !tbaa !9
  %1324 = add i32 %1323, 1
  store i32 %1324, ptr %26, align 4, !tbaa !9
  br label %1220, !llvm.loop !59

1325:                                             ; preds = %1220
  %1326 = load ptr, ptr %7, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.ligature_aggerator, ptr %1326, i32 0, i32 1
  %1328 = getelementptr inbounds %struct.UT_hash_handle, ptr %1327, i32 0, i32 0
  %1329 = load ptr, ptr %1328, align 8, !tbaa !26
  %1330 = getelementptr inbounds %struct.UT_hash_table, ptr %1329, i32 0, i32 0
  %1331 = load ptr, ptr %1330, align 8, !tbaa !31
  call void @free(ptr noundef %1331) #9
  %1332 = load ptr, ptr %7, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ligature_aggerator, ptr %1332, i32 0, i32 1
  %1334 = getelementptr inbounds %struct.UT_hash_handle, ptr %1333, i32 0, i32 0
  %1335 = load ptr, ptr %1334, align 8, !tbaa !26
  %1336 = getelementptr inbounds %struct.UT_hash_table, ptr %1335, i32 0, i32 1
  %1337 = load i32, ptr %1336, align 8, !tbaa !29
  %1338 = mul i32 %1337, 2
  store i32 %1338, ptr %1336, align 8, !tbaa !29
  %1339 = load ptr, ptr %7, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.ligature_aggerator, ptr %1339, i32 0, i32 1
  %1341 = getelementptr inbounds %struct.UT_hash_handle, ptr %1340, i32 0, i32 0
  %1342 = load ptr, ptr %1341, align 8, !tbaa !26
  %1343 = getelementptr inbounds %struct.UT_hash_table, ptr %1342, i32 0, i32 2
  %1344 = load i32, ptr %1343, align 4, !tbaa !45
  %1345 = add i32 %1344, 1
  store i32 %1345, ptr %1343, align 4, !tbaa !45
  %1346 = load ptr, ptr %29, align 8, !tbaa !5
  %1347 = load ptr, ptr %7, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ligature_aggerator, ptr %1347, i32 0, i32 1
  %1349 = getelementptr inbounds %struct.UT_hash_handle, ptr %1348, i32 0, i32 0
  %1350 = load ptr, ptr %1349, align 8, !tbaa !26
  %1351 = getelementptr inbounds %struct.UT_hash_table, ptr %1350, i32 0, i32 0
  store ptr %1346, ptr %1351, align 8, !tbaa !31
  %1352 = load ptr, ptr %7, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ligature_aggerator, ptr %1352, i32 0, i32 1
  %1354 = getelementptr inbounds %struct.UT_hash_handle, ptr %1353, i32 0, i32 0
  %1355 = load ptr, ptr %1354, align 8, !tbaa !26
  %1356 = getelementptr inbounds %struct.UT_hash_table, ptr %1355, i32 0, i32 7
  %1357 = load i32, ptr %1356, align 4, !tbaa !55
  %1358 = load ptr, ptr %7, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.ligature_aggerator, ptr %1358, i32 0, i32 1
  %1360 = getelementptr inbounds %struct.UT_hash_handle, ptr %1359, i32 0, i32 0
  %1361 = load ptr, ptr %1360, align 8, !tbaa !26
  %1362 = getelementptr inbounds %struct.UT_hash_table, ptr %1361, i32 0, i32 3
  %1363 = load i32, ptr %1362, align 8, !tbaa !48
  %1364 = lshr i32 %1363, 1
  %1365 = icmp ugt i32 %1357, %1364
  br i1 %1365, label %1366, label %1374

1366:                                             ; preds = %1325
  %1367 = load ptr, ptr %7, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.ligature_aggerator, ptr %1367, i32 0, i32 1
  %1369 = getelementptr inbounds %struct.UT_hash_handle, ptr %1368, i32 0, i32 0
  %1370 = load ptr, ptr %1369, align 8, !tbaa !26
  %1371 = getelementptr inbounds %struct.UT_hash_table, ptr %1370, i32 0, i32 8
  %1372 = load i32, ptr %1371, align 8, !tbaa !60
  %1373 = add i32 %1372, 1
  br label %1375

1374:                                             ; preds = %1325
  br label %1375

1375:                                             ; preds = %1374, %1366
  %1376 = phi i32 [ %1373, %1366 ], [ 0, %1374 ]
  %1377 = load ptr, ptr %7, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ligature_aggerator, ptr %1377, i32 0, i32 1
  %1379 = getelementptr inbounds %struct.UT_hash_handle, ptr %1378, i32 0, i32 0
  %1380 = load ptr, ptr %1379, align 8, !tbaa !26
  %1381 = getelementptr inbounds %struct.UT_hash_table, ptr %1380, i32 0, i32 8
  store i32 %1376, ptr %1381, align 8, !tbaa !60
  %1382 = load ptr, ptr %7, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.ligature_aggerator, ptr %1382, i32 0, i32 1
  %1384 = getelementptr inbounds %struct.UT_hash_handle, ptr %1383, i32 0, i32 0
  %1385 = load ptr, ptr %1384, align 8, !tbaa !26
  %1386 = getelementptr inbounds %struct.UT_hash_table, ptr %1385, i32 0, i32 8
  %1387 = load i32, ptr %1386, align 8, !tbaa !60
  %1388 = icmp ugt i32 %1387, 1
  br i1 %1388, label %1389, label %1395

1389:                                             ; preds = %1375
  %1390 = load ptr, ptr %7, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.ligature_aggerator, ptr %1390, i32 0, i32 1
  %1392 = getelementptr inbounds %struct.UT_hash_handle, ptr %1391, i32 0, i32 0
  %1393 = load ptr, ptr %1392, align 8, !tbaa !26
  %1394 = getelementptr inbounds %struct.UT_hash_table, ptr %1393, i32 0, i32 9
  store i32 1, ptr %1394, align 4, !tbaa !53
  br label %1395

1395:                                             ; preds = %1389, %1375
  br label %1396

1396:                                             ; preds = %1395
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %1397

1397:                                             ; preds = %1396
  br label %1398

1398:                                             ; preds = %1397
  br label %1399

1399:                                             ; preds = %1398, %1143, %1129
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %1400

1400:                                             ; preds = %1399
  br label %1401

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

1402:                                             ; preds = %1401
  br label %1403

1403:                                             ; preds = %1402
  br label %1404

1404:                                             ; preds = %1403
  br label %1405

1405:                                             ; preds = %1404
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  br label %1406

1406:                                             ; preds = %1405
  br label %1407

1407:                                             ; preds = %1406
  br label %1408

1408:                                             ; preds = %1407, %557
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %1409

1409:                                             ; preds = %1408
  %1410 = load i16, ptr %10, align 2, !tbaa !14
  %1411 = add i16 %1410, 1
  store i16 %1411, ptr %10, align 2, !tbaa !14
  br label %60, !llvm.loop !61

1412:                                             ; preds = %66
  br label %1413

1413:                                             ; preds = %1412
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %1414 = load ptr, ptr %6, align 8, !tbaa !5
  %1415 = icmp ne ptr %1414, null
  br i1 %1415, label %1416, label %1686

1416:                                             ; preds = %1413
  store i32 1, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  %1417 = load ptr, ptr %6, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.ligature_aggerator, ptr %1417, i32 0, i32 1
  store ptr %1418, ptr %40, align 8, !tbaa !5
  br label %1419

1419:                                             ; preds = %1682, %1416
  %1420 = load i32, ptr %32, align 4, !tbaa !9
  %1421 = icmp ne i32 %1420, 0
  br i1 %1421, label %1422, label %1685

1422:                                             ; preds = %1419
  %1423 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1423, ptr %37, align 8, !tbaa !5
  store ptr null, ptr %40, align 8, !tbaa !5
  store ptr null, ptr %41, align 8, !tbaa !5
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %1424

1424:                                             ; preds = %1652, %1422
  %1425 = load ptr, ptr %37, align 8, !tbaa !5
  %1426 = icmp ne ptr %1425, null
  br i1 %1426, label %1427, label %1654

1427:                                             ; preds = %1424
  %1428 = load i32, ptr %33, align 4, !tbaa !9
  %1429 = add i32 %1428, 1
  store i32 %1429, ptr %33, align 4, !tbaa !9
  %1430 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1430, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1431

1431:                                             ; preds = %1460, %1427
  %1432 = load i32, ptr %31, align 4, !tbaa !9
  %1433 = load i32, ptr %34, align 4, !tbaa !9
  %1434 = icmp ult i32 %1432, %1433
  br i1 %1434, label %1435, label %1463

1435:                                             ; preds = %1431
  %1436 = load i32, ptr %35, align 4, !tbaa !9
  %1437 = add i32 %1436, 1
  store i32 %1437, ptr %35, align 4, !tbaa !9
  %1438 = load ptr, ptr %38, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.UT_hash_handle, ptr %1438, i32 0, i32 2
  %1440 = load ptr, ptr %1439, align 8, !tbaa !47
  %1441 = icmp ne ptr %1440, null
  br i1 %1441, label %1442, label %1453

1442:                                             ; preds = %1435
  %1443 = load ptr, ptr %38, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.UT_hash_handle, ptr %1443, i32 0, i32 2
  %1445 = load ptr, ptr %1444, align 8, !tbaa !47
  %1446 = load ptr, ptr %6, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ligature_aggerator, ptr %1446, i32 0, i32 1
  %1448 = getelementptr inbounds %struct.UT_hash_handle, ptr %1447, i32 0, i32 0
  %1449 = load ptr, ptr %1448, align 8, !tbaa !26
  %1450 = getelementptr inbounds %struct.UT_hash_table, ptr %1449, i32 0, i32 5
  %1451 = load i64, ptr %1450, align 8, !tbaa !34
  %1452 = getelementptr inbounds i8, ptr %1445, i64 %1451
  br label %1454

1453:                                             ; preds = %1435
  br label %1454

1454:                                             ; preds = %1453, %1442
  %1455 = phi ptr [ %1452, %1442 ], [ null, %1453 ]
  store ptr %1455, ptr %38, align 8, !tbaa !5
  %1456 = load ptr, ptr %38, align 8, !tbaa !5
  %1457 = icmp eq ptr %1456, null
  br i1 %1457, label %1458, label %1459

1458:                                             ; preds = %1454
  br label %1463

1459:                                             ; preds = %1454
  br label %1460

1460:                                             ; preds = %1459
  %1461 = load i32, ptr %31, align 4, !tbaa !9
  %1462 = add i32 %1461, 1
  store i32 %1462, ptr %31, align 4, !tbaa !9
  br label %1431, !llvm.loop !62

1463:                                             ; preds = %1458, %1431
  %1464 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %1464, ptr %36, align 4, !tbaa !9
  br label %1465

1465:                                             ; preds = %1650, %1463
  %1466 = load i32, ptr %35, align 4, !tbaa !9
  %1467 = icmp ne i32 %1466, 0
  br i1 %1467, label %1476, label %1468

1468:                                             ; preds = %1465
  %1469 = load i32, ptr %36, align 4, !tbaa !9
  %1470 = icmp ne i32 %1469, 0
  br i1 %1470, label %1471, label %1474

1471:                                             ; preds = %1468
  %1472 = load ptr, ptr %38, align 8, !tbaa !5
  %1473 = icmp ne ptr %1472, null
  br label %1474

1474:                                             ; preds = %1471, %1468
  %1475 = phi i1 [ false, %1468 ], [ %1473, %1471 ]
  br label %1476

1476:                                             ; preds = %1474, %1465
  %1477 = phi i1 [ true, %1465 ], [ %1475, %1474 ]
  br i1 %1477, label %1478, label %1652

1478:                                             ; preds = %1476
  %1479 = load i32, ptr %35, align 4, !tbaa !9
  %1480 = icmp eq i32 %1479, 0
  br i1 %1480, label %1481, label %1503

1481:                                             ; preds = %1478
  %1482 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1482, ptr %39, align 8, !tbaa !5
  %1483 = load ptr, ptr %38, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.UT_hash_handle, ptr %1483, i32 0, i32 2
  %1485 = load ptr, ptr %1484, align 8, !tbaa !47
  %1486 = icmp ne ptr %1485, null
  br i1 %1486, label %1487, label %1498

1487:                                             ; preds = %1481
  %1488 = load ptr, ptr %38, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.UT_hash_handle, ptr %1488, i32 0, i32 2
  %1490 = load ptr, ptr %1489, align 8, !tbaa !47
  %1491 = load ptr, ptr %6, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.ligature_aggerator, ptr %1491, i32 0, i32 1
  %1493 = getelementptr inbounds %struct.UT_hash_handle, ptr %1492, i32 0, i32 0
  %1494 = load ptr, ptr %1493, align 8, !tbaa !26
  %1495 = getelementptr inbounds %struct.UT_hash_table, ptr %1494, i32 0, i32 5
  %1496 = load i64, ptr %1495, align 8, !tbaa !34
  %1497 = getelementptr inbounds i8, ptr %1490, i64 %1496
  br label %1499

1498:                                             ; preds = %1481
  br label %1499

1499:                                             ; preds = %1498, %1487
  %1500 = phi ptr [ %1497, %1487 ], [ null, %1498 ]
  store ptr %1500, ptr %38, align 8, !tbaa !5
  %1501 = load i32, ptr %36, align 4, !tbaa !9
  %1502 = add i32 %1501, -1
  store i32 %1502, ptr %36, align 4, !tbaa !9
  br label %1606

1503:                                             ; preds = %1478
  %1504 = load i32, ptr %36, align 4, !tbaa !9
  %1505 = icmp eq i32 %1504, 0
  br i1 %1505, label %1509, label %1506

1506:                                             ; preds = %1503
  %1507 = load ptr, ptr %38, align 8, !tbaa !5
  %1508 = icmp eq ptr %1507, null
  br i1 %1508, label %1509, label %1535

1509:                                             ; preds = %1506, %1503
  %1510 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1510, ptr %39, align 8, !tbaa !5
  %1511 = load ptr, ptr %37, align 8, !tbaa !5
  %1512 = icmp ne ptr %1511, null
  br i1 %1512, label %1513, label %1532

1513:                                             ; preds = %1509
  %1514 = load ptr, ptr %37, align 8, !tbaa !5
  %1515 = getelementptr inbounds %struct.UT_hash_handle, ptr %1514, i32 0, i32 2
  %1516 = load ptr, ptr %1515, align 8, !tbaa !47
  %1517 = icmp ne ptr %1516, null
  br i1 %1517, label %1518, label %1529

1518:                                             ; preds = %1513
  %1519 = load ptr, ptr %37, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.UT_hash_handle, ptr %1519, i32 0, i32 2
  %1521 = load ptr, ptr %1520, align 8, !tbaa !47
  %1522 = load ptr, ptr %6, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.ligature_aggerator, ptr %1522, i32 0, i32 1
  %1524 = getelementptr inbounds %struct.UT_hash_handle, ptr %1523, i32 0, i32 0
  %1525 = load ptr, ptr %1524, align 8, !tbaa !26
  %1526 = getelementptr inbounds %struct.UT_hash_table, ptr %1525, i32 0, i32 5
  %1527 = load i64, ptr %1526, align 8, !tbaa !34
  %1528 = getelementptr inbounds i8, ptr %1521, i64 %1527
  br label %1530

1529:                                             ; preds = %1513
  br label %1530

1530:                                             ; preds = %1529, %1518
  %1531 = phi ptr [ %1528, %1518 ], [ null, %1529 ]
  store ptr %1531, ptr %37, align 8, !tbaa !5
  br label %1532

1532:                                             ; preds = %1530, %1509
  %1533 = load i32, ptr %35, align 4, !tbaa !9
  %1534 = add i32 %1533, -1
  store i32 %1534, ptr %35, align 4, !tbaa !9
  br label %1605

1535:                                             ; preds = %1506
  %1536 = load ptr, ptr %37, align 8, !tbaa !5
  %1537 = load ptr, ptr %6, align 8, !tbaa !5
  %1538 = getelementptr inbounds %struct.ligature_aggerator, ptr %1537, i32 0, i32 1
  %1539 = getelementptr inbounds %struct.UT_hash_handle, ptr %1538, i32 0, i32 0
  %1540 = load ptr, ptr %1539, align 8, !tbaa !26
  %1541 = getelementptr inbounds %struct.UT_hash_table, ptr %1540, i32 0, i32 5
  %1542 = load i64, ptr %1541, align 8, !tbaa !34
  %1543 = sub i64 0, %1542
  %1544 = getelementptr inbounds i8, ptr %1536, i64 %1543
  %1545 = load ptr, ptr %38, align 8, !tbaa !5
  %1546 = load ptr, ptr %6, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.ligature_aggerator, ptr %1546, i32 0, i32 1
  %1548 = getelementptr inbounds %struct.UT_hash_handle, ptr %1547, i32 0, i32 0
  %1549 = load ptr, ptr %1548, align 8, !tbaa !26
  %1550 = getelementptr inbounds %struct.UT_hash_table, ptr %1549, i32 0, i32 5
  %1551 = load i64, ptr %1550, align 8, !tbaa !34
  %1552 = sub i64 0, %1551
  %1553 = getelementptr inbounds i8, ptr %1545, i64 %1552
  %1554 = call i32 @by_gid(ptr noundef %1544, ptr noundef %1553)
  %1555 = icmp sle i32 %1554, 0
  br i1 %1555, label %1556, label %1582

1556:                                             ; preds = %1535
  %1557 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1557, ptr %39, align 8, !tbaa !5
  %1558 = load ptr, ptr %37, align 8, !tbaa !5
  %1559 = icmp ne ptr %1558, null
  br i1 %1559, label %1560, label %1579

1560:                                             ; preds = %1556
  %1561 = load ptr, ptr %37, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.UT_hash_handle, ptr %1561, i32 0, i32 2
  %1563 = load ptr, ptr %1562, align 8, !tbaa !47
  %1564 = icmp ne ptr %1563, null
  br i1 %1564, label %1565, label %1576

1565:                                             ; preds = %1560
  %1566 = load ptr, ptr %37, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.UT_hash_handle, ptr %1566, i32 0, i32 2
  %1568 = load ptr, ptr %1567, align 8, !tbaa !47
  %1569 = load ptr, ptr %6, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.ligature_aggerator, ptr %1569, i32 0, i32 1
  %1571 = getelementptr inbounds %struct.UT_hash_handle, ptr %1570, i32 0, i32 0
  %1572 = load ptr, ptr %1571, align 8, !tbaa !26
  %1573 = getelementptr inbounds %struct.UT_hash_table, ptr %1572, i32 0, i32 5
  %1574 = load i64, ptr %1573, align 8, !tbaa !34
  %1575 = getelementptr inbounds i8, ptr %1568, i64 %1574
  br label %1577

1576:                                             ; preds = %1560
  br label %1577

1577:                                             ; preds = %1576, %1565
  %1578 = phi ptr [ %1575, %1565 ], [ null, %1576 ]
  store ptr %1578, ptr %37, align 8, !tbaa !5
  br label %1579

1579:                                             ; preds = %1577, %1556
  %1580 = load i32, ptr %35, align 4, !tbaa !9
  %1581 = add i32 %1580, -1
  store i32 %1581, ptr %35, align 4, !tbaa !9
  br label %1604

1582:                                             ; preds = %1535
  %1583 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1583, ptr %39, align 8, !tbaa !5
  %1584 = load ptr, ptr %38, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.UT_hash_handle, ptr %1584, i32 0, i32 2
  %1586 = load ptr, ptr %1585, align 8, !tbaa !47
  %1587 = icmp ne ptr %1586, null
  br i1 %1587, label %1588, label %1599

1588:                                             ; preds = %1582
  %1589 = load ptr, ptr %38, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.UT_hash_handle, ptr %1589, i32 0, i32 2
  %1591 = load ptr, ptr %1590, align 8, !tbaa !47
  %1592 = load ptr, ptr %6, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.ligature_aggerator, ptr %1592, i32 0, i32 1
  %1594 = getelementptr inbounds %struct.UT_hash_handle, ptr %1593, i32 0, i32 0
  %1595 = load ptr, ptr %1594, align 8, !tbaa !26
  %1596 = getelementptr inbounds %struct.UT_hash_table, ptr %1595, i32 0, i32 5
  %1597 = load i64, ptr %1596, align 8, !tbaa !34
  %1598 = getelementptr inbounds i8, ptr %1591, i64 %1597
  br label %1600

1599:                                             ; preds = %1582
  br label %1600

1600:                                             ; preds = %1599, %1588
  %1601 = phi ptr [ %1598, %1588 ], [ null, %1599 ]
  store ptr %1601, ptr %38, align 8, !tbaa !5
  %1602 = load i32, ptr %36, align 4, !tbaa !9
  %1603 = add i32 %1602, -1
  store i32 %1603, ptr %36, align 4, !tbaa !9
  br label %1604

1604:                                             ; preds = %1600, %1579
  br label %1605

1605:                                             ; preds = %1604, %1532
  br label %1606

1606:                                             ; preds = %1605, %1499
  %1607 = load ptr, ptr %41, align 8, !tbaa !5
  %1608 = icmp ne ptr %1607, null
  br i1 %1608, label %1609, label %1627

1609:                                             ; preds = %1606
  %1610 = load ptr, ptr %39, align 8, !tbaa !5
  %1611 = icmp ne ptr %1610, null
  br i1 %1611, label %1612, label %1622

1612:                                             ; preds = %1609
  %1613 = load ptr, ptr %39, align 8, !tbaa !5
  %1614 = load ptr, ptr %6, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.ligature_aggerator, ptr %1614, i32 0, i32 1
  %1616 = getelementptr inbounds %struct.UT_hash_handle, ptr %1615, i32 0, i32 0
  %1617 = load ptr, ptr %1616, align 8, !tbaa !26
  %1618 = getelementptr inbounds %struct.UT_hash_table, ptr %1617, i32 0, i32 5
  %1619 = load i64, ptr %1618, align 8, !tbaa !34
  %1620 = sub i64 0, %1619
  %1621 = getelementptr inbounds i8, ptr %1613, i64 %1620
  br label %1623

1622:                                             ; preds = %1609
  br label %1623

1623:                                             ; preds = %1622, %1612
  %1624 = phi ptr [ %1621, %1612 ], [ null, %1622 ]
  %1625 = load ptr, ptr %41, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.UT_hash_handle, ptr %1625, i32 0, i32 2
  store ptr %1624, ptr %1626, align 8, !tbaa !47
  br label %1629

1627:                                             ; preds = %1606
  %1628 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1628, ptr %40, align 8, !tbaa !5
  br label %1629

1629:                                             ; preds = %1627, %1623
  %1630 = load ptr, ptr %39, align 8, !tbaa !5
  %1631 = icmp ne ptr %1630, null
  br i1 %1631, label %1632, label %1650

1632:                                             ; preds = %1629
  %1633 = load ptr, ptr %41, align 8, !tbaa !5
  %1634 = icmp ne ptr %1633, null
  br i1 %1634, label %1635, label %1645

1635:                                             ; preds = %1632
  %1636 = load ptr, ptr %41, align 8, !tbaa !5
  %1637 = load ptr, ptr %6, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ligature_aggerator, ptr %1637, i32 0, i32 1
  %1639 = getelementptr inbounds %struct.UT_hash_handle, ptr %1638, i32 0, i32 0
  %1640 = load ptr, ptr %1639, align 8, !tbaa !26
  %1641 = getelementptr inbounds %struct.UT_hash_table, ptr %1640, i32 0, i32 5
  %1642 = load i64, ptr %1641, align 8, !tbaa !34
  %1643 = sub i64 0, %1642
  %1644 = getelementptr inbounds i8, ptr %1636, i64 %1643
  br label %1646

1645:                                             ; preds = %1632
  br label %1646

1646:                                             ; preds = %1645, %1635
  %1647 = phi ptr [ %1644, %1635 ], [ null, %1645 ]
  %1648 = load ptr, ptr %39, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.UT_hash_handle, ptr %1648, i32 0, i32 1
  store ptr %1647, ptr %1649, align 8, !tbaa !63
  br label %1650

1650:                                             ; preds = %1646, %1629
  %1651 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1651, ptr %41, align 8, !tbaa !5
  br label %1465, !llvm.loop !64

1652:                                             ; preds = %1476
  %1653 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1653, ptr %37, align 8, !tbaa !5
  br label %1424, !llvm.loop !65

1654:                                             ; preds = %1424
  %1655 = load ptr, ptr %41, align 8, !tbaa !5
  %1656 = icmp ne ptr %1655, null
  br i1 %1656, label %1657, label %1660

1657:                                             ; preds = %1654
  %1658 = load ptr, ptr %41, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.UT_hash_handle, ptr %1658, i32 0, i32 2
  store ptr null, ptr %1659, align 8, !tbaa !47
  br label %1660

1660:                                             ; preds = %1657, %1654
  %1661 = load i32, ptr %33, align 4, !tbaa !9
  %1662 = icmp ule i32 %1661, 1
  br i1 %1662, label %1663, label %1682

1663:                                             ; preds = %1660
  store i32 0, ptr %32, align 4, !tbaa !9
  %1664 = load ptr, ptr %41, align 8, !tbaa !5
  %1665 = load ptr, ptr %6, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.ligature_aggerator, ptr %1665, i32 0, i32 1
  %1667 = getelementptr inbounds %struct.UT_hash_handle, ptr %1666, i32 0, i32 0
  %1668 = load ptr, ptr %1667, align 8, !tbaa !26
  %1669 = getelementptr inbounds %struct.UT_hash_table, ptr %1668, i32 0, i32 4
  store ptr %1664, ptr %1669, align 8, !tbaa !44
  br label %1670

1670:                                             ; preds = %1663
  %1671 = load ptr, ptr %40, align 8, !tbaa !5
  %1672 = load ptr, ptr %6, align 8, !tbaa !5
  %1673 = getelementptr inbounds %struct.ligature_aggerator, ptr %1672, i32 0, i32 1
  %1674 = getelementptr inbounds %struct.UT_hash_handle, ptr %1673, i32 0, i32 0
  %1675 = load ptr, ptr %1674, align 8, !tbaa !26
  %1676 = getelementptr inbounds %struct.UT_hash_table, ptr %1675, i32 0, i32 5
  %1677 = load i64, ptr %1676, align 8, !tbaa !34
  %1678 = sub i64 0, %1677
  %1679 = getelementptr inbounds i8, ptr %1671, i64 %1678
  store ptr %1679, ptr %6, align 8, !tbaa !5
  br label %1680

1680:                                             ; preds = %1670
  br label %1681

1681:                                             ; preds = %1680
  br label %1682

1682:                                             ; preds = %1681, %1660
  %1683 = load i32, ptr %34, align 4, !tbaa !9
  %1684 = mul i32 %1683, 2
  store i32 %1684, ptr %34, align 4, !tbaa !9
  br label %1419, !llvm.loop !66

1685:                                             ; preds = %1419
  br label %1686

1686:                                             ; preds = %1685, %1413
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %1687

1687:                                             ; preds = %1686
  br label %1688

1688:                                             ; preds = %1687
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %1689 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 6), align 8, !tbaa !67
  %1690 = call ptr (...) %1689()
  store ptr %1690, ptr %42, align 8, !tbaa !5
  %1691 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1691, ptr %7, align 8, !tbaa !5
  br label %1692

1692:                                             ; preds = %1712, %1688
  %1693 = load ptr, ptr %7, align 8, !tbaa !5
  %1694 = icmp ne ptr %1693, null
  br i1 %1694, label %1695, label %1717

1695:                                             ; preds = %1692
  %1696 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 15), align 8, !tbaa !69
  %1697 = load ptr, ptr %42, align 8, !tbaa !5
  %1698 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 8), align 8, !tbaa !70
  %1699 = load ptr, ptr %7, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.ligature_aggerator, ptr %1699, i32 0, i32 0
  %1701 = load i32, ptr %1700, align 8, !tbaa !40
  %1702 = trunc i32 %1701 to i16
  %1703 = call { i64, ptr } %1698(i16 noundef zeroext %1702)
  %1704 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 0
  %1705 = extractvalue { i64, ptr } %1703, 0
  store i64 %1705, ptr %1704, align 8
  %1706 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 1
  %1707 = extractvalue { i64, ptr } %1703, 1
  store ptr %1707, ptr %1706, align 8
  %1708 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 0
  %1709 = load i64, ptr %1708, align 8
  %1710 = getelementptr inbounds { i64, ptr }, ptr %43, i32 0, i32 1
  %1711 = load ptr, ptr %1710, align 8
  call void %1696(ptr noundef %1697, i64 %1709, ptr %1711)
  br label %1712

1712:                                             ; preds = %1695
  %1713 = load ptr, ptr %7, align 8, !tbaa !5
  %1714 = getelementptr inbounds %struct.ligature_aggerator, ptr %1713, i32 0, i32 1
  %1715 = getelementptr inbounds %struct.UT_hash_handle, ptr %1714, i32 0, i32 2
  %1716 = load ptr, ptr %1715, align 8, !tbaa !42
  store ptr %1716, ptr %7, align 8, !tbaa !5
  br label %1692, !llvm.loop !72

1717:                                             ; preds = %1692
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %1718 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 12), align 8, !tbaa !73
  %1719 = load ptr, ptr %42, align 8, !tbaa !5
  %1720 = call ptr %1718(ptr noundef %1719)
  %1721 = call ptr @bk_newBlockFromBuffer(ptr noundef %1720)
  %1722 = load ptr, ptr %42, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.otl_Coverage, ptr %1722, i32 0, i32 0
  %1724 = load i16, ptr %1723, align 8, !tbaa !74
  %1725 = zext i16 %1724 to i32
  %1726 = call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef 1, i32 noundef 16, ptr noundef %1721, i32 noundef 2, i32 noundef %1725, i32 noundef 0)
  store ptr %1726, ptr %44, align 8, !tbaa !5
  %1727 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1727, ptr %7, align 8, !tbaa !5
  br label %1728

1728:                                             ; preds = %1868, %1717
  %1729 = load ptr, ptr %7, align 8, !tbaa !5
  %1730 = icmp ne ptr %1729, null
  br i1 %1730, label %1731, label %1873

1731:                                             ; preds = %1728
  call void @llvm.lifetime.start.p0(i64 2, ptr %45) #9
  store i16 0, ptr %45, align 2, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 2, ptr %46) #9
  store i16 0, ptr %46, align 2, !tbaa !14
  br label %1732

1732:                                             ; preds = %1762, %1731
  %1733 = load i16, ptr %46, align 2, !tbaa !14
  %1734 = zext i16 %1733 to i32
  %1735 = load i16, ptr %9, align 2, !tbaa !14
  %1736 = zext i16 %1735 to i32
  %1737 = icmp slt i32 %1734, %1736
  br i1 %1737, label %1739, label %1738

1738:                                             ; preds = %1732
  call void @llvm.lifetime.end.p0(i64 2, ptr %46) #9
  br label %1765

1739:                                             ; preds = %1732
  %1740 = load ptr, ptr %5, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1740, i32 0, i32 2
  %1742 = load ptr, ptr %1741, align 8, !tbaa !16
  %1743 = load i16, ptr %46, align 2, !tbaa !14
  %1744 = zext i16 %1743 to i64
  %1745 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1742, i64 %1744
  %1746 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1745, i32 0, i32 0
  %1747 = load ptr, ptr %1746, align 8, !tbaa !17
  %1748 = getelementptr inbounds %struct.otl_Coverage, ptr %1747, i32 0, i32 2
  %1749 = load ptr, ptr %1748, align 8, !tbaa !20
  %1750 = getelementptr inbounds %struct.otfcc_Handle, ptr %1749, i64 0
  %1751 = getelementptr inbounds %struct.otfcc_Handle, ptr %1750, i32 0, i32 1
  %1752 = load i16, ptr %1751, align 4, !tbaa !22
  %1753 = zext i16 %1752 to i32
  %1754 = load ptr, ptr %7, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ligature_aggerator, ptr %1754, i32 0, i32 0
  %1756 = load i32, ptr %1755, align 8, !tbaa !40
  %1757 = icmp eq i32 %1753, %1756
  br i1 %1757, label %1758, label %1761

1758:                                             ; preds = %1739
  %1759 = load i16, ptr %45, align 2, !tbaa !14
  %1760 = add i16 %1759, 1
  store i16 %1760, ptr %45, align 2, !tbaa !14
  br label %1761

1761:                                             ; preds = %1758, %1739
  br label %1762

1762:                                             ; preds = %1761
  %1763 = load i16, ptr %46, align 2, !tbaa !14
  %1764 = add i16 %1763, 1
  store i16 %1764, ptr %46, align 2, !tbaa !14
  br label %1732, !llvm.loop !75

1765:                                             ; preds = %1738
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %1766 = load i16, ptr %45, align 2, !tbaa !14
  %1767 = zext i16 %1766 to i32
  %1768 = call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef %1767, i32 noundef 0)
  store ptr %1768, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %48) #9
  store i16 0, ptr %48, align 2, !tbaa !14
  br label %1769

1769:                                             ; preds = %1861, %1765
  %1770 = load i16, ptr %48, align 2, !tbaa !14
  %1771 = zext i16 %1770 to i32
  %1772 = load i16, ptr %9, align 2, !tbaa !14
  %1773 = zext i16 %1772 to i32
  %1774 = icmp slt i32 %1771, %1773
  br i1 %1774, label %1776, label %1775

1775:                                             ; preds = %1769
  store i32 86, ptr %49, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %48) #9
  br label %1864

1776:                                             ; preds = %1769
  %1777 = load ptr, ptr %5, align 8, !tbaa !5
  %1778 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1777, i32 0, i32 2
  %1779 = load ptr, ptr %1778, align 8, !tbaa !16
  %1780 = load i16, ptr %48, align 2, !tbaa !14
  %1781 = zext i16 %1780 to i64
  %1782 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1779, i64 %1781
  %1783 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1782, i32 0, i32 0
  %1784 = load ptr, ptr %1783, align 8, !tbaa !17
  %1785 = getelementptr inbounds %struct.otl_Coverage, ptr %1784, i32 0, i32 2
  %1786 = load ptr, ptr %1785, align 8, !tbaa !20
  %1787 = getelementptr inbounds %struct.otfcc_Handle, ptr %1786, i64 0
  %1788 = getelementptr inbounds %struct.otfcc_Handle, ptr %1787, i32 0, i32 1
  %1789 = load i16, ptr %1788, align 4, !tbaa !22
  %1790 = zext i16 %1789 to i32
  %1791 = load ptr, ptr %7, align 8, !tbaa !5
  %1792 = getelementptr inbounds %struct.ligature_aggerator, ptr %1791, i32 0, i32 0
  %1793 = load i32, ptr %1792, align 8, !tbaa !40
  %1794 = icmp eq i32 %1790, %1793
  br i1 %1794, label %1795, label %1860

1795:                                             ; preds = %1776
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %1796 = load ptr, ptr %5, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1796, i32 0, i32 2
  %1798 = load ptr, ptr %1797, align 8, !tbaa !16
  %1799 = load i16, ptr %48, align 2, !tbaa !14
  %1800 = zext i16 %1799 to i64
  %1801 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1798, i64 %1800
  %1802 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1801, i32 0, i32 1
  %1803 = getelementptr inbounds %struct.otfcc_Handle, ptr %1802, i32 0, i32 1
  %1804 = load i16, ptr %1803, align 4, !tbaa !76
  %1805 = zext i16 %1804 to i32
  %1806 = load ptr, ptr %5, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1806, i32 0, i32 2
  %1808 = load ptr, ptr %1807, align 8, !tbaa !16
  %1809 = load i16, ptr %48, align 2, !tbaa !14
  %1810 = zext i16 %1809 to i64
  %1811 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1808, i64 %1810
  %1812 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1811, i32 0, i32 0
  %1813 = load ptr, ptr %1812, align 8, !tbaa !17
  %1814 = getelementptr inbounds %struct.otl_Coverage, ptr %1813, i32 0, i32 0
  %1815 = load i16, ptr %1814, align 8, !tbaa !74
  %1816 = zext i16 %1815 to i32
  %1817 = call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef %1805, i32 noundef 2, i32 noundef %1816, i32 noundef 0)
  store ptr %1817, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %51) #9
  store i16 1, ptr %51, align 2, !tbaa !14
  br label %1818

1818:                                             ; preds = %1853, %1795
  %1819 = load i16, ptr %51, align 2, !tbaa !14
  %1820 = zext i16 %1819 to i32
  %1821 = load ptr, ptr %5, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1821, i32 0, i32 2
  %1823 = load ptr, ptr %1822, align 8, !tbaa !16
  %1824 = load i16, ptr %48, align 2, !tbaa !14
  %1825 = zext i16 %1824 to i64
  %1826 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1823, i64 %1825
  %1827 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1826, i32 0, i32 0
  %1828 = load ptr, ptr %1827, align 8, !tbaa !17
  %1829 = getelementptr inbounds %struct.otl_Coverage, ptr %1828, i32 0, i32 0
  %1830 = load i16, ptr %1829, align 8, !tbaa !74
  %1831 = zext i16 %1830 to i32
  %1832 = icmp slt i32 %1820, %1831
  br i1 %1832, label %1834, label %1833

1833:                                             ; preds = %1818
  store i32 89, ptr %49, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %51) #9
  br label %1856

1834:                                             ; preds = %1818
  %1835 = load ptr, ptr %50, align 8, !tbaa !5
  %1836 = load ptr, ptr %5, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.subtable_gsub_ligature, ptr %1836, i32 0, i32 2
  %1838 = load ptr, ptr %1837, align 8, !tbaa !16
  %1839 = load i16, ptr %48, align 2, !tbaa !14
  %1840 = zext i16 %1839 to i64
  %1841 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1838, i64 %1840
  %1842 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %1841, i32 0, i32 0
  %1843 = load ptr, ptr %1842, align 8, !tbaa !17
  %1844 = getelementptr inbounds %struct.otl_Coverage, ptr %1843, i32 0, i32 2
  %1845 = load ptr, ptr %1844, align 8, !tbaa !20
  %1846 = load i16, ptr %51, align 2, !tbaa !14
  %1847 = zext i16 %1846 to i64
  %1848 = getelementptr inbounds %struct.otfcc_Handle, ptr %1845, i64 %1847
  %1849 = getelementptr inbounds %struct.otfcc_Handle, ptr %1848, i32 0, i32 1
  %1850 = load i16, ptr %1849, align 4, !tbaa !22
  %1851 = zext i16 %1850 to i32
  %1852 = call ptr (ptr, i32, ...) @bk_push(ptr noundef %1835, i32 noundef 2, i32 noundef %1851, i32 noundef 0)
  br label %1853

1853:                                             ; preds = %1834
  %1854 = load i16, ptr %51, align 2, !tbaa !14
  %1855 = add i16 %1854, 1
  store i16 %1855, ptr %51, align 2, !tbaa !14
  br label %1818, !llvm.loop !77

1856:                                             ; preds = %1833
  %1857 = load ptr, ptr %47, align 8, !tbaa !5
  %1858 = load ptr, ptr %50, align 8, !tbaa !5
  %1859 = call ptr (ptr, i32, ...) @bk_push(ptr noundef %1857, i32 noundef 16, ptr noundef %1858, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %1860

1860:                                             ; preds = %1856, %1776
  br label %1861

1861:                                             ; preds = %1860
  %1862 = load i16, ptr %48, align 2, !tbaa !14
  %1863 = add i16 %1862, 1
  store i16 %1863, ptr %48, align 2, !tbaa !14
  br label %1769, !llvm.loop !78

1864:                                             ; preds = %1775
  %1865 = load ptr, ptr %44, align 8, !tbaa !5
  %1866 = load ptr, ptr %47, align 8, !tbaa !5
  %1867 = call ptr (ptr, i32, ...) @bk_push(ptr noundef %1865, i32 noundef 16, ptr noundef %1866, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %45) #9
  br label %1868

1868:                                             ; preds = %1864
  %1869 = load ptr, ptr %7, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.ligature_aggerator, ptr %1869, i32 0, i32 1
  %1871 = getelementptr inbounds %struct.UT_hash_handle, ptr %1870, i32 0, i32 2
  %1872 = load ptr, ptr %1871, align 8, !tbaa !42
  store ptr %1872, ptr %7, align 8, !tbaa !5
  br label %1728, !llvm.loop !79

1873:                                             ; preds = %1728
  %1874 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 7), align 8, !tbaa !80
  %1875 = load ptr, ptr %42, align 8, !tbaa !5
  call void %1874(ptr noundef %1875)
  %1876 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1876, ptr %7, align 8, !tbaa !5
  %1877 = load ptr, ptr %6, align 8, !tbaa !5
  %1878 = icmp ne ptr %1877, null
  br i1 %1878, label %1879, label %1884

1879:                                             ; preds = %1873
  %1880 = load ptr, ptr %6, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.ligature_aggerator, ptr %1880, i32 0, i32 1
  %1882 = getelementptr inbounds %struct.UT_hash_handle, ptr %1881, i32 0, i32 2
  %1883 = load ptr, ptr %1882, align 8, !tbaa !42
  br label %1885

1884:                                             ; preds = %1873
  br label %1885

1885:                                             ; preds = %1884, %1879
  %1886 = phi ptr [ %1883, %1879 ], [ null, %1884 ]
  store ptr %1886, ptr %8, align 8, !tbaa !5
  br label %1887

1887:                                             ; preds = %2076, %1885
  %1888 = load ptr, ptr %7, align 8, !tbaa !5
  %1889 = icmp ne ptr %1888, null
  br i1 %1889, label %1890, label %2078

1890:                                             ; preds = %1887
  br label %1891

1891:                                             ; preds = %1890
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %1892 = load ptr, ptr %7, align 8, !tbaa !5
  %1893 = getelementptr inbounds %struct.ligature_aggerator, ptr %1892, i32 0, i32 1
  store ptr %1893, ptr %52, align 8, !tbaa !5
  %1894 = load ptr, ptr %52, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.UT_hash_handle, ptr %1894, i32 0, i32 1
  %1896 = load ptr, ptr %1895, align 8, !tbaa !63
  %1897 = icmp eq ptr %1896, null
  br i1 %1897, label %1898, label %1914

1898:                                             ; preds = %1891
  %1899 = load ptr, ptr %52, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.UT_hash_handle, ptr %1899, i32 0, i32 2
  %1901 = load ptr, ptr %1900, align 8, !tbaa !47
  %1902 = icmp eq ptr %1901, null
  br i1 %1902, label %1903, label %1914

1903:                                             ; preds = %1898
  %1904 = load ptr, ptr %6, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ligature_aggerator, ptr %1904, i32 0, i32 1
  %1906 = getelementptr inbounds %struct.UT_hash_handle, ptr %1905, i32 0, i32 0
  %1907 = load ptr, ptr %1906, align 8, !tbaa !26
  %1908 = getelementptr inbounds %struct.UT_hash_table, ptr %1907, i32 0, i32 0
  %1909 = load ptr, ptr %1908, align 8, !tbaa !31
  call void @free(ptr noundef %1909) #9
  %1910 = load ptr, ptr %6, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.ligature_aggerator, ptr %1910, i32 0, i32 1
  %1912 = getelementptr inbounds %struct.UT_hash_handle, ptr %1911, i32 0, i32 0
  %1913 = load ptr, ptr %1912, align 8, !tbaa !26
  call void @free(ptr noundef %1913) #9
  store ptr null, ptr %6, align 8, !tbaa !5
  br label %2062

1914:                                             ; preds = %1898, %1891
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %1915 = load ptr, ptr %52, align 8, !tbaa !5
  %1916 = load ptr, ptr %6, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.ligature_aggerator, ptr %1916, i32 0, i32 1
  %1918 = getelementptr inbounds %struct.UT_hash_handle, ptr %1917, i32 0, i32 0
  %1919 = load ptr, ptr %1918, align 8, !tbaa !26
  %1920 = getelementptr inbounds %struct.UT_hash_table, ptr %1919, i32 0, i32 4
  %1921 = load ptr, ptr %1920, align 8, !tbaa !44
  %1922 = icmp eq ptr %1915, %1921
  br i1 %1922, label %1923, label %1939

1923:                                             ; preds = %1914
  %1924 = load ptr, ptr %52, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.UT_hash_handle, ptr %1924, i32 0, i32 1
  %1926 = load ptr, ptr %1925, align 8, !tbaa !63
  %1927 = load ptr, ptr %6, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ligature_aggerator, ptr %1927, i32 0, i32 1
  %1929 = getelementptr inbounds %struct.UT_hash_handle, ptr %1928, i32 0, i32 0
  %1930 = load ptr, ptr %1929, align 8, !tbaa !26
  %1931 = getelementptr inbounds %struct.UT_hash_table, ptr %1930, i32 0, i32 5
  %1932 = load i64, ptr %1931, align 8, !tbaa !34
  %1933 = getelementptr inbounds i8, ptr %1926, i64 %1932
  %1934 = load ptr, ptr %6, align 8, !tbaa !5
  %1935 = getelementptr inbounds %struct.ligature_aggerator, ptr %1934, i32 0, i32 1
  %1936 = getelementptr inbounds %struct.UT_hash_handle, ptr %1935, i32 0, i32 0
  %1937 = load ptr, ptr %1936, align 8, !tbaa !26
  %1938 = getelementptr inbounds %struct.UT_hash_table, ptr %1937, i32 0, i32 4
  store ptr %1933, ptr %1938, align 8, !tbaa !44
  br label %1939

1939:                                             ; preds = %1923, %1914
  %1940 = load ptr, ptr %52, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.UT_hash_handle, ptr %1940, i32 0, i32 1
  %1942 = load ptr, ptr %1941, align 8, !tbaa !63
  %1943 = icmp ne ptr %1942, null
  br i1 %1943, label %1944, label %1959

1944:                                             ; preds = %1939
  %1945 = load ptr, ptr %52, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.UT_hash_handle, ptr %1945, i32 0, i32 2
  %1947 = load ptr, ptr %1946, align 8, !tbaa !47
  %1948 = load ptr, ptr %52, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.UT_hash_handle, ptr %1948, i32 0, i32 1
  %1950 = load ptr, ptr %1949, align 8, !tbaa !63
  %1951 = load ptr, ptr %6, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ligature_aggerator, ptr %1951, i32 0, i32 1
  %1953 = getelementptr inbounds %struct.UT_hash_handle, ptr %1952, i32 0, i32 0
  %1954 = load ptr, ptr %1953, align 8, !tbaa !26
  %1955 = getelementptr inbounds %struct.UT_hash_table, ptr %1954, i32 0, i32 5
  %1956 = load i64, ptr %1955, align 8, !tbaa !34
  %1957 = getelementptr inbounds i8, ptr %1950, i64 %1956
  %1958 = getelementptr inbounds %struct.UT_hash_handle, ptr %1957, i32 0, i32 2
  store ptr %1947, ptr %1958, align 8, !tbaa !47
  br label %1966

1959:                                             ; preds = %1939
  br label %1960

1960:                                             ; preds = %1959
  %1961 = load ptr, ptr %52, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.UT_hash_handle, ptr %1961, i32 0, i32 2
  %1963 = load ptr, ptr %1962, align 8, !tbaa !47
  store ptr %1963, ptr %6, align 8, !tbaa !5
  br label %1964

1964:                                             ; preds = %1960
  br label %1965

1965:                                             ; preds = %1964
  br label %1966

1966:                                             ; preds = %1965, %1944
  %1967 = load ptr, ptr %52, align 8, !tbaa !5
  %1968 = getelementptr inbounds %struct.UT_hash_handle, ptr %1967, i32 0, i32 2
  %1969 = load ptr, ptr %1968, align 8, !tbaa !47
  %1970 = icmp ne ptr %1969, null
  br i1 %1970, label %1971, label %1986

1971:                                             ; preds = %1966
  %1972 = load ptr, ptr %52, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.UT_hash_handle, ptr %1972, i32 0, i32 1
  %1974 = load ptr, ptr %1973, align 8, !tbaa !63
  %1975 = load ptr, ptr %52, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.UT_hash_handle, ptr %1975, i32 0, i32 2
  %1977 = load ptr, ptr %1976, align 8, !tbaa !47
  %1978 = load ptr, ptr %6, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ligature_aggerator, ptr %1978, i32 0, i32 1
  %1980 = getelementptr inbounds %struct.UT_hash_handle, ptr %1979, i32 0, i32 0
  %1981 = load ptr, ptr %1980, align 8, !tbaa !26
  %1982 = getelementptr inbounds %struct.UT_hash_table, ptr %1981, i32 0, i32 5
  %1983 = load i64, ptr %1982, align 8, !tbaa !34
  %1984 = getelementptr inbounds i8, ptr %1977, i64 %1983
  %1985 = getelementptr inbounds %struct.UT_hash_handle, ptr %1984, i32 0, i32 1
  store ptr %1974, ptr %1985, align 8, !tbaa !63
  br label %1986

1986:                                             ; preds = %1971, %1966
  br label %1987

1987:                                             ; preds = %1986
  %1988 = load ptr, ptr %52, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.UT_hash_handle, ptr %1988, i32 0, i32 7
  %1990 = load i32, ptr %1989, align 4, !tbaa !57
  %1991 = load ptr, ptr %6, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.ligature_aggerator, ptr %1991, i32 0, i32 1
  %1993 = getelementptr inbounds %struct.UT_hash_handle, ptr %1992, i32 0, i32 0
  %1994 = load ptr, ptr %1993, align 8, !tbaa !26
  %1995 = getelementptr inbounds %struct.UT_hash_table, ptr %1994, i32 0, i32 1
  %1996 = load i32, ptr %1995, align 8, !tbaa !29
  %1997 = sub i32 %1996, 1
  %1998 = and i32 %1990, %1997
  store i32 %1998, ptr %53, align 4, !tbaa !9
  br label %1999

1999:                                             ; preds = %1987
  br label %2000

2000:                                             ; preds = %1999
  br label %2001

2001:                                             ; preds = %2000
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %2002 = load ptr, ptr %6, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ligature_aggerator, ptr %2002, i32 0, i32 1
  %2004 = getelementptr inbounds %struct.UT_hash_handle, ptr %2003, i32 0, i32 0
  %2005 = load ptr, ptr %2004, align 8, !tbaa !26
  %2006 = getelementptr inbounds %struct.UT_hash_table, ptr %2005, i32 0, i32 0
  %2007 = load ptr, ptr %2006, align 8, !tbaa !31
  %2008 = load i32, ptr %53, align 4, !tbaa !9
  %2009 = zext i32 %2008 to i64
  %2010 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2007, i64 %2009
  store ptr %2010, ptr %54, align 8, !tbaa !5
  %2011 = load ptr, ptr %54, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2011, i32 0, i32 1
  %2013 = load i32, ptr %2012, align 8, !tbaa !49
  %2014 = add i32 %2013, -1
  store i32 %2014, ptr %2012, align 8, !tbaa !49
  %2015 = load ptr, ptr %54, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2015, i32 0, i32 0
  %2017 = load ptr, ptr %2016, align 8, !tbaa !32
  %2018 = load ptr, ptr %52, align 8, !tbaa !5
  %2019 = icmp eq ptr %2017, %2018
  br i1 %2019, label %2020, label %2026

2020:                                             ; preds = %2001
  %2021 = load ptr, ptr %52, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.UT_hash_handle, ptr %2021, i32 0, i32 4
  %2023 = load ptr, ptr %2022, align 8, !tbaa !56
  %2024 = load ptr, ptr %54, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2024, i32 0, i32 0
  store ptr %2023, ptr %2025, align 8, !tbaa !32
  br label %2026

2026:                                             ; preds = %2020, %2001
  %2027 = load ptr, ptr %52, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.UT_hash_handle, ptr %2027, i32 0, i32 3
  %2029 = load ptr, ptr %2028, align 8, !tbaa !51
  %2030 = icmp ne ptr %2029, null
  br i1 %2030, label %2031, label %2039

2031:                                             ; preds = %2026
  %2032 = load ptr, ptr %52, align 8, !tbaa !5
  %2033 = getelementptr inbounds %struct.UT_hash_handle, ptr %2032, i32 0, i32 4
  %2034 = load ptr, ptr %2033, align 8, !tbaa !56
  %2035 = load ptr, ptr %52, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.UT_hash_handle, ptr %2035, i32 0, i32 3
  %2037 = load ptr, ptr %2036, align 8, !tbaa !51
  %2038 = getelementptr inbounds %struct.UT_hash_handle, ptr %2037, i32 0, i32 4
  store ptr %2034, ptr %2038, align 8, !tbaa !56
  br label %2039

2039:                                             ; preds = %2031, %2026
  %2040 = load ptr, ptr %52, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.UT_hash_handle, ptr %2040, i32 0, i32 4
  %2042 = load ptr, ptr %2041, align 8, !tbaa !56
  %2043 = icmp ne ptr %2042, null
  br i1 %2043, label %2044, label %2052

2044:                                             ; preds = %2039
  %2045 = load ptr, ptr %52, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.UT_hash_handle, ptr %2045, i32 0, i32 3
  %2047 = load ptr, ptr %2046, align 8, !tbaa !51
  %2048 = load ptr, ptr %52, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.UT_hash_handle, ptr %2048, i32 0, i32 4
  %2050 = load ptr, ptr %2049, align 8, !tbaa !56
  %2051 = getelementptr inbounds %struct.UT_hash_handle, ptr %2050, i32 0, i32 3
  store ptr %2047, ptr %2051, align 8, !tbaa !51
  br label %2052

2052:                                             ; preds = %2044, %2039
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %2053

2053:                                             ; preds = %2052
  br label %2054

2054:                                             ; preds = %2053
  %2055 = load ptr, ptr %6, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ligature_aggerator, ptr %2055, i32 0, i32 1
  %2057 = getelementptr inbounds %struct.UT_hash_handle, ptr %2056, i32 0, i32 0
  %2058 = load ptr, ptr %2057, align 8, !tbaa !26
  %2059 = getelementptr inbounds %struct.UT_hash_table, ptr %2058, i32 0, i32 3
  %2060 = load i32, ptr %2059, align 8, !tbaa !48
  %2061 = add i32 %2060, -1
  store i32 %2061, ptr %2059, align 8, !tbaa !48
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %2062

2062:                                             ; preds = %2054, %1903
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %2063

2063:                                             ; preds = %2062
  br label %2064

2064:                                             ; preds = %2063
  %2065 = load ptr, ptr %7, align 8, !tbaa !5
  call void @free(ptr noundef %2065) #9
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %2066

2066:                                             ; preds = %2064
  %2067 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2067, ptr %7, align 8, !tbaa !5
  %2068 = load ptr, ptr %8, align 8, !tbaa !5
  %2069 = icmp ne ptr %2068, null
  br i1 %2069, label %2070, label %2075

2070:                                             ; preds = %2066
  %2071 = load ptr, ptr %8, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.ligature_aggerator, ptr %2071, i32 0, i32 1
  %2073 = getelementptr inbounds %struct.UT_hash_handle, ptr %2072, i32 0, i32 2
  %2074 = load ptr, ptr %2073, align 8, !tbaa !42
  br label %2076

2075:                                             ; preds = %2066
  br label %2076

2076:                                             ; preds = %2075, %2070
  %2077 = phi ptr [ %2074, %2070 ], [ null, %2075 ]
  store ptr %2077, ptr %8, align 8, !tbaa !5
  br label %1887, !llvm.loop !81

2078:                                             ; preds = %1887
  %2079 = load ptr, ptr %44, align 8, !tbaa !5
  %2080 = call ptr @bk_build_Block(ptr noundef %2079)
  store i32 1, ptr %49, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #9
  ret ptr %2080
}

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @__caryll_allocate_clean(i64 noundef, i64 noundef) #3

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #5

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

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

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

declare ptr @bk_new_Block(i32 noundef, ...) #8

declare ptr @bk_newBlockFromBuffer(ptr noundef) #8

declare ptr @bk_push(ptr noundef, i32 noundef, ...) #8

declare ptr @bk_build_Block(ptr noundef) #8

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8, !6, i64 16}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = !{!12, !6, i64 16}
!17 = !{!18, !6, i64 0}
!18 = !{!"", !6, i64 0, !19, i64 8}
!19 = !{!"otfcc_Handle", !10, i64 0, !15, i64 4, !6, i64 8}
!20 = !{!21, !6, i64 8}
!21 = !{!"", !15, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!19, !15, i64 4}
!23 = !{!7, !7, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!27, !6, i64 8}
!27 = !{!"", !10, i64 0, !28, i64 8}
!28 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52}
!29 = !{!30, !10, i64 8}
!30 = !{!"UT_hash_table", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !13, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!31 = !{!30, !6, i64 0}
!32 = !{!33, !6, i64 0}
!33 = !{!"UT_hash_bucket", !6, i64 0, !10, i64 8, !10, i64 12}
!34 = !{!30, !13, i64 32}
!35 = !{!27, !10, i64 60}
!36 = !{!27, !10, i64 56}
!37 = !{!27, !6, i64 48}
!38 = !{!27, !6, i64 40}
!39 = distinct !{!39, !25}
!40 = !{!27, !10, i64 0}
!41 = distinct !{!41, !25}
!42 = !{!27, !6, i64 24}
!43 = !{!27, !6, i64 16}
!44 = !{!30, !6, i64 24}
!45 = !{!30, !10, i64 12}
!46 = !{!30, !10, i64 56}
!47 = !{!28, !6, i64 16}
!48 = !{!30, !10, i64 16}
!49 = !{!33, !10, i64 8}
!50 = !{!27, !6, i64 32}
!51 = !{!28, !6, i64 24}
!52 = !{!33, !10, i64 12}
!53 = !{!30, !10, i64 52}
!54 = !{!30, !10, i64 40}
!55 = !{!30, !10, i64 44}
!56 = !{!28, !6, i64 32}
!57 = !{!28, !10, i64 52}
!58 = distinct !{!58, !25}
!59 = distinct !{!59, !25}
!60 = !{!30, !10, i64 48}
!61 = distinct !{!61, !25}
!62 = distinct !{!62, !25}
!63 = !{!28, !6, i64 8}
!64 = distinct !{!64, !25}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = !{!68, !6, i64 48}
!68 = !{!"__otfcc_ICoverage", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!69 = !{!68, !6, i64 120}
!70 = !{!71, !6, i64 64}
!71 = !{!"otfcc_HandlePackage", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!72 = distinct !{!72, !25}
!73 = !{!68, !6, i64 96}
!74 = !{!21, !15, i64 0}
!75 = distinct !{!75, !25}
!76 = !{!18, !15, i64 12}
!77 = distinct !{!77, !25}
!78 = distinct !{!78, !25}
!79 = distinct !{!79, !25}
!80 = !{!68, !6, i64 56}
!81 = distinct !{!81, !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.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_GsubLigatureEntry = type { ptr, %struct.otfcc_Handle }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otl_iCoverage = external local_unnamed_addr constant %struct.__otfcc_ICoverage, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

; 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: nounwind uwtable
define dso_local ptr @otfcc_build_gsub_ligature_subtable(ptr nocapture noundef readonly %0, i32 noundef %1) local_unnamed_addr #1 {
  %3 = alloca i32, align 4
  %4 = load i64, ptr %0, align 8, !tbaa !5
  %5 = and i64 %4, 65535
  %.not850 = icmp eq i64 %5, 0
  br i1 %.not850, label %.loopexit774.thread, label %.lr.ph796

.lr.ph796:                                        ; preds = %2
  %6 = getelementptr inbounds i8, ptr %0, i64 16
  %7 = trunc i64 %4 to i16
  br label %8

8:                                                ; preds = %.lr.ph796, %.loopexit776
  %.0793 = phi ptr [ null, %.lr.ph796 ], [ %.2, %.loopexit776 ]
  %.0586792 = phi i16 [ 0, %.lr.ph796 ], [ %219, %.loopexit776 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #10
  %9 = load ptr, ptr %6, align 8, !tbaa !11
  %10 = zext i16 %.0586792 to i64
  %11 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %9, i64 %10
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %12, i64 8
  %14 = load ptr, ptr %13, align 8, !tbaa !17
  %15 = getelementptr inbounds i8, ptr %14, i64 4
  %16 = load i16, ptr %15, align 4, !tbaa !19
  %17 = zext i16 %16 to i32
  store i32 %17, ptr %3, align 4, !tbaa !20
  %18 = and i16 %16, -256
  %19 = zext i16 %18 to i32
  %20 = and i16 %16, 255
  %21 = zext nneg i16 %20 to i32
  %22 = add nuw nsw i32 %19, 17973517
  %23 = add nuw nsw i32 %22, %21
  %24 = xor i32 %23, 522093
  %25 = sub nuw nsw i32 -1622558010, %24
  %26 = shl i32 %24, 8
  %27 = xor i32 %25, %26
  %28 = add nuw nsw i32 %24, %27
  %29 = sub nuw nsw i32 -17973517, %28
  %30 = lshr i32 %27, 13
  %31 = xor i32 %29, %30
  %32 = add nuw nsw i32 %27, %31
  %33 = sub nsw i32 %24, %32
  %34 = lshr i32 %31, 12
  %35 = xor i32 %33, %34
  %36 = add nuw nsw i32 %31, %35
  %37 = sub nuw i32 %27, %36
  %38 = shl i32 %35, 16
  %39 = xor i32 %37, %38
  %40 = add i32 %35, %39
  %41 = sub i32 %31, %40
  %42 = lshr i32 %39, 5
  %43 = xor i32 %41, %42
  %44 = add i32 %39, %43
  %45 = sub i32 %35, %44
  %46 = lshr i32 %43, 3
  %47 = xor i32 %45, %46
  %48 = add i32 %43, %47
  %49 = sub i32 %39, %48
  %50 = shl i32 %47, 10
  %51 = xor i32 %49, %50
  %52 = add i32 %47, %51
  %53 = sub i32 %43, %52
  %54 = lshr i32 %51, 15
  %55 = xor i32 %53, %54
  %.not716 = icmp eq ptr %.0793, null
  br i1 %.not716, label %.loopexit775, label %56

56:                                               ; preds = %8
  %57 = getelementptr inbounds i8, ptr %.0793, i64 8
  %58 = load ptr, ptr %57, align 8, !tbaa !21
  %59 = getelementptr inbounds i8, ptr %58, i64 8
  %60 = load i32, ptr %59, align 8, !tbaa !24
  %61 = add i32 %60, -1
  %62 = and i32 %61, %55
  %63 = load ptr, ptr %58, align 8, !tbaa !26
  %64 = zext i32 %62 to i64
  %65 = getelementptr inbounds %struct.UT_hash_bucket, ptr %63, i64 %64
  %66 = load ptr, ptr %65, align 8, !tbaa !27
  %.not717 = icmp eq ptr %66, null
  br i1 %.not717, label %.loopexit775, label %.lr.ph

.lr.ph:                                           ; preds = %56
  %67 = getelementptr inbounds i8, ptr %58, i64 32
  %68 = load i64, ptr %67, align 8, !tbaa !29
  %69 = sub i64 0, %68
  %70 = getelementptr inbounds i8, ptr %66, i64 %69
  %71 = getelementptr inbounds i8, ptr %58, i64 32
  br label %72

72:                                               ; preds = %87, %.lr.ph
  %.1578784 = phi ptr [ %70, %.lr.ph ], [ %90, %87 ]
  %73 = getelementptr inbounds i8, ptr %.1578784, i64 60
  %74 = load i32, ptr %73, align 4, !tbaa !30
  %75 = icmp eq i32 %74, %55
  br i1 %75, label %76, label %84

76:                                               ; preds = %72
  %77 = getelementptr inbounds i8, ptr %.1578784, i64 56
  %78 = load i32, ptr %77, align 8, !tbaa !31
  %79 = icmp eq i32 %78, 4
  br i1 %79, label %80, label %84

80:                                               ; preds = %76
  %81 = getelementptr inbounds i8, ptr %.1578784, i64 48
  %82 = load ptr, ptr %81, align 8, !tbaa !32
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %82, ptr noundef nonnull dereferenceable(4) %3, i64 4)
  %83 = icmp eq i32 %bcmp, 0
  br i1 %83, label %.loopexit776, label %84

84:                                               ; preds = %80, %76, %72
  %85 = getelementptr inbounds i8, ptr %.1578784, i64 40
  %86 = load ptr, ptr %85, align 8, !tbaa !33
  %.not719 = icmp eq ptr %86, null
  br i1 %.not719, label %.loopexit775, label %87

87:                                               ; preds = %84
  %88 = load i64, ptr %71, align 8, !tbaa !29
  %89 = sub i64 0, %88
  %90 = getelementptr inbounds i8, ptr %86, i64 %89
  br label %72, !llvm.loop !34

.loopexit775:                                     ; preds = %84, %56, %8
  %91 = tail call ptr @__caryll_allocate_clean(i64 noundef 64, i64 noundef 132)
  store i32 %17, ptr %91, align 8, !tbaa !36
  %92 = getelementptr inbounds i8, ptr %91, i64 8
  %93 = getelementptr inbounds i8, ptr %91, i64 60
  store i32 %55, ptr %93, align 4, !tbaa !30
  %94 = getelementptr inbounds i8, ptr %91, i64 48
  store ptr %91, ptr %94, align 8, !tbaa !32
  %95 = getelementptr inbounds i8, ptr %91, i64 56
  store i32 4, ptr %95, align 8, !tbaa !31
  br i1 %.not716, label %96, label %110

96:                                               ; preds = %.loopexit775
  %97 = getelementptr inbounds i8, ptr %91, i64 16
  %98 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #11
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %97, i8 0, i64 16, i1 false)
  store ptr %98, ptr %92, align 8, !tbaa !21
  %.not721 = icmp eq ptr %98, null
  br i1 %.not721, label %99, label %100

99:                                               ; preds = %96
  tail call void @exit(i32 noundef -1) #12
  unreachable

100:                                              ; preds = %96
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %98, i8 0, i64 64, i1 false)
  %101 = load ptr, ptr %92, align 8, !tbaa !21
  %102 = getelementptr inbounds i8, ptr %101, i64 24
  store ptr %92, ptr %102, align 8, !tbaa !37
  %103 = getelementptr inbounds i8, ptr %101, i64 8
  store i32 32, ptr %103, align 8, !tbaa !24
  %104 = getelementptr inbounds i8, ptr %101, i64 12
  store i32 5, ptr %104, align 4, !tbaa !38
  %105 = getelementptr inbounds i8, ptr %101, i64 32
  store i64 8, ptr %105, align 8, !tbaa !29
  %106 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #11
  store ptr %106, ptr %101, align 8, !tbaa !26
  %107 = getelementptr inbounds i8, ptr %101, i64 56
  store i32 -1609490463, ptr %107, align 8, !tbaa !39
  %.not722 = icmp eq ptr %106, null
  br i1 %.not722, label %108, label %109

108:                                              ; preds = %100
  tail call void @exit(i32 noundef -1) #12
  unreachable

109:                                              ; preds = %100
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %106, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %92, align 8, !tbaa !21
  br label %122

110:                                              ; preds = %.loopexit775
  %111 = getelementptr inbounds i8, ptr %.0793, i64 8
  %112 = load ptr, ptr %111, align 8, !tbaa !21
  store ptr %112, ptr %92, align 8, !tbaa !21
  %113 = getelementptr inbounds i8, ptr %91, i64 24
  store ptr null, ptr %113, align 8, !tbaa !40
  %114 = getelementptr inbounds i8, ptr %112, i64 24
  %115 = load ptr, ptr %114, align 8, !tbaa !37
  %116 = getelementptr inbounds i8, ptr %112, i64 32
  %117 = load i64, ptr %116, align 8, !tbaa !29
  %118 = sub i64 0, %117
  %119 = getelementptr inbounds i8, ptr %115, i64 %118
  %120 = getelementptr inbounds i8, ptr %91, i64 16
  store ptr %119, ptr %120, align 8, !tbaa !41
  %121 = getelementptr inbounds i8, ptr %115, i64 16
  store ptr %91, ptr %121, align 8, !tbaa !42
  store ptr %92, ptr %114, align 8, !tbaa !37
  br label %122

122:                                              ; preds = %109, %110
  %123 = phi ptr [ %112, %110 ], [ %.pre, %109 ]
  %.1 = phi ptr [ %.0793, %110 ], [ %91, %109 ]
  %124 = getelementptr inbounds i8, ptr %123, i64 16
  %125 = load i32, ptr %124, align 8, !tbaa !43
  %126 = add i32 %125, 1
  store i32 %126, ptr %124, align 8, !tbaa !43
  %127 = getelementptr inbounds i8, ptr %123, i64 8
  %128 = load i32, ptr %127, align 8, !tbaa !24
  %129 = add i32 %128, -1
  %130 = and i32 %129, %55
  %131 = load ptr, ptr %123, align 8, !tbaa !26
  %132 = zext i32 %130 to i64
  %133 = getelementptr inbounds %struct.UT_hash_bucket, ptr %131, i64 %132
  %134 = getelementptr inbounds i8, ptr %133, i64 8
  %135 = load i32, ptr %134, align 8, !tbaa !44
  %136 = add i32 %135, 1
  store i32 %136, ptr %134, align 8, !tbaa !44
  %137 = load ptr, ptr %133, align 8, !tbaa !27
  %138 = getelementptr inbounds i8, ptr %91, i64 40
  store ptr %137, ptr %138, align 8, !tbaa !33
  %139 = getelementptr inbounds i8, ptr %91, i64 32
  store ptr null, ptr %139, align 8, !tbaa !45
  %.not723 = icmp eq ptr %137, null
  br i1 %.not723, label %142, label %140

140:                                              ; preds = %122
  %141 = getelementptr inbounds i8, ptr %137, i64 24
  store ptr %92, ptr %141, align 8, !tbaa !46
  br label %142

142:                                              ; preds = %140, %122
  store ptr %92, ptr %133, align 8, !tbaa !27
  %143 = getelementptr inbounds i8, ptr %133, i64 12
  %144 = load i32, ptr %143, align 4, !tbaa !47
  %145 = mul i32 %144, 10
  %146 = add i32 %145, 10
  %.not724 = icmp ult i32 %136, %146
  br i1 %.not724, label %.loopexit776, label %147

147:                                              ; preds = %142
  %148 = getelementptr inbounds i8, ptr %123, i64 52
  %149 = load i32, ptr %148, align 4, !tbaa !48
  %.not725 = icmp eq i32 %149, 0
  br i1 %.not725, label %150, label %.loopexit776

150:                                              ; preds = %147
  %151 = zext i32 %128 to i64
  %152 = shl nuw nsw i64 %151, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %152)
  %.not726 = icmp eq ptr %calloc, null
  br i1 %.not726, label %153, label %154

153:                                              ; preds = %150
  tail call void @exit(i32 noundef -1) #12
  unreachable

154:                                              ; preds = %150
  %155 = load ptr, ptr %92, align 8, !tbaa !21
  %156 = getelementptr inbounds i8, ptr %155, i64 16
  %157 = load i32, ptr %156, align 8, !tbaa !43
  %158 = getelementptr inbounds i8, ptr %155, i64 12
  %159 = load i32, ptr %158, align 4, !tbaa !38
  %160 = add i32 %159, 1
  %161 = lshr i32 %157, %160
  %162 = getelementptr inbounds i8, ptr %155, i64 8
  %163 = load i32, ptr %162, align 8, !tbaa !24
  %164 = shl i32 %163, 1
  %165 = add i32 %164, -1
  %166 = and i32 %165, %157
  %.not727 = icmp ne i32 %166, 0
  %167 = zext i1 %.not727 to i32
  %168 = add i32 %161, %167
  %169 = getelementptr inbounds i8, ptr %155, i64 40
  store i32 %168, ptr %169, align 8, !tbaa !49
  %170 = getelementptr inbounds i8, ptr %155, i64 44
  store i32 0, ptr %170, align 4, !tbaa !50
  %.not851 = icmp eq i32 %163, 0
  %.pre871 = load ptr, ptr %155, align 8, !tbaa !26
  br i1 %.not851, label %._crit_edge791, label %.lr.ph790

.lr.ph790:                                        ; preds = %154
  %wide.trip.count = zext i32 %163 to i64
  br label %171

171:                                              ; preds = %.lr.ph790, %._crit_edge
  %172 = phi i32 [ 0, %.lr.ph790 ], [ %198, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.lr.ph790 ], [ %indvars.iv.next, %._crit_edge ]
  %173 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre871, i64 %indvars.iv
  %174 = load ptr, ptr %173, align 8, !tbaa !27
  %.not728785 = icmp eq ptr %174, null
  br i1 %.not728785, label %._crit_edge, label %.lr.ph787

.lr.ph787:                                        ; preds = %171, %197
  %175 = phi i32 [ %192, %197 ], [ %172, %171 ]
  %.0669786 = phi ptr [ %177, %197 ], [ %174, %171 ]
  %176 = getelementptr inbounds i8, ptr %.0669786, i64 32
  %177 = load ptr, ptr %176, align 8, !tbaa !51
  %178 = getelementptr inbounds i8, ptr %.0669786, i64 52
  %179 = load i32, ptr %178, align 4, !tbaa !52
  %180 = and i32 %179, %165
  %181 = zext i32 %180 to i64
  %182 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %181
  %183 = getelementptr inbounds i8, ptr %182, i64 8
  %184 = load i32, ptr %183, align 8, !tbaa !44
  %185 = add i32 %184, 1
  store i32 %185, ptr %183, align 8, !tbaa !44
  %186 = icmp ugt i32 %185, %168
  br i1 %186, label %187, label %191

187:                                              ; preds = %.lr.ph787
  %188 = add i32 %175, 1
  store i32 %188, ptr %170, align 4, !tbaa !50
  %189 = udiv i32 %185, %168
  %190 = getelementptr inbounds i8, ptr %182, i64 12
  store i32 %189, ptr %190, align 4, !tbaa !47
  br label %191

191:                                              ; preds = %187, %.lr.ph787
  %192 = phi i32 [ %188, %187 ], [ %175, %.lr.ph787 ]
  %193 = getelementptr inbounds i8, ptr %.0669786, i64 24
  store ptr null, ptr %193, align 8, !tbaa !46
  %194 = load ptr, ptr %182, align 8, !tbaa !27
  store ptr %194, ptr %176, align 8, !tbaa !51
  %.not729 = icmp eq ptr %194, null
  br i1 %.not729, label %197, label %195

195:                                              ; preds = %191
  %196 = getelementptr inbounds i8, ptr %194, i64 24
  store ptr %.0669786, ptr %196, align 8, !tbaa !46
  br label %197

197:                                              ; preds = %195, %191
  store ptr %.0669786, ptr %182, align 8, !tbaa !27
  %.not728 = icmp eq ptr %177, null
  br i1 %.not728, label %._crit_edge, label %.lr.ph787, !llvm.loop !53

._crit_edge:                                      ; preds = %197, %171
  %198 = phi i32 [ %172, %171 ], [ %192, %197 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge791, label %171, !llvm.loop !54

._crit_edge791:                                   ; preds = %._crit_edge, %154
  tail call void @free(ptr noundef %.pre871) #10
  %199 = load ptr, ptr %92, align 8, !tbaa !21
  %200 = getelementptr inbounds i8, ptr %199, i64 8
  %201 = load i32, ptr %200, align 8, !tbaa !24
  %202 = shl i32 %201, 1
  store i32 %202, ptr %200, align 8, !tbaa !24
  %203 = getelementptr inbounds i8, ptr %199, i64 12
  %204 = load i32, ptr %203, align 4, !tbaa !38
  %205 = add i32 %204, 1
  store i32 %205, ptr %203, align 4, !tbaa !38
  store ptr %calloc, ptr %199, align 8, !tbaa !26
  %206 = getelementptr inbounds i8, ptr %199, i64 44
  %207 = load i32, ptr %206, align 4, !tbaa !50
  %208 = getelementptr inbounds i8, ptr %199, i64 16
  %209 = load i32, ptr %208, align 8, !tbaa !43
  %210 = lshr i32 %209, 1
  %211 = icmp ugt i32 %207, %210
  %212 = getelementptr inbounds i8, ptr %199, i64 48
  br i1 %211, label %213, label %.thread732

.thread732:                                       ; preds = %._crit_edge791
  store i32 0, ptr %212, align 8, !tbaa !55
  br label %.loopexit776

213:                                              ; preds = %._crit_edge791
  %214 = load i32, ptr %212, align 8, !tbaa !55
  %215 = add i32 %214, 1
  store i32 %215, ptr %212, align 8, !tbaa !55
  %216 = icmp ugt i32 %215, 1
  br i1 %216, label %217, label %.loopexit776

217:                                              ; preds = %213
  %218 = getelementptr inbounds i8, ptr %199, i64 52
  store i32 1, ptr %218, align 4, !tbaa !48
  br label %.loopexit776

.loopexit776:                                     ; preds = %80, %.thread732, %142, %147, %213, %217
  %.2 = phi ptr [ %.1, %217 ], [ %.1, %213 ], [ %.1, %147 ], [ %.1, %142 ], [ %.1, %.thread732 ], [ %.0793, %80 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #10
  %219 = add nuw i16 %.0586792, 1
  %220 = icmp ult i16 %219, %7
  br i1 %220, label %8, label %._crit_edge797, !llvm.loop !56

._crit_edge797:                                   ; preds = %.loopexit776
  %221 = getelementptr inbounds i8, ptr %.2, i64 8
  %222 = getelementptr inbounds i8, ptr %.2, i64 8
  br label %.lr.ph814

.preheader773:                                    ; preds = %310
  %223 = shl i32 %.0638819913, 1
  %.not703809 = icmp eq ptr %.2620.ph, null
  br i1 %.not703809, label %.loopexit774, label %.lr.ph814

.lr.ph814:                                        ; preds = %._crit_edge797, %.preheader773
  %.0638819913 = phi i32 [ 1, %._crit_edge797 ], [ %223, %.preheader773 ]
  %.0618820912 = phi ptr [ %221, %._crit_edge797 ], [ %.2620.ph, %.preheader773 ]
  %.not852 = icmp eq i32 %.0638819913, 0
  br label %224

.loopexit:                                        ; preds = %234
  %.not703 = icmp eq ptr %.2625, null
  br i1 %.not703, label %._crit_edge815, label %224, !llvm.loop !57

224:                                              ; preds = %.lr.ph814, %.loopexit
  %.0616813 = phi ptr [ null, %.lr.ph814 ], [ %.1617, %.loopexit ]
  %.1619812 = phi ptr [ null, %.lr.ph814 ], [ %.2620.ph, %.loopexit ]
  %.0627811 = phi ptr [ %.0618820912, %.lr.ph814 ], [ %.2625, %.loopexit ]
  %.0639810 = phi i32 [ 0, %.lr.ph814 ], [ %225, %.loopexit ]
  %225 = add i32 %.0639810, 1
  br i1 %.not852, label %.thread733.preheader, label %.lr.ph803

.lr.ph803:                                        ; preds = %224, %229
  %.0623801 = phi ptr [ %233, %229 ], [ %.0627811, %224 ]
  %.0634800 = phi i32 [ %226, %229 ], [ 0, %224 ]
  %226 = add nuw i32 %.0634800, 1
  %227 = getelementptr inbounds i8, ptr %.0623801, i64 16
  %228 = load ptr, ptr %227, align 8, !tbaa !42
  %.not705 = icmp eq ptr %228, null
  br i1 %.not705, label %.thread733.preheader, label %229

229:                                              ; preds = %.lr.ph803
  %230 = load ptr, ptr %222, align 8, !tbaa !21
  %231 = getelementptr inbounds i8, ptr %230, i64 32
  %232 = load i64, ptr %231, align 8, !tbaa !29
  %233 = getelementptr inbounds i8, ptr %228, i64 %232
  %exitcond857.not = icmp eq i32 %226, %.0638819913
  br i1 %exitcond857.not, label %.thread733.preheader, label %.lr.ph803, !llvm.loop !58

.thread733.preheader:                             ; preds = %229, %.lr.ph803, %224
  %.2636.ph = phi i32 [ 0, %224 ], [ %226, %.lr.ph803 ], [ %.0638819913, %229 ]
  %.2625.ph = phi ptr [ %.0627811, %224 ], [ null, %.lr.ph803 ], [ %233, %229 ]
  br label %.thread733.outer

.thread733.outer:                                 ; preds = %.thread733.outer.backedge, %.thread733.preheader
  %.2636.ph914 = phi i32 [ %.2636.ph, %.thread733.preheader ], [ %.3637, %.thread733.outer.backedge ]
  %.0632.ph = phi i32 [ %.0638819913, %.thread733.preheader ], [ %.1633, %.thread733.outer.backedge ]
  %.1628.ph = phi ptr [ %.0627811, %.thread733.preheader ], [ %.4631, %.thread733.outer.backedge ]
  %.2625.ph915 = phi ptr [ %.2625.ph, %.thread733.preheader ], [ %.3626, %.thread733.outer.backedge ]
  %.2620.ph = phi ptr [ %.1619812, %.thread733.preheader ], [ %.2620.ph.be, %.thread733.outer.backedge ]
  %.1617.ph = phi ptr [ %.0616813, %.thread733.preheader ], [ %.0622, %.thread733.outer.backedge ]
  br label %.thread733

.thread733:                                       ; preds = %.thread733.outer, %.thread734.thread
  %.2636 = phi i32 [ %.3637, %.thread734.thread ], [ %.2636.ph914, %.thread733.outer ]
  %.0632 = phi i32 [ %.1633, %.thread734.thread ], [ %.0632.ph, %.thread733.outer ]
  %.1628 = phi ptr [ %.4631, %.thread734.thread ], [ %.1628.ph, %.thread733.outer ]
  %.2625 = phi ptr [ %.3626, %.thread734.thread ], [ %.2625.ph915, %.thread733.outer ]
  %.1617 = phi ptr [ %.0622, %.thread734.thread ], [ %.1617.ph, %.thread733.outer ]
  %cond = icmp eq i32 %.2636, 0
  br i1 %cond, label %234, label %248

234:                                              ; preds = %.thread733
  %235 = icmp ne i32 %.0632, 0
  %236 = icmp ne ptr %.2625, null
  %237 = select i1 %235, i1 %236, i1 false
  br i1 %237, label %.critedge, label %.loopexit

.critedge:                                        ; preds = %234
  %238 = getelementptr inbounds i8, ptr %.2625, i64 16
  %239 = load ptr, ptr %238, align 8, !tbaa !42
  %.not712 = icmp eq ptr %239, null
  br i1 %.not712, label %245, label %240

240:                                              ; preds = %.critedge
  %241 = load ptr, ptr %222, align 8, !tbaa !21
  %242 = getelementptr inbounds i8, ptr %241, i64 32
  %243 = load i64, ptr %242, align 8, !tbaa !29
  %244 = getelementptr inbounds i8, ptr %239, i64 %243
  br label %245

245:                                              ; preds = %.critedge, %240
  %246 = phi ptr [ %244, %240 ], [ null, %.critedge ]
  %247 = add i32 %.0632, -1
  br label %293

248:                                              ; preds = %.thread733
  %249 = icmp eq i32 %.0632, 0
  %250 = icmp eq ptr %.2625, null
  %or.cond = select i1 %249, i1 true, i1 %250
  br i1 %or.cond, label %251, label %262

251:                                              ; preds = %248
  %.not710 = icmp eq ptr %.1628, null
  br i1 %.not710, label %260, label %252

252:                                              ; preds = %251
  %253 = getelementptr inbounds i8, ptr %.1628, i64 16
  %254 = load ptr, ptr %253, align 8, !tbaa !42
  %.not711 = icmp eq ptr %254, null
  br i1 %.not711, label %260, label %255

255:                                              ; preds = %252
  %256 = load ptr, ptr %222, align 8, !tbaa !21
  %257 = getelementptr inbounds i8, ptr %256, i64 32
  %258 = load i64, ptr %257, align 8, !tbaa !29
  %259 = getelementptr inbounds i8, ptr %254, i64 %258
  br label %260

260:                                              ; preds = %255, %252, %251
  %.2629 = phi ptr [ null, %251 ], [ %259, %255 ], [ null, %252 ]
  %261 = add i32 %.2636, -1
  br label %293

262:                                              ; preds = %248
  %263 = load ptr, ptr %222, align 8, !tbaa !21
  %264 = getelementptr inbounds i8, ptr %263, i64 32
  %265 = load i64, ptr %264, align 8, !tbaa !29
  %266 = sub i64 0, %265
  %267 = getelementptr inbounds i8, ptr %.1628, i64 %266
  %268 = getelementptr inbounds i8, ptr %.2625, i64 %266
  %269 = tail call i32 @by_gid(ptr noundef %267, ptr noundef %268)
  %270 = icmp slt i32 %269, 1
  br i1 %270, label %271, label %282

271:                                              ; preds = %262
  %.not708 = icmp eq ptr %.1628, null
  br i1 %.not708, label %280, label %272

272:                                              ; preds = %271
  %273 = getelementptr inbounds i8, ptr %.1628, i64 16
  %274 = load ptr, ptr %273, align 8, !tbaa !42
  %.not709 = icmp eq ptr %274, null
  br i1 %.not709, label %280, label %275

275:                                              ; preds = %272
  %276 = load ptr, ptr %222, align 8, !tbaa !21
  %277 = getelementptr inbounds i8, ptr %276, i64 32
  %278 = load i64, ptr %277, align 8, !tbaa !29
  %279 = getelementptr inbounds i8, ptr %274, i64 %278
  br label %280

280:                                              ; preds = %275, %272, %271
  %.3630 = phi ptr [ null, %271 ], [ %279, %275 ], [ null, %272 ]
  %281 = add i32 %.2636, -1
  br label %293

282:                                              ; preds = %262
  %283 = getelementptr inbounds i8, ptr %.2625, i64 16
  %284 = load ptr, ptr %283, align 8, !tbaa !42
  %.not707 = icmp eq ptr %284, null
  br i1 %.not707, label %290, label %285

285:                                              ; preds = %282
  %286 = load ptr, ptr %222, align 8, !tbaa !21
  %287 = getelementptr inbounds i8, ptr %286, i64 32
  %288 = load i64, ptr %287, align 8, !tbaa !29
  %289 = getelementptr inbounds i8, ptr %284, i64 %288
  br label %290

290:                                              ; preds = %282, %285
  %291 = phi ptr [ %289, %285 ], [ null, %282 ]
  %292 = add i32 %.0632, -1
  br label %293

293:                                              ; preds = %260, %290, %280, %245
  %.3637 = phi i32 [ 0, %245 ], [ %261, %260 ], [ %281, %280 ], [ %.2636, %290 ]
  %.1633 = phi i32 [ %247, %245 ], [ %.0632, %260 ], [ %.0632, %280 ], [ %292, %290 ]
  %.4631 = phi ptr [ %.1628, %245 ], [ %.2629, %260 ], [ %.3630, %280 ], [ %.1628, %290 ]
  %.3626 = phi ptr [ %246, %245 ], [ %.2625, %260 ], [ %.2625, %280 ], [ %291, %290 ]
  %.0622 = phi ptr [ %.2625, %245 ], [ %.1628, %260 ], [ %.1628, %280 ], [ %.2625, %290 ]
  %.not713 = icmp eq ptr %.1617, null
  %.not715 = icmp eq ptr %.0622, null
  br i1 %.not713, label %296, label %294

294:                                              ; preds = %293
  br i1 %.not715, label %.thread734.thread, label %297

.thread734.thread:                                ; preds = %294
  %295 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr null, ptr %295, align 8, !tbaa !42
  br label %.thread733, !llvm.loop !59

296:                                              ; preds = %293
  br i1 %.not715, label %.thread733.outer.backedge, label %305

297:                                              ; preds = %294
  %298 = load ptr, ptr %222, align 8, !tbaa !21
  %299 = getelementptr inbounds i8, ptr %298, i64 32
  %300 = load i64, ptr %299, align 8, !tbaa !29
  %301 = sub i64 0, %300
  %302 = getelementptr inbounds i8, ptr %.0622, i64 %301
  %303 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr %302, ptr %303, align 8, !tbaa !42
  %304 = getelementptr inbounds i8, ptr %.1617, i64 %301
  br label %305

305:                                              ; preds = %296, %297
  %.3621737742 = phi ptr [ %.2620.ph, %297 ], [ %.0622, %296 ]
  %306 = phi ptr [ %304, %297 ], [ null, %296 ]
  %307 = getelementptr inbounds i8, ptr %.0622, i64 8
  store ptr %306, ptr %307, align 8, !tbaa !60
  br label %.thread733.outer.backedge

.thread733.outer.backedge:                        ; preds = %305, %296
  %.2620.ph.be = phi ptr [ null, %296 ], [ %.3621737742, %305 ]
  br label %.thread733.outer, !llvm.loop !59

._crit_edge815:                                   ; preds = %.loopexit
  %.not704 = icmp eq ptr %.1617, null
  br i1 %.not704, label %310, label %308

308:                                              ; preds = %._crit_edge815
  %309 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr null, ptr %309, align 8, !tbaa !42
  br label %310

310:                                              ; preds = %308, %._crit_edge815
  %.0616.lcssa890 = phi ptr [ %.1617, %308 ], [ null, %._crit_edge815 ]
  %311 = icmp ult i32 %225, 2
  br i1 %311, label %.loopexit774, label %.preheader773

.loopexit774.thread:                              ; preds = %2
  %312 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 48), align 8, !tbaa !61
  %313 = tail call ptr (...) %312() #10
  br label %._crit_edge826

.loopexit774:                                     ; preds = %.preheader773, %310
  %.1619.lcssa889896 = phi ptr [ %.2620.ph, %310 ], [ null, %.preheader773 ]
  %.0616.lcssa890895 = phi ptr [ %.0616.lcssa890, %310 ], [ null, %.preheader773 ]
  %314 = getelementptr inbounds i8, ptr %.2, i64 8
  %315 = load ptr, ptr %314, align 8, !tbaa !21
  %316 = getelementptr inbounds i8, ptr %315, i64 24
  store ptr %.0616.lcssa890895, ptr %316, align 8, !tbaa !37
  %317 = getelementptr inbounds i8, ptr %315, i64 32
  %318 = load i64, ptr %317, align 8, !tbaa !29
  %319 = sub i64 0, %318
  %320 = getelementptr inbounds i8, ptr %.1619.lcssa889896, i64 %319
  %321 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 48), align 8, !tbaa !61
  %322 = tail call ptr (...) %321() #10
  %.not694822 = icmp eq ptr %.1619.lcssa889896, null
  br i1 %.not694822, label %._crit_edge826, label %.lr.ph825

.lr.ph825:                                        ; preds = %.loopexit774
  %323 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 120), align 8, !tbaa !63
  %324 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 64), align 8, !tbaa !64
  br label %325

325:                                              ; preds = %.lr.ph825, %325
  %.4581823 = phi ptr [ %320, %.lr.ph825 ], [ %332, %325 ]
  %326 = load i32, ptr %.4581823, align 8, !tbaa !36
  %327 = trunc i32 %326 to i16
  %328 = tail call { i64, ptr } %324(i16 noundef zeroext %327) #10
  %329 = extractvalue { i64, ptr } %328, 0
  %330 = extractvalue { i64, ptr } %328, 1
  tail call void %323(ptr noundef %322, i64 %329, ptr %330) #10
  %331 = getelementptr inbounds i8, ptr %.4581823, i64 24
  %332 = load ptr, ptr %331, align 8, !tbaa !40
  %.not694 = icmp eq ptr %332, null
  br i1 %.not694, label %._crit_edge826, label %325, !llvm.loop !66

._crit_edge826:                                   ; preds = %325, %.loopexit774.thread, %.loopexit774
  %.not694822905 = phi i1 [ true, %.loopexit774.thread ], [ true, %.loopexit774 ], [ %.not694822, %325 ]
  %333 = phi ptr [ %313, %.loopexit774.thread ], [ %322, %.loopexit774 ], [ %322, %325 ]
  %.5904 = phi ptr [ null, %.loopexit774.thread ], [ null, %.loopexit774 ], [ %320, %325 ]
  %334 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 96), align 8, !tbaa !67
  %335 = tail call ptr %334(ptr noundef %333) #10
  %336 = tail call ptr @bk_newBlockFromBuffer(ptr noundef %335) #10
  %337 = load i16, ptr %333, align 8, !tbaa !68
  %338 = zext i16 %337 to i32
  %339 = tail call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef 1, i32 noundef 16, ptr noundef %336, i32 noundef 2, i32 noundef %338, i32 noundef 0) #10
  br i1 %.not694822905, label %._crit_edge842.thread, label %.preheader.lr.ph

._crit_edge842.thread:                            ; preds = %._crit_edge826
  %340 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 56), align 8, !tbaa !69
  tail call void %340(ptr noundef nonnull %333) #10
  br label %._crit_edge849

.preheader.lr.ph:                                 ; preds = %._crit_edge826
  %341 = getelementptr inbounds i8, ptr %0, i64 16
  %wide.trip.count869 = and i64 %4, 65535
  %xtraiter = and i64 %4, 1
  %342 = icmp eq i64 %5, 1
  %unroll_iter = sub nsw i64 %5, %xtraiter
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge839
  %.5582841 = phi ptr [ %.5904, %.preheader.lr.ph ], [ %378, %._crit_edge839 ]
  br i1 %.not850, label %._crit_edge830.thread, label %.lr.ph829

._crit_edge830.thread:                            ; preds = %.preheader
  %343 = tail call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef 0, i32 noundef 0) #10
  br label %._crit_edge839

.lr.ph829:                                        ; preds = %.preheader
  %344 = load ptr, ptr %341, align 8, !tbaa !11
  %345 = load i32, ptr %.5582841, align 8, !tbaa !36
  br i1 %342, label %._crit_edge830.unr-lcssa, label %.lr.ph829.new

._crit_edge830.unr-lcssa:                         ; preds = %.lr.ph829.new, %.lr.ph829
  %spec.select.lcssa.ph = phi i16 [ poison, %.lr.ph829 ], [ %spec.select.1, %.lr.ph829.new ]
  %indvars.iv858.unr = phi i64 [ 0, %.lr.ph829 ], [ %indvars.iv.next859.1, %.lr.ph829.new ]
  %.0598827.unr = phi i16 [ 0, %.lr.ph829 ], [ %spec.select.1, %.lr.ph829.new ]
  br i1 %lcmp.mod.not, label %._crit_edge830, label %._crit_edge830.epilog-lcssa

._crit_edge830.epilog-lcssa:                      ; preds = %._crit_edge830.unr-lcssa
  %346 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %344, i64 %indvars.iv858.unr
  %347 = load ptr, ptr %346, align 8, !tbaa !12
  %348 = getelementptr inbounds i8, ptr %347, i64 8
  %349 = load ptr, ptr %348, align 8, !tbaa !17
  %350 = getelementptr inbounds i8, ptr %349, i64 4
  %351 = load i16, ptr %350, align 4, !tbaa !19
  %352 = zext i16 %351 to i32
  %353 = icmp eq i32 %345, %352
  %354 = zext i1 %353 to i16
  %spec.select.epil = add i16 %.0598827.unr, %354
  br label %._crit_edge830

._crit_edge830:                                   ; preds = %._crit_edge830.unr-lcssa, %._crit_edge830.epilog-lcssa
  %spec.select.lcssa = phi i16 [ %spec.select.lcssa.ph, %._crit_edge830.unr-lcssa ], [ %spec.select.epil, %._crit_edge830.epilog-lcssa ]
  %355 = zext i16 %spec.select.lcssa to i32
  %356 = tail call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef %355, i32 noundef 0) #10
  br i1 %.not850, label %._crit_edge839, label %.lr.ph838

.lr.ph829.new:                                    ; preds = %.lr.ph829, %.lr.ph829.new
  %indvars.iv858 = phi i64 [ %indvars.iv.next859.1, %.lr.ph829.new ], [ 0, %.lr.ph829 ]
  %.0598827 = phi i16 [ %spec.select.1, %.lr.ph829.new ], [ 0, %.lr.ph829 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph829.new ], [ 0, %.lr.ph829 ]
  %357 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %344, i64 %indvars.iv858
  %358 = load ptr, ptr %357, align 8, !tbaa !12
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load ptr, ptr %359, align 8, !tbaa !17
  %361 = getelementptr inbounds i8, ptr %360, i64 4
  %362 = load i16, ptr %361, align 4, !tbaa !19
  %363 = zext i16 %362 to i32
  %364 = icmp eq i32 %345, %363
  %365 = zext i1 %364 to i16
  %spec.select = add i16 %.0598827, %365
  %indvars.iv.next859 = or disjoint i64 %indvars.iv858, 1
  %366 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %344, i64 %indvars.iv.next859
  %367 = load ptr, ptr %366, align 8, !tbaa !12
  %368 = getelementptr inbounds i8, ptr %367, i64 8
  %369 = load ptr, ptr %368, align 8, !tbaa !17
  %370 = getelementptr inbounds i8, ptr %369, i64 4
  %371 = load i16, ptr %370, align 4, !tbaa !19
  %372 = zext i16 %371 to i32
  %373 = icmp eq i32 %345, %372
  %374 = zext i1 %373 to i16
  %spec.select.1 = add i16 %spec.select, %374
  %indvars.iv.next859.1 = add nuw nsw i64 %indvars.iv858, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge830.unr-lcssa, label %.lr.ph829.new, !llvm.loop !70

._crit_edge839:                                   ; preds = %415, %._crit_edge830.thread, %._crit_edge830
  %375 = phi ptr [ %343, %._crit_edge830.thread ], [ %356, %._crit_edge830 ], [ %356, %415 ]
  %376 = tail call ptr (ptr, i32, ...) @bk_push(ptr noundef %339, i32 noundef 16, ptr noundef %375, i32 noundef 0) #10
  %377 = getelementptr inbounds i8, ptr %.5582841, i64 24
  %378 = load ptr, ptr %377, align 8, !tbaa !40
  %.not695 = icmp eq ptr %378, null
  br i1 %.not695, label %._crit_edge842, label %.preheader, !llvm.loop !71

.lr.ph838:                                        ; preds = %._crit_edge830, %415
  %indvars.iv866 = phi i64 [ %indvars.iv.next867, %415 ], [ 0, %._crit_edge830 ]
  %379 = load ptr, ptr %341, align 8, !tbaa !11
  %380 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %379, i64 %indvars.iv866
  %381 = load ptr, ptr %380, align 8, !tbaa !12
  %382 = getelementptr inbounds i8, ptr %381, i64 8
  %383 = load ptr, ptr %382, align 8, !tbaa !17
  %384 = getelementptr inbounds i8, ptr %383, i64 4
  %385 = load i16, ptr %384, align 4, !tbaa !19
  %386 = zext i16 %385 to i32
  %387 = load i32, ptr %.5582841, align 8, !tbaa !36
  %388 = icmp eq i32 %387, %386
  br i1 %388, label %389, label %415

389:                                              ; preds = %.lr.ph838
  %390 = getelementptr inbounds i8, ptr %380, i64 12
  %391 = load i16, ptr %390, align 4, !tbaa !72
  %392 = zext i16 %391 to i32
  %393 = load i16, ptr %381, align 8, !tbaa !68
  %394 = zext i16 %393 to i32
  %395 = tail call ptr (i32, ...) @bk_new_Block(i32 noundef 2, i32 noundef %392, i32 noundef 2, i32 noundef %394, i32 noundef 0) #10
  %396 = load ptr, ptr %341, align 8, !tbaa !11
  %397 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %396, i64 %indvars.iv866
  %398 = load ptr, ptr %397, align 8, !tbaa !12
  %399 = load i16, ptr %398, align 8, !tbaa !68
  %400 = icmp ugt i16 %399, 1
  br i1 %400, label %.lr.ph834, label %._crit_edge835

._crit_edge835:                                   ; preds = %.lr.ph834, %389
  %401 = tail call ptr (ptr, i32, ...) @bk_push(ptr noundef %356, i32 noundef 16, ptr noundef %395, i32 noundef 0) #10
  br label %415

.lr.ph834:                                        ; preds = %389, %.lr.ph834
  %indvars.iv863 = phi i64 [ %indvars.iv.next864, %.lr.ph834 ], [ 1, %389 ]
  %402 = phi ptr [ %411, %.lr.ph834 ], [ %398, %389 ]
  %403 = getelementptr inbounds i8, ptr %402, i64 8
  %404 = load ptr, ptr %403, align 8, !tbaa !17
  %405 = getelementptr inbounds %struct.otfcc_Handle, ptr %404, i64 %indvars.iv863, i32 1
  %406 = load i16, ptr %405, align 4, !tbaa !19
  %407 = zext i16 %406 to i32
  %408 = tail call ptr (ptr, i32, ...) @bk_push(ptr noundef %395, i32 noundef 2, i32 noundef %407, i32 noundef 0) #10
  %indvars.iv.next864 = add nuw nsw i64 %indvars.iv863, 1
  %409 = load ptr, ptr %341, align 8, !tbaa !11
  %410 = getelementptr inbounds %struct.otl_GsubLigatureEntry, ptr %409, i64 %indvars.iv866
  %411 = load ptr, ptr %410, align 8, !tbaa !12
  %412 = load i16, ptr %411, align 8, !tbaa !68
  %413 = zext i16 %412 to i64
  %414 = icmp ult i64 %indvars.iv.next864, %413
  br i1 %414, label %.lr.ph834, label %._crit_edge835, !llvm.loop !73

415:                                              ; preds = %.lr.ph838, %._crit_edge835
  %indvars.iv.next867 = add nuw nsw i64 %indvars.iv866, 1
  %exitcond870.not = icmp eq i64 %indvars.iv.next867, %wide.trip.count869
  br i1 %exitcond870.not, label %._crit_edge839, label %.lr.ph838, !llvm.loop !74

._crit_edge842:                                   ; preds = %._crit_edge839
  %416 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 56), align 8, !tbaa !69
  tail call void %416(ptr noundef nonnull %333) #10
  br i1 %.not694822905, label %._crit_edge849, label %.lr.ph848

.lr.ph848:                                        ; preds = %._crit_edge842, %484
  %.sink910 = phi ptr [ %418, %484 ], [ %.5904, %._crit_edge842 ]
  %.6846 = phi ptr [ %.8, %484 ], [ %.5904, %._crit_edge842 ]
  %417 = getelementptr inbounds i8, ptr %.sink910, i64 24
  %418 = load ptr, ptr %417, align 8, !tbaa !40
  %419 = getelementptr inbounds i8, ptr %.sink910, i64 8
  %420 = getelementptr inbounds i8, ptr %.sink910, i64 16
  %421 = load ptr, ptr %420, align 8, !tbaa !60
  %422 = icmp eq ptr %421, null
  br i1 %422, label %423, label %432

423:                                              ; preds = %.lr.ph848
  %424 = getelementptr inbounds i8, ptr %.sink910, i64 24
  %425 = load ptr, ptr %424, align 8, !tbaa !42
  %426 = icmp eq ptr %425, null
  br i1 %426, label %427, label %432

427:                                              ; preds = %423
  %428 = getelementptr inbounds i8, ptr %.6846, i64 8
  %429 = load ptr, ptr %428, align 8, !tbaa !21
  %430 = load ptr, ptr %429, align 8, !tbaa !26
  tail call void @free(ptr noundef %430) #10
  %431 = load ptr, ptr %428, align 8, !tbaa !21
  tail call void @free(ptr noundef %431) #10
  br label %484

432:                                              ; preds = %423, %.lr.ph848
  %433 = getelementptr inbounds i8, ptr %.6846, i64 8
  %434 = load ptr, ptr %433, align 8, !tbaa !21
  %435 = getelementptr inbounds i8, ptr %434, i64 24
  %436 = load ptr, ptr %435, align 8, !tbaa !37
  %437 = icmp eq ptr %419, %436
  br i1 %437, label %438, label %442

438:                                              ; preds = %432
  %439 = getelementptr inbounds i8, ptr %434, i64 32
  %440 = load i64, ptr %439, align 8, !tbaa !29
  %441 = getelementptr inbounds i8, ptr %421, i64 %440
  store ptr %441, ptr %435, align 8, !tbaa !37
  br label %442

442:                                              ; preds = %438, %432
  %443 = getelementptr inbounds i8, ptr %.sink910, i64 24
  %444 = load ptr, ptr %443, align 8, !tbaa !42
  br i1 %422, label %450, label %445

445:                                              ; preds = %442
  %446 = getelementptr inbounds i8, ptr %434, i64 32
  %447 = load i64, ptr %446, align 8, !tbaa !29
  %448 = getelementptr inbounds i8, ptr %421, i64 %447
  %449 = getelementptr inbounds i8, ptr %448, i64 16
  store ptr %444, ptr %449, align 8, !tbaa !42
  br label %450

450:                                              ; preds = %442, %445
  %.7 = phi ptr [ %.6846, %445 ], [ %444, %442 ]
  %.not699 = icmp eq ptr %444, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.7, i64 8
  %.pre873 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !21
  br i1 %.not699, label %._crit_edge872, label %451

451:                                              ; preds = %450
  %452 = getelementptr inbounds i8, ptr %.pre873, i64 32
  %453 = load i64, ptr %452, align 8, !tbaa !29
  %454 = getelementptr inbounds i8, ptr %444, i64 %453
  %455 = getelementptr inbounds i8, ptr %454, i64 8
  store ptr %421, ptr %455, align 8, !tbaa !60
  br label %._crit_edge872

._crit_edge872:                                   ; preds = %450, %451
  %456 = getelementptr inbounds i8, ptr %.sink910, i64 60
  %457 = load i32, ptr %456, align 4, !tbaa !52
  %458 = getelementptr inbounds i8, ptr %.pre873, i64 8
  %459 = load i32, ptr %458, align 8, !tbaa !24
  %460 = add i32 %459, -1
  %461 = and i32 %460, %457
  %462 = load ptr, ptr %.pre873, align 8, !tbaa !26
  %463 = zext i32 %461 to i64
  %464 = getelementptr inbounds %struct.UT_hash_bucket, ptr %462, i64 %463
  %465 = getelementptr inbounds i8, ptr %464, i64 8
  %466 = load i32, ptr %465, align 8, !tbaa !44
  %467 = add i32 %466, -1
  store i32 %467, ptr %465, align 8, !tbaa !44
  %468 = load ptr, ptr %464, align 8, !tbaa !27
  %469 = icmp eq ptr %468, %419
  br i1 %469, label %470, label %473

470:                                              ; preds = %._crit_edge872
  %471 = getelementptr inbounds i8, ptr %.sink910, i64 40
  %472 = load ptr, ptr %471, align 8, !tbaa !51
  store ptr %472, ptr %464, align 8, !tbaa !27
  br label %473

473:                                              ; preds = %470, %._crit_edge872
  %474 = getelementptr inbounds i8, ptr %.sink910, i64 32
  %475 = load ptr, ptr %474, align 8, !tbaa !46
  %.not700 = icmp eq ptr %475, null
  %.phi.trans.insert875 = getelementptr inbounds i8, ptr %.sink910, i64 40
  %.pre876 = load ptr, ptr %.phi.trans.insert875, align 8, !tbaa !51
  br i1 %.not700, label %._crit_edge874, label %476

476:                                              ; preds = %473
  %477 = getelementptr inbounds i8, ptr %475, i64 32
  store ptr %.pre876, ptr %477, align 8, !tbaa !51
  br label %._crit_edge874

._crit_edge874:                                   ; preds = %473, %476
  %.not701 = icmp eq ptr %.pre876, null
  br i1 %.not701, label %480, label %478

478:                                              ; preds = %._crit_edge874
  %479 = getelementptr inbounds i8, ptr %.pre876, i64 24
  store ptr %475, ptr %479, align 8, !tbaa !46
  br label %480

480:                                              ; preds = %478, %._crit_edge874
  %481 = getelementptr inbounds i8, ptr %.pre873, i64 16
  %482 = load i32, ptr %481, align 8, !tbaa !43
  %483 = add i32 %482, -1
  store i32 %483, ptr %481, align 8, !tbaa !43
  br label %484

484:                                              ; preds = %480, %427
  %.8 = phi ptr [ null, %427 ], [ %.7, %480 ]
  tail call void @free(ptr noundef nonnull %.sink910) #10
  %.not702 = icmp eq ptr %418, null
  br i1 %.not702, label %._crit_edge849, label %.lr.ph848, !llvm.loop !75

._crit_edge849:                                   ; preds = %484, %._crit_edge842, %._crit_edge842.thread
  %485 = tail call ptr @bk_build_Block(ptr noundef %339) #10
  ret ptr %485
}

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @__caryll_allocate_clean(i64 noundef, i64 noundef) local_unnamed_addr #2

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

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #4

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

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

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

declare ptr @bk_new_Block(i32 noundef, ...) local_unnamed_addr #7

declare ptr @bk_newBlockFromBuffer(ptr noundef) local_unnamed_addr #7

declare ptr @bk_push(ptr noundef, i32 noundef, ...) local_unnamed_addr #7

declare ptr @bk_build_Block(ptr noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind willreturn memory(argmem: read)
declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #8

; Function Attrs: nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"", !7, i64 0, !7, i64 8, !10, i64 16}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !10, i64 16}
!12 = !{!13, !10, i64 0}
!13 = !{!"", !10, i64 0, !14, i64 8}
!14 = !{!"otfcc_Handle", !15, i64 0, !16, i64 4, !10, i64 8}
!15 = !{!"int", !8, i64 0}
!16 = !{!"short", !8, i64 0}
!17 = !{!18, !10, i64 8}
!18 = !{!"", !16, i64 0, !15, i64 4, !10, i64 8}
!19 = !{!14, !16, i64 4}
!20 = !{!15, !15, i64 0}
!21 = !{!22, !10, i64 8}
!22 = !{!"", !15, i64 0, !23, i64 8}
!23 = !{!"UT_hash_handle", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !15, i64 48, !15, i64 52}
!24 = !{!25, !15, i64 8}
!25 = !{!"UT_hash_table", !10, i64 0, !15, i64 8, !15, i64 12, !15, i64 16, !10, i64 24, !7, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56}
!26 = !{!25, !10, i64 0}
!27 = !{!28, !10, i64 0}
!28 = !{!"UT_hash_bucket", !10, i64 0, !15, i64 8, !15, i64 12}
!29 = !{!25, !7, i64 32}
!30 = !{!22, !15, i64 60}
!31 = !{!22, !15, i64 56}
!32 = !{!22, !10, i64 48}
!33 = !{!22, !10, i64 40}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!22, !15, i64 0}
!37 = !{!25, !10, i64 24}
!38 = !{!25, !15, i64 12}
!39 = !{!25, !15, i64 56}
!40 = !{!22, !10, i64 24}
!41 = !{!22, !10, i64 16}
!42 = !{!23, !10, i64 16}
!43 = !{!25, !15, i64 16}
!44 = !{!28, !15, i64 8}
!45 = !{!22, !10, i64 32}
!46 = !{!23, !10, i64 24}
!47 = !{!28, !15, i64 12}
!48 = !{!25, !15, i64 52}
!49 = !{!25, !15, i64 40}
!50 = !{!25, !15, i64 44}
!51 = !{!23, !10, i64 32}
!52 = !{!23, !15, i64 52}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !35}
!55 = !{!25, !15, i64 48}
!56 = distinct !{!56, !35}
!57 = distinct !{!57, !35}
!58 = distinct !{!58, !35}
!59 = distinct !{!59, !35}
!60 = !{!23, !10, i64 8}
!61 = !{!62, !10, i64 48}
!62 = !{!"__otfcc_ICoverage", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120}
!63 = !{!62, !10, i64 120}
!64 = !{!65, !10, i64 64}
!65 = !{!"otfcc_HandlePackage", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88}
!66 = distinct !{!66, !35}
!67 = !{!62, !10, i64 96}
!68 = !{!18, !16, i64 0}
!69 = !{!62, !10, i64 56}
!70 = distinct !{!70, !35}
!71 = distinct !{!71, !35}
!72 = !{!13, !16, i64 12}
!73 = distinct !{!73, !35}
!74 = distinct !{!74, !35}
!75 = distinct !{!75, !35}


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