; LLVM IR from caryll/otfcc :: lib/consolidate/otl (gpos-single)

; 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_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gpos_single = type { ptr, ptr, ptr, 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_GposSingleEntry = type { %struct.otfcc_Handle, %struct.otl_PositionValue }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.otl_PositionValue = type { double, double, double, double }
%struct.subtable_gpos_single = type { i64, i64, ptr }
%struct._caryll_font = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.gpos_single_hash = type { i32, ptr, %struct.otl_PositionValue, %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 }

@otfcc_pkgGlyphOrder = external constant %struct.otfcc_GlyphOrderPackage, align 8
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [56 x i8], align 1
@iSubtable_gpos_single = external constant %struct.__caryll_vectorinterface_subtable_gpos_single, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @consolidate_gpos_single(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i16, align 2
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca %struct.otl_GposSingleEntry, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %50, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  store ptr null, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %11) #10
  store i16 0, ptr %11, align 2, !tbaa !9
  br label %51

51:                                               ; preds = %1480, %4
  %52 = load i16, ptr %11, align 2, !tbaa !9
  %53 = zext i16 %52 to i64
  %54 = load ptr, ptr %9, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.subtable_gpos_single, ptr %54, i32 0, i32 0
  %56 = load i64, ptr %55, align 8, !tbaa !11
  %57 = icmp ult i64 %53, %56
  br i1 %57, label %59, label %58

58:                                               ; preds = %51
  call void @llvm.lifetime.end.p0(i64 2, ptr %11) #10
  br label %1483

59:                                               ; preds = %51
  %60 = load ptr, ptr getelementptr inbounds (%struct.otfcc_GlyphOrderPackage, ptr @otfcc_pkgGlyphOrder, i32 0, i32 11), align 8, !tbaa !14
  %61 = load ptr, ptr %5, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct._caryll_font, ptr %61, i32 0, i32 33
  %63 = load ptr, ptr %62, align 8, !tbaa !16
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.subtable_gpos_single, ptr %64, i32 0, i32 2
  %66 = load ptr, ptr %65, align 8, !tbaa !19
  %67 = load i16, ptr %11, align 2, !tbaa !9
  %68 = zext i16 %67 to i64
  %69 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %66, i64 %68
  %70 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %69, i32 0, i32 0
  %71 = call zeroext i1 %60(ptr noundef %63, ptr noundef %70)
  br i1 %71, label %92, label %72

72:                                               ; preds = %59
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.otfcc_Options, ptr %73, i32 0, i32 24
  %75 = load ptr, ptr %74, align 8, !tbaa !20
  %76 = getelementptr inbounds %struct.otfcc_ILogger, ptr %75, i32 0, i32 6
  %77 = load ptr, ptr %76, align 8, !tbaa !23
  %78 = load ptr, ptr %8, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.otfcc_Options, ptr %78, i32 0, i32 24
  %80 = load ptr, ptr %79, align 8, !tbaa !20
  %81 = call ptr @sdsempty()
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.subtable_gpos_single, ptr %82, i32 0, i32 2
  %84 = load ptr, ptr %83, align 8, !tbaa !19
  %85 = load i16, ptr %11, align 2, !tbaa !9
  %86 = zext i16 %85 to i64
  %87 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %84, i64 %86
  %88 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %87, i32 0, i32 0
  %89 = getelementptr inbounds %struct.otfcc_Handle, ptr %88, i32 0, i32 2
  %90 = load ptr, ptr %89, align 8, !tbaa !25
  %91 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %81, ptr noundef @.str, ptr noundef %90)
  call void %77(ptr noundef %80, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %91)
  br label %1480

92:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.subtable_gpos_single, ptr %93, i32 0, i32 2
  %95 = load ptr, ptr %94, align 8, !tbaa !19
  %96 = load i16, ptr %11, align 2, !tbaa !9
  %97 = zext i16 %96 to i64
  %98 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %95, i64 %97
  %99 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %98, i32 0, i32 0
  %100 = getelementptr inbounds %struct.otfcc_Handle, ptr %99, i32 0, i32 1
  %101 = load i16, ptr %100, align 4, !tbaa !30
  %102 = zext i16 %101 to i32
  store i32 %102, ptr %13, align 4, !tbaa !31
  br label %103

103:                                              ; preds = %92
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  br label %104

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  store ptr %13, ptr %18, align 8, !tbaa !5
  store i32 -17973521, ptr %14, align 4, !tbaa !31
  store i32 -1640531527, ptr %16, align 4, !tbaa !31
  store i32 -1640531527, ptr %15, align 4, !tbaa !31
  store i32 4, ptr %17, align 4, !tbaa !31
  br label %106

106:                                              ; preds = %274, %105
  %107 = load i32, ptr %17, align 4, !tbaa !31
  %108 = icmp uge i32 %107, 12
  br i1 %108, label %109, label %279

109:                                              ; preds = %106
  %110 = load ptr, ptr %18, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 0
  %112 = load i8, ptr %111, align 1, !tbaa !32
  %113 = zext i8 %112 to i32
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = getelementptr inbounds i8, ptr %114, i64 1
  %116 = load i8, ptr %115, align 1, !tbaa !32
  %117 = zext i8 %116 to i32
  %118 = shl i32 %117, 8
  %119 = add i32 %113, %118
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = getelementptr inbounds i8, ptr %120, i64 2
  %122 = load i8, ptr %121, align 1, !tbaa !32
  %123 = zext i8 %122 to i32
  %124 = shl i32 %123, 16
  %125 = add i32 %119, %124
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = getelementptr inbounds i8, ptr %126, i64 3
  %128 = load i8, ptr %127, align 1, !tbaa !32
  %129 = zext i8 %128 to i32
  %130 = shl i32 %129, 24
  %131 = add i32 %125, %130
  %132 = load i32, ptr %15, align 4, !tbaa !31
  %133 = add i32 %132, %131
  store i32 %133, ptr %15, align 4, !tbaa !31
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %134, i64 4
  %136 = load i8, ptr %135, align 1, !tbaa !32
  %137 = zext i8 %136 to i32
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  %139 = getelementptr inbounds i8, ptr %138, i64 5
  %140 = load i8, ptr %139, align 1, !tbaa !32
  %141 = zext i8 %140 to i32
  %142 = shl i32 %141, 8
  %143 = add i32 %137, %142
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 6
  %146 = load i8, ptr %145, align 1, !tbaa !32
  %147 = zext i8 %146 to i32
  %148 = shl i32 %147, 16
  %149 = add i32 %143, %148
  %150 = load ptr, ptr %18, align 8, !tbaa !5
  %151 = getelementptr inbounds i8, ptr %150, i64 7
  %152 = load i8, ptr %151, align 1, !tbaa !32
  %153 = zext i8 %152 to i32
  %154 = shl i32 %153, 24
  %155 = add i32 %149, %154
  %156 = load i32, ptr %16, align 4, !tbaa !31
  %157 = add i32 %156, %155
  store i32 %157, ptr %16, align 4, !tbaa !31
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %158, i64 8
  %160 = load i8, ptr %159, align 1, !tbaa !32
  %161 = zext i8 %160 to i32
  %162 = load ptr, ptr %18, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 9
  %164 = load i8, ptr %163, align 1, !tbaa !32
  %165 = zext i8 %164 to i32
  %166 = shl i32 %165, 8
  %167 = add i32 %161, %166
  %168 = load ptr, ptr %18, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 10
  %170 = load i8, ptr %169, align 1, !tbaa !32
  %171 = zext i8 %170 to i32
  %172 = shl i32 %171, 16
  %173 = add i32 %167, %172
  %174 = load ptr, ptr %18, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i64 11
  %176 = load i8, ptr %175, align 1, !tbaa !32
  %177 = zext i8 %176 to i32
  %178 = shl i32 %177, 24
  %179 = add i32 %173, %178
  %180 = load i32, ptr %14, align 4, !tbaa !31
  %181 = add i32 %180, %179
  store i32 %181, ptr %14, align 4, !tbaa !31
  br label %182

182:                                              ; preds = %109
  %183 = load i32, ptr %16, align 4, !tbaa !31
  %184 = load i32, ptr %15, align 4, !tbaa !31
  %185 = sub i32 %184, %183
  store i32 %185, ptr %15, align 4, !tbaa !31
  %186 = load i32, ptr %14, align 4, !tbaa !31
  %187 = load i32, ptr %15, align 4, !tbaa !31
  %188 = sub i32 %187, %186
  store i32 %188, ptr %15, align 4, !tbaa !31
  %189 = load i32, ptr %14, align 4, !tbaa !31
  %190 = lshr i32 %189, 13
  %191 = load i32, ptr %15, align 4, !tbaa !31
  %192 = xor i32 %191, %190
  store i32 %192, ptr %15, align 4, !tbaa !31
  %193 = load i32, ptr %14, align 4, !tbaa !31
  %194 = load i32, ptr %16, align 4, !tbaa !31
  %195 = sub i32 %194, %193
  store i32 %195, ptr %16, align 4, !tbaa !31
  %196 = load i32, ptr %15, align 4, !tbaa !31
  %197 = load i32, ptr %16, align 4, !tbaa !31
  %198 = sub i32 %197, %196
  store i32 %198, ptr %16, align 4, !tbaa !31
  %199 = load i32, ptr %15, align 4, !tbaa !31
  %200 = shl i32 %199, 8
  %201 = load i32, ptr %16, align 4, !tbaa !31
  %202 = xor i32 %201, %200
  store i32 %202, ptr %16, align 4, !tbaa !31
  %203 = load i32, ptr %15, align 4, !tbaa !31
  %204 = load i32, ptr %14, align 4, !tbaa !31
  %205 = sub i32 %204, %203
  store i32 %205, ptr %14, align 4, !tbaa !31
  %206 = load i32, ptr %16, align 4, !tbaa !31
  %207 = load i32, ptr %14, align 4, !tbaa !31
  %208 = sub i32 %207, %206
  store i32 %208, ptr %14, align 4, !tbaa !31
  %209 = load i32, ptr %16, align 4, !tbaa !31
  %210 = lshr i32 %209, 13
  %211 = load i32, ptr %14, align 4, !tbaa !31
  %212 = xor i32 %211, %210
  store i32 %212, ptr %14, align 4, !tbaa !31
  %213 = load i32, ptr %16, align 4, !tbaa !31
  %214 = load i32, ptr %15, align 4, !tbaa !31
  %215 = sub i32 %214, %213
  store i32 %215, ptr %15, align 4, !tbaa !31
  %216 = load i32, ptr %14, align 4, !tbaa !31
  %217 = load i32, ptr %15, align 4, !tbaa !31
  %218 = sub i32 %217, %216
  store i32 %218, ptr %15, align 4, !tbaa !31
  %219 = load i32, ptr %14, align 4, !tbaa !31
  %220 = lshr i32 %219, 12
  %221 = load i32, ptr %15, align 4, !tbaa !31
  %222 = xor i32 %221, %220
  store i32 %222, ptr %15, align 4, !tbaa !31
  %223 = load i32, ptr %14, align 4, !tbaa !31
  %224 = load i32, ptr %16, align 4, !tbaa !31
  %225 = sub i32 %224, %223
  store i32 %225, ptr %16, align 4, !tbaa !31
  %226 = load i32, ptr %15, align 4, !tbaa !31
  %227 = load i32, ptr %16, align 4, !tbaa !31
  %228 = sub i32 %227, %226
  store i32 %228, ptr %16, align 4, !tbaa !31
  %229 = load i32, ptr %15, align 4, !tbaa !31
  %230 = shl i32 %229, 16
  %231 = load i32, ptr %16, align 4, !tbaa !31
  %232 = xor i32 %231, %230
  store i32 %232, ptr %16, align 4, !tbaa !31
  %233 = load i32, ptr %15, align 4, !tbaa !31
  %234 = load i32, ptr %14, align 4, !tbaa !31
  %235 = sub i32 %234, %233
  store i32 %235, ptr %14, align 4, !tbaa !31
  %236 = load i32, ptr %16, align 4, !tbaa !31
  %237 = load i32, ptr %14, align 4, !tbaa !31
  %238 = sub i32 %237, %236
  store i32 %238, ptr %14, align 4, !tbaa !31
  %239 = load i32, ptr %16, align 4, !tbaa !31
  %240 = lshr i32 %239, 5
  %241 = load i32, ptr %14, align 4, !tbaa !31
  %242 = xor i32 %241, %240
  store i32 %242, ptr %14, align 4, !tbaa !31
  %243 = load i32, ptr %16, align 4, !tbaa !31
  %244 = load i32, ptr %15, align 4, !tbaa !31
  %245 = sub i32 %244, %243
  store i32 %245, ptr %15, align 4, !tbaa !31
  %246 = load i32, ptr %14, align 4, !tbaa !31
  %247 = load i32, ptr %15, align 4, !tbaa !31
  %248 = sub i32 %247, %246
  store i32 %248, ptr %15, align 4, !tbaa !31
  %249 = load i32, ptr %14, align 4, !tbaa !31
  %250 = lshr i32 %249, 3
  %251 = load i32, ptr %15, align 4, !tbaa !31
  %252 = xor i32 %251, %250
  store i32 %252, ptr %15, align 4, !tbaa !31
  %253 = load i32, ptr %14, align 4, !tbaa !31
  %254 = load i32, ptr %16, align 4, !tbaa !31
  %255 = sub i32 %254, %253
  store i32 %255, ptr %16, align 4, !tbaa !31
  %256 = load i32, ptr %15, align 4, !tbaa !31
  %257 = load i32, ptr %16, align 4, !tbaa !31
  %258 = sub i32 %257, %256
  store i32 %258, ptr %16, align 4, !tbaa !31
  %259 = load i32, ptr %15, align 4, !tbaa !31
  %260 = shl i32 %259, 10
  %261 = load i32, ptr %16, align 4, !tbaa !31
  %262 = xor i32 %261, %260
  store i32 %262, ptr %16, align 4, !tbaa !31
  %263 = load i32, ptr %15, align 4, !tbaa !31
  %264 = load i32, ptr %14, align 4, !tbaa !31
  %265 = sub i32 %264, %263
  store i32 %265, ptr %14, align 4, !tbaa !31
  %266 = load i32, ptr %16, align 4, !tbaa !31
  %267 = load i32, ptr %14, align 4, !tbaa !31
  %268 = sub i32 %267, %266
  store i32 %268, ptr %14, align 4, !tbaa !31
  %269 = load i32, ptr %16, align 4, !tbaa !31
  %270 = lshr i32 %269, 15
  %271 = load i32, ptr %14, align 4, !tbaa !31
  %272 = xor i32 %271, %270
  store i32 %272, ptr %14, align 4, !tbaa !31
  br label %273

273:                                              ; preds = %182
  br label %274

274:                                              ; preds = %273
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = getelementptr inbounds i8, ptr %275, i64 12
  store ptr %276, ptr %18, align 8, !tbaa !5
  %277 = load i32, ptr %17, align 4, !tbaa !31
  %278 = sub i32 %277, 12
  store i32 %278, ptr %17, align 4, !tbaa !31
  br label %106, !llvm.loop !33

279:                                              ; preds = %106
  %280 = load i32, ptr %14, align 4, !tbaa !31
  %281 = add i32 %280, 4
  store i32 %281, ptr %14, align 4, !tbaa !31
  %282 = load i32, ptr %17, align 4, !tbaa !31
  switch i32 %282, label %369 [
    i32 11, label %283
    i32 10, label %291
    i32 9, label %299
    i32 8, label %307
    i32 7, label %315
    i32 6, label %323
    i32 5, label %331
    i32 4, label %338
    i32 3, label %346
    i32 2, label %354
    i32 1, label %362
  ]

283:                                              ; preds = %279
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = getelementptr inbounds i8, ptr %284, i64 10
  %286 = load i8, ptr %285, align 1, !tbaa !32
  %287 = zext i8 %286 to i32
  %288 = shl i32 %287, 24
  %289 = load i32, ptr %14, align 4, !tbaa !31
  %290 = add i32 %289, %288
  store i32 %290, ptr %14, align 4, !tbaa !31
  br label %291

291:                                              ; preds = %283, %279
  %292 = load ptr, ptr %18, align 8, !tbaa !5
  %293 = getelementptr inbounds i8, ptr %292, i64 9
  %294 = load i8, ptr %293, align 1, !tbaa !32
  %295 = zext i8 %294 to i32
  %296 = shl i32 %295, 16
  %297 = load i32, ptr %14, align 4, !tbaa !31
  %298 = add i32 %297, %296
  store i32 %298, ptr %14, align 4, !tbaa !31
  br label %299

299:                                              ; preds = %291, %279
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = load i8, ptr %301, align 1, !tbaa !32
  %303 = zext i8 %302 to i32
  %304 = shl i32 %303, 8
  %305 = load i32, ptr %14, align 4, !tbaa !31
  %306 = add i32 %305, %304
  store i32 %306, ptr %14, align 4, !tbaa !31
  br label %307

307:                                              ; preds = %299, %279
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 7
  %310 = load i8, ptr %309, align 1, !tbaa !32
  %311 = zext i8 %310 to i32
  %312 = shl i32 %311, 24
  %313 = load i32, ptr %16, align 4, !tbaa !31
  %314 = add i32 %313, %312
  store i32 %314, ptr %16, align 4, !tbaa !31
  br label %315

315:                                              ; preds = %307, %279
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  %317 = getelementptr inbounds i8, ptr %316, i64 6
  %318 = load i8, ptr %317, align 1, !tbaa !32
  %319 = zext i8 %318 to i32
  %320 = shl i32 %319, 16
  %321 = load i32, ptr %16, align 4, !tbaa !31
  %322 = add i32 %321, %320
  store i32 %322, ptr %16, align 4, !tbaa !31
  br label %323

323:                                              ; preds = %315, %279
  %324 = load ptr, ptr %18, align 8, !tbaa !5
  %325 = getelementptr inbounds i8, ptr %324, i64 5
  %326 = load i8, ptr %325, align 1, !tbaa !32
  %327 = zext i8 %326 to i32
  %328 = shl i32 %327, 8
  %329 = load i32, ptr %16, align 4, !tbaa !31
  %330 = add i32 %329, %328
  store i32 %330, ptr %16, align 4, !tbaa !31
  br label %331

331:                                              ; preds = %323, %279
  %332 = load ptr, ptr %18, align 8, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %332, i64 4
  %334 = load i8, ptr %333, align 1, !tbaa !32
  %335 = zext i8 %334 to i32
  %336 = load i32, ptr %16, align 4, !tbaa !31
  %337 = add i32 %336, %335
  store i32 %337, ptr %16, align 4, !tbaa !31
  br label %338

338:                                              ; preds = %331, %279
  %339 = load ptr, ptr %18, align 8, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %339, i64 3
  %341 = load i8, ptr %340, align 1, !tbaa !32
  %342 = zext i8 %341 to i32
  %343 = shl i32 %342, 24
  %344 = load i32, ptr %15, align 4, !tbaa !31
  %345 = add i32 %344, %343
  store i32 %345, ptr %15, align 4, !tbaa !31
  br label %346

346:                                              ; preds = %338, %279
  %347 = load ptr, ptr %18, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i64 2
  %349 = load i8, ptr %348, align 1, !tbaa !32
  %350 = zext i8 %349 to i32
  %351 = shl i32 %350, 16
  %352 = load i32, ptr %15, align 4, !tbaa !31
  %353 = add i32 %352, %351
  store i32 %353, ptr %15, align 4, !tbaa !31
  br label %354

354:                                              ; preds = %346, %279
  %355 = load ptr, ptr %18, align 8, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %355, i64 1
  %357 = load i8, ptr %356, align 1, !tbaa !32
  %358 = zext i8 %357 to i32
  %359 = shl i32 %358, 8
  %360 = load i32, ptr %15, align 4, !tbaa !31
  %361 = add i32 %360, %359
  store i32 %361, ptr %15, align 4, !tbaa !31
  br label %362

362:                                              ; preds = %354, %279
  %363 = load ptr, ptr %18, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %363, i64 0
  %365 = load i8, ptr %364, align 1, !tbaa !32
  %366 = zext i8 %365 to i32
  %367 = load i32, ptr %15, align 4, !tbaa !31
  %368 = add i32 %367, %366
  store i32 %368, ptr %15, align 4, !tbaa !31
  br label %369

369:                                              ; preds = %362, %279
  br label %370

370:                                              ; preds = %369
  %371 = load i32, ptr %16, align 4, !tbaa !31
  %372 = load i32, ptr %15, align 4, !tbaa !31
  %373 = sub i32 %372, %371
  store i32 %373, ptr %15, align 4, !tbaa !31
  %374 = load i32, ptr %14, align 4, !tbaa !31
  %375 = load i32, ptr %15, align 4, !tbaa !31
  %376 = sub i32 %375, %374
  store i32 %376, ptr %15, align 4, !tbaa !31
  %377 = load i32, ptr %14, align 4, !tbaa !31
  %378 = lshr i32 %377, 13
  %379 = load i32, ptr %15, align 4, !tbaa !31
  %380 = xor i32 %379, %378
  store i32 %380, ptr %15, align 4, !tbaa !31
  %381 = load i32, ptr %14, align 4, !tbaa !31
  %382 = load i32, ptr %16, align 4, !tbaa !31
  %383 = sub i32 %382, %381
  store i32 %383, ptr %16, align 4, !tbaa !31
  %384 = load i32, ptr %15, align 4, !tbaa !31
  %385 = load i32, ptr %16, align 4, !tbaa !31
  %386 = sub i32 %385, %384
  store i32 %386, ptr %16, align 4, !tbaa !31
  %387 = load i32, ptr %15, align 4, !tbaa !31
  %388 = shl i32 %387, 8
  %389 = load i32, ptr %16, align 4, !tbaa !31
  %390 = xor i32 %389, %388
  store i32 %390, ptr %16, align 4, !tbaa !31
  %391 = load i32, ptr %15, align 4, !tbaa !31
  %392 = load i32, ptr %14, align 4, !tbaa !31
  %393 = sub i32 %392, %391
  store i32 %393, ptr %14, align 4, !tbaa !31
  %394 = load i32, ptr %16, align 4, !tbaa !31
  %395 = load i32, ptr %14, align 4, !tbaa !31
  %396 = sub i32 %395, %394
  store i32 %396, ptr %14, align 4, !tbaa !31
  %397 = load i32, ptr %16, align 4, !tbaa !31
  %398 = lshr i32 %397, 13
  %399 = load i32, ptr %14, align 4, !tbaa !31
  %400 = xor i32 %399, %398
  store i32 %400, ptr %14, align 4, !tbaa !31
  %401 = load i32, ptr %16, align 4, !tbaa !31
  %402 = load i32, ptr %15, align 4, !tbaa !31
  %403 = sub i32 %402, %401
  store i32 %403, ptr %15, align 4, !tbaa !31
  %404 = load i32, ptr %14, align 4, !tbaa !31
  %405 = load i32, ptr %15, align 4, !tbaa !31
  %406 = sub i32 %405, %404
  store i32 %406, ptr %15, align 4, !tbaa !31
  %407 = load i32, ptr %14, align 4, !tbaa !31
  %408 = lshr i32 %407, 12
  %409 = load i32, ptr %15, align 4, !tbaa !31
  %410 = xor i32 %409, %408
  store i32 %410, ptr %15, align 4, !tbaa !31
  %411 = load i32, ptr %14, align 4, !tbaa !31
  %412 = load i32, ptr %16, align 4, !tbaa !31
  %413 = sub i32 %412, %411
  store i32 %413, ptr %16, align 4, !tbaa !31
  %414 = load i32, ptr %15, align 4, !tbaa !31
  %415 = load i32, ptr %16, align 4, !tbaa !31
  %416 = sub i32 %415, %414
  store i32 %416, ptr %16, align 4, !tbaa !31
  %417 = load i32, ptr %15, align 4, !tbaa !31
  %418 = shl i32 %417, 16
  %419 = load i32, ptr %16, align 4, !tbaa !31
  %420 = xor i32 %419, %418
  store i32 %420, ptr %16, align 4, !tbaa !31
  %421 = load i32, ptr %15, align 4, !tbaa !31
  %422 = load i32, ptr %14, align 4, !tbaa !31
  %423 = sub i32 %422, %421
  store i32 %423, ptr %14, align 4, !tbaa !31
  %424 = load i32, ptr %16, align 4, !tbaa !31
  %425 = load i32, ptr %14, align 4, !tbaa !31
  %426 = sub i32 %425, %424
  store i32 %426, ptr %14, align 4, !tbaa !31
  %427 = load i32, ptr %16, align 4, !tbaa !31
  %428 = lshr i32 %427, 5
  %429 = load i32, ptr %14, align 4, !tbaa !31
  %430 = xor i32 %429, %428
  store i32 %430, ptr %14, align 4, !tbaa !31
  %431 = load i32, ptr %16, align 4, !tbaa !31
  %432 = load i32, ptr %15, align 4, !tbaa !31
  %433 = sub i32 %432, %431
  store i32 %433, ptr %15, align 4, !tbaa !31
  %434 = load i32, ptr %14, align 4, !tbaa !31
  %435 = load i32, ptr %15, align 4, !tbaa !31
  %436 = sub i32 %435, %434
  store i32 %436, ptr %15, align 4, !tbaa !31
  %437 = load i32, ptr %14, align 4, !tbaa !31
  %438 = lshr i32 %437, 3
  %439 = load i32, ptr %15, align 4, !tbaa !31
  %440 = xor i32 %439, %438
  store i32 %440, ptr %15, align 4, !tbaa !31
  %441 = load i32, ptr %14, align 4, !tbaa !31
  %442 = load i32, ptr %16, align 4, !tbaa !31
  %443 = sub i32 %442, %441
  store i32 %443, ptr %16, align 4, !tbaa !31
  %444 = load i32, ptr %15, align 4, !tbaa !31
  %445 = load i32, ptr %16, align 4, !tbaa !31
  %446 = sub i32 %445, %444
  store i32 %446, ptr %16, align 4, !tbaa !31
  %447 = load i32, ptr %15, align 4, !tbaa !31
  %448 = shl i32 %447, 10
  %449 = load i32, ptr %16, align 4, !tbaa !31
  %450 = xor i32 %449, %448
  store i32 %450, ptr %16, align 4, !tbaa !31
  %451 = load i32, ptr %15, align 4, !tbaa !31
  %452 = load i32, ptr %14, align 4, !tbaa !31
  %453 = sub i32 %452, %451
  store i32 %453, ptr %14, align 4, !tbaa !31
  %454 = load i32, ptr %16, align 4, !tbaa !31
  %455 = load i32, ptr %14, align 4, !tbaa !31
  %456 = sub i32 %455, %454
  store i32 %456, ptr %14, align 4, !tbaa !31
  %457 = load i32, ptr %16, align 4, !tbaa !31
  %458 = lshr i32 %457, 15
  %459 = load i32, ptr %14, align 4, !tbaa !31
  %460 = xor i32 %459, %458
  store i32 %460, ptr %14, align 4, !tbaa !31
  br label %461

461:                                              ; preds = %370
  br label %462

462:                                              ; preds = %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %463

463:                                              ; preds = %462
  br label %464

464:                                              ; preds = %463
  br label %465

465:                                              ; preds = %464
  br label %466

466:                                              ; preds = %465
  br label %467

467:                                              ; preds = %466
  store ptr null, ptr %12, align 8, !tbaa !5
  %468 = load ptr, ptr %10, align 8, !tbaa !5
  %469 = icmp ne ptr %468, null
  br i1 %469, label %470, label %574

470:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  br label %471

471:                                              ; preds = %470
  %472 = load i32, ptr %14, align 4, !tbaa !31
  %473 = load ptr, ptr %10, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.gpos_single_hash, ptr %473, i32 0, i32 3
  %475 = getelementptr inbounds %struct.UT_hash_handle, ptr %474, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8, !tbaa !35
  %477 = getelementptr inbounds %struct.UT_hash_table, ptr %476, i32 0, i32 1
  %478 = load i32, ptr %477, align 8, !tbaa !38
  %479 = sub i32 %478, 1
  %480 = and i32 %472, %479
  store i32 %480, ptr %19, align 4, !tbaa !31
  br label %481

481:                                              ; preds = %471
  br label %482

482:                                              ; preds = %481
  br label %483

483:                                              ; preds = %482
  %484 = load ptr, ptr %10, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.gpos_single_hash, ptr %484, i32 0, i32 3
  %486 = getelementptr inbounds %struct.UT_hash_handle, ptr %485, i32 0, i32 0
  %487 = load ptr, ptr %486, align 8, !tbaa !35
  %488 = getelementptr inbounds %struct.UT_hash_table, ptr %487, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !40
  %490 = load i32, ptr %19, align 4, !tbaa !31
  %491 = zext i32 %490 to i64
  %492 = getelementptr inbounds %struct.UT_hash_bucket, ptr %489, i64 %491
  %493 = getelementptr inbounds %struct.UT_hash_bucket, ptr %492, i32 0, i32 0
  %494 = load ptr, ptr %493, align 8, !tbaa !41
  %495 = icmp ne ptr %494, null
  br i1 %495, label %496, label %519

496:                                              ; preds = %483
  br label %497

497:                                              ; preds = %496
  %498 = load ptr, ptr %10, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.gpos_single_hash, ptr %498, i32 0, i32 3
  %500 = getelementptr inbounds %struct.UT_hash_handle, ptr %499, i32 0, i32 0
  %501 = load ptr, ptr %500, align 8, !tbaa !35
  %502 = getelementptr inbounds %struct.UT_hash_table, ptr %501, i32 0, i32 0
  %503 = load ptr, ptr %502, align 8, !tbaa !40
  %504 = load i32, ptr %19, align 4, !tbaa !31
  %505 = zext i32 %504 to i64
  %506 = getelementptr inbounds %struct.UT_hash_bucket, ptr %503, i64 %505
  %507 = getelementptr inbounds %struct.UT_hash_bucket, ptr %506, i32 0, i32 0
  %508 = load ptr, ptr %507, align 8, !tbaa !41
  %509 = load ptr, ptr %10, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.gpos_single_hash, ptr %509, i32 0, i32 3
  %511 = getelementptr inbounds %struct.UT_hash_handle, ptr %510, i32 0, i32 0
  %512 = load ptr, ptr %511, align 8, !tbaa !35
  %513 = getelementptr inbounds %struct.UT_hash_table, ptr %512, i32 0, i32 5
  %514 = load i64, ptr %513, align 8, !tbaa !43
  %515 = sub i64 0, %514
  %516 = getelementptr inbounds i8, ptr %508, i64 %515
  store ptr %516, ptr %12, align 8, !tbaa !5
  br label %517

517:                                              ; preds = %497
  br label %518

518:                                              ; preds = %517
  br label %520

519:                                              ; preds = %483
  store ptr null, ptr %12, align 8, !tbaa !5
  br label %520

520:                                              ; preds = %519, %518
  br label %521

521:                                              ; preds = %570, %520
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = icmp ne ptr %522, null
  br i1 %523, label %524, label %571

524:                                              ; preds = %521
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.gpos_single_hash, ptr %525, i32 0, i32 3
  %527 = getelementptr inbounds %struct.UT_hash_handle, ptr %526, i32 0, i32 7
  %528 = load i32, ptr %527, align 4, !tbaa !44
  %529 = load i32, ptr %14, align 4, !tbaa !31
  %530 = icmp eq i32 %528, %529
  br i1 %530, label %531, label %547

531:                                              ; preds = %524
  %532 = load ptr, ptr %12, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.gpos_single_hash, ptr %532, i32 0, i32 3
  %534 = getelementptr inbounds %struct.UT_hash_handle, ptr %533, i32 0, i32 6
  %535 = load i32, ptr %534, align 8, !tbaa !45
  %536 = zext i32 %535 to i64
  %537 = icmp eq i64 %536, 4
  br i1 %537, label %538, label %547

538:                                              ; preds = %531
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.gpos_single_hash, ptr %539, i32 0, i32 3
  %541 = getelementptr inbounds %struct.UT_hash_handle, ptr %540, i32 0, i32 5
  %542 = load ptr, ptr %541, align 8, !tbaa !46
  %543 = call i32 @memcmp(ptr noundef %542, ptr noundef %13, i64 noundef 4) #11
  %544 = icmp eq i32 %543, 0
  br i1 %544, label %545, label %546

545:                                              ; preds = %538
  br label %571

546:                                              ; preds = %538
  br label %547

547:                                              ; preds = %546, %531, %524
  %548 = load ptr, ptr %12, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.gpos_single_hash, ptr %548, i32 0, i32 3
  %550 = getelementptr inbounds %struct.UT_hash_handle, ptr %549, i32 0, i32 4
  %551 = load ptr, ptr %550, align 8, !tbaa !47
  %552 = icmp ne ptr %551, null
  br i1 %552, label %553, label %569

553:                                              ; preds = %547
  br label %554

554:                                              ; preds = %553
  %555 = load ptr, ptr %12, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.gpos_single_hash, ptr %555, i32 0, i32 3
  %557 = getelementptr inbounds %struct.UT_hash_handle, ptr %556, i32 0, i32 4
  %558 = load ptr, ptr %557, align 8, !tbaa !47
  %559 = load ptr, ptr %10, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.gpos_single_hash, ptr %559, i32 0, i32 3
  %561 = getelementptr inbounds %struct.UT_hash_handle, ptr %560, i32 0, i32 0
  %562 = load ptr, ptr %561, align 8, !tbaa !35
  %563 = getelementptr inbounds %struct.UT_hash_table, ptr %562, i32 0, i32 5
  %564 = load i64, ptr %563, align 8, !tbaa !43
  %565 = sub i64 0, %564
  %566 = getelementptr inbounds i8, ptr %558, i64 %565
  store ptr %566, ptr %12, align 8, !tbaa !5
  br label %567

567:                                              ; preds = %554
  br label %568

568:                                              ; preds = %567
  br label %570

569:                                              ; preds = %547
  store ptr null, ptr %12, align 8, !tbaa !5
  br label %570

570:                                              ; preds = %569, %568
  br label %521, !llvm.loop !48

571:                                              ; preds = %545, %521
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %574

574:                                              ; preds = %573, %467
  br label %575

575:                                              ; preds = %574
  br label %576

576:                                              ; preds = %575
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %577

577:                                              ; preds = %576
  br label %578

578:                                              ; preds = %577
  %579 = load ptr, ptr %12, align 8, !tbaa !5
  %580 = icmp ne ptr %579, null
  br i1 %580, label %581, label %601

581:                                              ; preds = %578
  %582 = load ptr, ptr %8, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.otfcc_Options, ptr %582, i32 0, i32 24
  %584 = load ptr, ptr %583, align 8, !tbaa !20
  %585 = getelementptr inbounds %struct.otfcc_ILogger, ptr %584, i32 0, i32 6
  %586 = load ptr, ptr %585, align 8, !tbaa !23
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.otfcc_Options, ptr %587, i32 0, i32 24
  %589 = load ptr, ptr %588, align 8, !tbaa !20
  %590 = call ptr @sdsempty()
  %591 = load ptr, ptr %9, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.subtable_gpos_single, ptr %591, i32 0, i32 2
  %593 = load ptr, ptr %592, align 8, !tbaa !19
  %594 = load i16, ptr %11, align 2, !tbaa !9
  %595 = zext i16 %594 to i64
  %596 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %593, i64 %595
  %597 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %596, i32 0, i32 0
  %598 = getelementptr inbounds %struct.otfcc_Handle, ptr %597, i32 0, i32 2
  %599 = load ptr, ptr %598, align 8, !tbaa !25
  %600 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %590, ptr noundef @.str.1, ptr noundef %599)
  call void %586(ptr noundef %589, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %600)
  br label %1479

601:                                              ; preds = %578
  %602 = call ptr @__caryll_allocate_clean(i64 noundef 104, i64 noundef 30)
  store ptr %602, ptr %12, align 8, !tbaa !5
  %603 = load ptr, ptr %9, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.subtable_gpos_single, ptr %603, i32 0, i32 2
  %605 = load ptr, ptr %604, align 8, !tbaa !19
  %606 = load i16, ptr %11, align 2, !tbaa !9
  %607 = zext i16 %606 to i64
  %608 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %605, i64 %607
  %609 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %608, i32 0, i32 0
  %610 = getelementptr inbounds %struct.otfcc_Handle, ptr %609, i32 0, i32 1
  %611 = load i16, ptr %610, align 4, !tbaa !30
  %612 = zext i16 %611 to i32
  %613 = load ptr, ptr %12, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.gpos_single_hash, ptr %613, i32 0, i32 0
  store i32 %612, ptr %614, align 8, !tbaa !49
  %615 = load ptr, ptr %9, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.subtable_gpos_single, ptr %615, i32 0, i32 2
  %617 = load ptr, ptr %616, align 8, !tbaa !19
  %618 = load i16, ptr %11, align 2, !tbaa !9
  %619 = zext i16 %618 to i64
  %620 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %617, i64 %619
  %621 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %620, i32 0, i32 0
  %622 = getelementptr inbounds %struct.otfcc_Handle, ptr %621, i32 0, i32 2
  %623 = load ptr, ptr %622, align 8, !tbaa !25
  %624 = call ptr @sdsdup(ptr noundef %623)
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.gpos_single_hash, ptr %625, i32 0, i32 1
  store ptr %624, ptr %626, align 8, !tbaa !50
  %627 = load ptr, ptr %12, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.gpos_single_hash, ptr %627, i32 0, i32 2
  %629 = load ptr, ptr %9, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.subtable_gpos_single, ptr %629, i32 0, i32 2
  %631 = load ptr, ptr %630, align 8, !tbaa !19
  %632 = load i16, ptr %11, align 2, !tbaa !9
  %633 = zext i16 %632 to i64
  %634 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %634, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %628, ptr align 8 %635, i64 32, i1 false), !tbaa.struct !51
  br label %636

636:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  br label %637

637:                                              ; preds = %636
  br label %638

638:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %639 = load ptr, ptr %12, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.gpos_single_hash, ptr %639, i32 0, i32 0
  store ptr %640, ptr %24, align 8, !tbaa !5
  store i32 -17973521, ptr %20, align 4, !tbaa !31
  store i32 -1640531527, ptr %22, align 4, !tbaa !31
  store i32 -1640531527, ptr %21, align 4, !tbaa !31
  store i32 4, ptr %23, align 4, !tbaa !31
  br label %641

641:                                              ; preds = %809, %638
  %642 = load i32, ptr %23, align 4, !tbaa !31
  %643 = icmp uge i32 %642, 12
  br i1 %643, label %644, label %814

644:                                              ; preds = %641
  %645 = load ptr, ptr %24, align 8, !tbaa !5
  %646 = getelementptr inbounds i8, ptr %645, i64 0
  %647 = load i8, ptr %646, align 1, !tbaa !32
  %648 = zext i8 %647 to i32
  %649 = load ptr, ptr %24, align 8, !tbaa !5
  %650 = getelementptr inbounds i8, ptr %649, i64 1
  %651 = load i8, ptr %650, align 1, !tbaa !32
  %652 = zext i8 %651 to i32
  %653 = shl i32 %652, 8
  %654 = add i32 %648, %653
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = getelementptr inbounds i8, ptr %655, i64 2
  %657 = load i8, ptr %656, align 1, !tbaa !32
  %658 = zext i8 %657 to i32
  %659 = shl i32 %658, 16
  %660 = add i32 %654, %659
  %661 = load ptr, ptr %24, align 8, !tbaa !5
  %662 = getelementptr inbounds i8, ptr %661, i64 3
  %663 = load i8, ptr %662, align 1, !tbaa !32
  %664 = zext i8 %663 to i32
  %665 = shl i32 %664, 24
  %666 = add i32 %660, %665
  %667 = load i32, ptr %21, align 4, !tbaa !31
  %668 = add i32 %667, %666
  store i32 %668, ptr %21, align 4, !tbaa !31
  %669 = load ptr, ptr %24, align 8, !tbaa !5
  %670 = getelementptr inbounds i8, ptr %669, i64 4
  %671 = load i8, ptr %670, align 1, !tbaa !32
  %672 = zext i8 %671 to i32
  %673 = load ptr, ptr %24, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %673, i64 5
  %675 = load i8, ptr %674, align 1, !tbaa !32
  %676 = zext i8 %675 to i32
  %677 = shl i32 %676, 8
  %678 = add i32 %672, %677
  %679 = load ptr, ptr %24, align 8, !tbaa !5
  %680 = getelementptr inbounds i8, ptr %679, i64 6
  %681 = load i8, ptr %680, align 1, !tbaa !32
  %682 = zext i8 %681 to i32
  %683 = shl i32 %682, 16
  %684 = add i32 %678, %683
  %685 = load ptr, ptr %24, align 8, !tbaa !5
  %686 = getelementptr inbounds i8, ptr %685, i64 7
  %687 = load i8, ptr %686, align 1, !tbaa !32
  %688 = zext i8 %687 to i32
  %689 = shl i32 %688, 24
  %690 = add i32 %684, %689
  %691 = load i32, ptr %22, align 4, !tbaa !31
  %692 = add i32 %691, %690
  store i32 %692, ptr %22, align 4, !tbaa !31
  %693 = load ptr, ptr %24, align 8, !tbaa !5
  %694 = getelementptr inbounds i8, ptr %693, i64 8
  %695 = load i8, ptr %694, align 1, !tbaa !32
  %696 = zext i8 %695 to i32
  %697 = load ptr, ptr %24, align 8, !tbaa !5
  %698 = getelementptr inbounds i8, ptr %697, i64 9
  %699 = load i8, ptr %698, align 1, !tbaa !32
  %700 = zext i8 %699 to i32
  %701 = shl i32 %700, 8
  %702 = add i32 %696, %701
  %703 = load ptr, ptr %24, align 8, !tbaa !5
  %704 = getelementptr inbounds i8, ptr %703, i64 10
  %705 = load i8, ptr %704, align 1, !tbaa !32
  %706 = zext i8 %705 to i32
  %707 = shl i32 %706, 16
  %708 = add i32 %702, %707
  %709 = load ptr, ptr %24, align 8, !tbaa !5
  %710 = getelementptr inbounds i8, ptr %709, i64 11
  %711 = load i8, ptr %710, align 1, !tbaa !32
  %712 = zext i8 %711 to i32
  %713 = shl i32 %712, 24
  %714 = add i32 %708, %713
  %715 = load i32, ptr %20, align 4, !tbaa !31
  %716 = add i32 %715, %714
  store i32 %716, ptr %20, align 4, !tbaa !31
  br label %717

717:                                              ; preds = %644
  %718 = load i32, ptr %22, align 4, !tbaa !31
  %719 = load i32, ptr %21, align 4, !tbaa !31
  %720 = sub i32 %719, %718
  store i32 %720, ptr %21, align 4, !tbaa !31
  %721 = load i32, ptr %20, align 4, !tbaa !31
  %722 = load i32, ptr %21, align 4, !tbaa !31
  %723 = sub i32 %722, %721
  store i32 %723, ptr %21, align 4, !tbaa !31
  %724 = load i32, ptr %20, align 4, !tbaa !31
  %725 = lshr i32 %724, 13
  %726 = load i32, ptr %21, align 4, !tbaa !31
  %727 = xor i32 %726, %725
  store i32 %727, ptr %21, align 4, !tbaa !31
  %728 = load i32, ptr %20, align 4, !tbaa !31
  %729 = load i32, ptr %22, align 4, !tbaa !31
  %730 = sub i32 %729, %728
  store i32 %730, ptr %22, align 4, !tbaa !31
  %731 = load i32, ptr %21, align 4, !tbaa !31
  %732 = load i32, ptr %22, align 4, !tbaa !31
  %733 = sub i32 %732, %731
  store i32 %733, ptr %22, align 4, !tbaa !31
  %734 = load i32, ptr %21, align 4, !tbaa !31
  %735 = shl i32 %734, 8
  %736 = load i32, ptr %22, align 4, !tbaa !31
  %737 = xor i32 %736, %735
  store i32 %737, ptr %22, align 4, !tbaa !31
  %738 = load i32, ptr %21, align 4, !tbaa !31
  %739 = load i32, ptr %20, align 4, !tbaa !31
  %740 = sub i32 %739, %738
  store i32 %740, ptr %20, align 4, !tbaa !31
  %741 = load i32, ptr %22, align 4, !tbaa !31
  %742 = load i32, ptr %20, align 4, !tbaa !31
  %743 = sub i32 %742, %741
  store i32 %743, ptr %20, align 4, !tbaa !31
  %744 = load i32, ptr %22, align 4, !tbaa !31
  %745 = lshr i32 %744, 13
  %746 = load i32, ptr %20, align 4, !tbaa !31
  %747 = xor i32 %746, %745
  store i32 %747, ptr %20, align 4, !tbaa !31
  %748 = load i32, ptr %22, align 4, !tbaa !31
  %749 = load i32, ptr %21, align 4, !tbaa !31
  %750 = sub i32 %749, %748
  store i32 %750, ptr %21, align 4, !tbaa !31
  %751 = load i32, ptr %20, align 4, !tbaa !31
  %752 = load i32, ptr %21, align 4, !tbaa !31
  %753 = sub i32 %752, %751
  store i32 %753, ptr %21, align 4, !tbaa !31
  %754 = load i32, ptr %20, align 4, !tbaa !31
  %755 = lshr i32 %754, 12
  %756 = load i32, ptr %21, align 4, !tbaa !31
  %757 = xor i32 %756, %755
  store i32 %757, ptr %21, align 4, !tbaa !31
  %758 = load i32, ptr %20, align 4, !tbaa !31
  %759 = load i32, ptr %22, align 4, !tbaa !31
  %760 = sub i32 %759, %758
  store i32 %760, ptr %22, align 4, !tbaa !31
  %761 = load i32, ptr %21, align 4, !tbaa !31
  %762 = load i32, ptr %22, align 4, !tbaa !31
  %763 = sub i32 %762, %761
  store i32 %763, ptr %22, align 4, !tbaa !31
  %764 = load i32, ptr %21, align 4, !tbaa !31
  %765 = shl i32 %764, 16
  %766 = load i32, ptr %22, align 4, !tbaa !31
  %767 = xor i32 %766, %765
  store i32 %767, ptr %22, align 4, !tbaa !31
  %768 = load i32, ptr %21, align 4, !tbaa !31
  %769 = load i32, ptr %20, align 4, !tbaa !31
  %770 = sub i32 %769, %768
  store i32 %770, ptr %20, align 4, !tbaa !31
  %771 = load i32, ptr %22, align 4, !tbaa !31
  %772 = load i32, ptr %20, align 4, !tbaa !31
  %773 = sub i32 %772, %771
  store i32 %773, ptr %20, align 4, !tbaa !31
  %774 = load i32, ptr %22, align 4, !tbaa !31
  %775 = lshr i32 %774, 5
  %776 = load i32, ptr %20, align 4, !tbaa !31
  %777 = xor i32 %776, %775
  store i32 %777, ptr %20, align 4, !tbaa !31
  %778 = load i32, ptr %22, align 4, !tbaa !31
  %779 = load i32, ptr %21, align 4, !tbaa !31
  %780 = sub i32 %779, %778
  store i32 %780, ptr %21, align 4, !tbaa !31
  %781 = load i32, ptr %20, align 4, !tbaa !31
  %782 = load i32, ptr %21, align 4, !tbaa !31
  %783 = sub i32 %782, %781
  store i32 %783, ptr %21, align 4, !tbaa !31
  %784 = load i32, ptr %20, align 4, !tbaa !31
  %785 = lshr i32 %784, 3
  %786 = load i32, ptr %21, align 4, !tbaa !31
  %787 = xor i32 %786, %785
  store i32 %787, ptr %21, align 4, !tbaa !31
  %788 = load i32, ptr %20, align 4, !tbaa !31
  %789 = load i32, ptr %22, align 4, !tbaa !31
  %790 = sub i32 %789, %788
  store i32 %790, ptr %22, align 4, !tbaa !31
  %791 = load i32, ptr %21, align 4, !tbaa !31
  %792 = load i32, ptr %22, align 4, !tbaa !31
  %793 = sub i32 %792, %791
  store i32 %793, ptr %22, align 4, !tbaa !31
  %794 = load i32, ptr %21, align 4, !tbaa !31
  %795 = shl i32 %794, 10
  %796 = load i32, ptr %22, align 4, !tbaa !31
  %797 = xor i32 %796, %795
  store i32 %797, ptr %22, align 4, !tbaa !31
  %798 = load i32, ptr %21, align 4, !tbaa !31
  %799 = load i32, ptr %20, align 4, !tbaa !31
  %800 = sub i32 %799, %798
  store i32 %800, ptr %20, align 4, !tbaa !31
  %801 = load i32, ptr %22, align 4, !tbaa !31
  %802 = load i32, ptr %20, align 4, !tbaa !31
  %803 = sub i32 %802, %801
  store i32 %803, ptr %20, align 4, !tbaa !31
  %804 = load i32, ptr %22, align 4, !tbaa !31
  %805 = lshr i32 %804, 15
  %806 = load i32, ptr %20, align 4, !tbaa !31
  %807 = xor i32 %806, %805
  store i32 %807, ptr %20, align 4, !tbaa !31
  br label %808

808:                                              ; preds = %717
  br label %809

809:                                              ; preds = %808
  %810 = load ptr, ptr %24, align 8, !tbaa !5
  %811 = getelementptr inbounds i8, ptr %810, i64 12
  store ptr %811, ptr %24, align 8, !tbaa !5
  %812 = load i32, ptr %23, align 4, !tbaa !31
  %813 = sub i32 %812, 12
  store i32 %813, ptr %23, align 4, !tbaa !31
  br label %641, !llvm.loop !53

814:                                              ; preds = %641
  %815 = load i32, ptr %20, align 4, !tbaa !31
  %816 = add i32 %815, 4
  store i32 %816, ptr %20, align 4, !tbaa !31
  %817 = load i32, ptr %23, align 4, !tbaa !31
  switch i32 %817, label %904 [
    i32 11, label %818
    i32 10, label %826
    i32 9, label %834
    i32 8, label %842
    i32 7, label %850
    i32 6, label %858
    i32 5, label %866
    i32 4, label %873
    i32 3, label %881
    i32 2, label %889
    i32 1, label %897
  ]

818:                                              ; preds = %814
  %819 = load ptr, ptr %24, align 8, !tbaa !5
  %820 = getelementptr inbounds i8, ptr %819, i64 10
  %821 = load i8, ptr %820, align 1, !tbaa !32
  %822 = zext i8 %821 to i32
  %823 = shl i32 %822, 24
  %824 = load i32, ptr %20, align 4, !tbaa !31
  %825 = add i32 %824, %823
  store i32 %825, ptr %20, align 4, !tbaa !31
  br label %826

826:                                              ; preds = %818, %814
  %827 = load ptr, ptr %24, align 8, !tbaa !5
  %828 = getelementptr inbounds i8, ptr %827, i64 9
  %829 = load i8, ptr %828, align 1, !tbaa !32
  %830 = zext i8 %829 to i32
  %831 = shl i32 %830, 16
  %832 = load i32, ptr %20, align 4, !tbaa !31
  %833 = add i32 %832, %831
  store i32 %833, ptr %20, align 4, !tbaa !31
  br label %834

834:                                              ; preds = %826, %814
  %835 = load ptr, ptr %24, align 8, !tbaa !5
  %836 = getelementptr inbounds i8, ptr %835, i64 8
  %837 = load i8, ptr %836, align 1, !tbaa !32
  %838 = zext i8 %837 to i32
  %839 = shl i32 %838, 8
  %840 = load i32, ptr %20, align 4, !tbaa !31
  %841 = add i32 %840, %839
  store i32 %841, ptr %20, align 4, !tbaa !31
  br label %842

842:                                              ; preds = %834, %814
  %843 = load ptr, ptr %24, align 8, !tbaa !5
  %844 = getelementptr inbounds i8, ptr %843, i64 7
  %845 = load i8, ptr %844, align 1, !tbaa !32
  %846 = zext i8 %845 to i32
  %847 = shl i32 %846, 24
  %848 = load i32, ptr %22, align 4, !tbaa !31
  %849 = add i32 %848, %847
  store i32 %849, ptr %22, align 4, !tbaa !31
  br label %850

850:                                              ; preds = %842, %814
  %851 = load ptr, ptr %24, align 8, !tbaa !5
  %852 = getelementptr inbounds i8, ptr %851, i64 6
  %853 = load i8, ptr %852, align 1, !tbaa !32
  %854 = zext i8 %853 to i32
  %855 = shl i32 %854, 16
  %856 = load i32, ptr %22, align 4, !tbaa !31
  %857 = add i32 %856, %855
  store i32 %857, ptr %22, align 4, !tbaa !31
  br label %858

858:                                              ; preds = %850, %814
  %859 = load ptr, ptr %24, align 8, !tbaa !5
  %860 = getelementptr inbounds i8, ptr %859, i64 5
  %861 = load i8, ptr %860, align 1, !tbaa !32
  %862 = zext i8 %861 to i32
  %863 = shl i32 %862, 8
  %864 = load i32, ptr %22, align 4, !tbaa !31
  %865 = add i32 %864, %863
  store i32 %865, ptr %22, align 4, !tbaa !31
  br label %866

866:                                              ; preds = %858, %814
  %867 = load ptr, ptr %24, align 8, !tbaa !5
  %868 = getelementptr inbounds i8, ptr %867, i64 4
  %869 = load i8, ptr %868, align 1, !tbaa !32
  %870 = zext i8 %869 to i32
  %871 = load i32, ptr %22, align 4, !tbaa !31
  %872 = add i32 %871, %870
  store i32 %872, ptr %22, align 4, !tbaa !31
  br label %873

873:                                              ; preds = %866, %814
  %874 = load ptr, ptr %24, align 8, !tbaa !5
  %875 = getelementptr inbounds i8, ptr %874, i64 3
  %876 = load i8, ptr %875, align 1, !tbaa !32
  %877 = zext i8 %876 to i32
  %878 = shl i32 %877, 24
  %879 = load i32, ptr %21, align 4, !tbaa !31
  %880 = add i32 %879, %878
  store i32 %880, ptr %21, align 4, !tbaa !31
  br label %881

881:                                              ; preds = %873, %814
  %882 = load ptr, ptr %24, align 8, !tbaa !5
  %883 = getelementptr inbounds i8, ptr %882, i64 2
  %884 = load i8, ptr %883, align 1, !tbaa !32
  %885 = zext i8 %884 to i32
  %886 = shl i32 %885, 16
  %887 = load i32, ptr %21, align 4, !tbaa !31
  %888 = add i32 %887, %886
  store i32 %888, ptr %21, align 4, !tbaa !31
  br label %889

889:                                              ; preds = %881, %814
  %890 = load ptr, ptr %24, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 1
  %892 = load i8, ptr %891, align 1, !tbaa !32
  %893 = zext i8 %892 to i32
  %894 = shl i32 %893, 8
  %895 = load i32, ptr %21, align 4, !tbaa !31
  %896 = add i32 %895, %894
  store i32 %896, ptr %21, align 4, !tbaa !31
  br label %897

897:                                              ; preds = %889, %814
  %898 = load ptr, ptr %24, align 8, !tbaa !5
  %899 = getelementptr inbounds i8, ptr %898, i64 0
  %900 = load i8, ptr %899, align 1, !tbaa !32
  %901 = zext i8 %900 to i32
  %902 = load i32, ptr %21, align 4, !tbaa !31
  %903 = add i32 %902, %901
  store i32 %903, ptr %21, align 4, !tbaa !31
  br label %904

904:                                              ; preds = %897, %814
  br label %905

905:                                              ; preds = %904
  %906 = load i32, ptr %22, align 4, !tbaa !31
  %907 = load i32, ptr %21, align 4, !tbaa !31
  %908 = sub i32 %907, %906
  store i32 %908, ptr %21, align 4, !tbaa !31
  %909 = load i32, ptr %20, align 4, !tbaa !31
  %910 = load i32, ptr %21, align 4, !tbaa !31
  %911 = sub i32 %910, %909
  store i32 %911, ptr %21, align 4, !tbaa !31
  %912 = load i32, ptr %20, align 4, !tbaa !31
  %913 = lshr i32 %912, 13
  %914 = load i32, ptr %21, align 4, !tbaa !31
  %915 = xor i32 %914, %913
  store i32 %915, ptr %21, align 4, !tbaa !31
  %916 = load i32, ptr %20, align 4, !tbaa !31
  %917 = load i32, ptr %22, align 4, !tbaa !31
  %918 = sub i32 %917, %916
  store i32 %918, ptr %22, align 4, !tbaa !31
  %919 = load i32, ptr %21, align 4, !tbaa !31
  %920 = load i32, ptr %22, align 4, !tbaa !31
  %921 = sub i32 %920, %919
  store i32 %921, ptr %22, align 4, !tbaa !31
  %922 = load i32, ptr %21, align 4, !tbaa !31
  %923 = shl i32 %922, 8
  %924 = load i32, ptr %22, align 4, !tbaa !31
  %925 = xor i32 %924, %923
  store i32 %925, ptr %22, align 4, !tbaa !31
  %926 = load i32, ptr %21, align 4, !tbaa !31
  %927 = load i32, ptr %20, align 4, !tbaa !31
  %928 = sub i32 %927, %926
  store i32 %928, ptr %20, align 4, !tbaa !31
  %929 = load i32, ptr %22, align 4, !tbaa !31
  %930 = load i32, ptr %20, align 4, !tbaa !31
  %931 = sub i32 %930, %929
  store i32 %931, ptr %20, align 4, !tbaa !31
  %932 = load i32, ptr %22, align 4, !tbaa !31
  %933 = lshr i32 %932, 13
  %934 = load i32, ptr %20, align 4, !tbaa !31
  %935 = xor i32 %934, %933
  store i32 %935, ptr %20, align 4, !tbaa !31
  %936 = load i32, ptr %22, align 4, !tbaa !31
  %937 = load i32, ptr %21, align 4, !tbaa !31
  %938 = sub i32 %937, %936
  store i32 %938, ptr %21, align 4, !tbaa !31
  %939 = load i32, ptr %20, align 4, !tbaa !31
  %940 = load i32, ptr %21, align 4, !tbaa !31
  %941 = sub i32 %940, %939
  store i32 %941, ptr %21, align 4, !tbaa !31
  %942 = load i32, ptr %20, align 4, !tbaa !31
  %943 = lshr i32 %942, 12
  %944 = load i32, ptr %21, align 4, !tbaa !31
  %945 = xor i32 %944, %943
  store i32 %945, ptr %21, align 4, !tbaa !31
  %946 = load i32, ptr %20, align 4, !tbaa !31
  %947 = load i32, ptr %22, align 4, !tbaa !31
  %948 = sub i32 %947, %946
  store i32 %948, ptr %22, align 4, !tbaa !31
  %949 = load i32, ptr %21, align 4, !tbaa !31
  %950 = load i32, ptr %22, align 4, !tbaa !31
  %951 = sub i32 %950, %949
  store i32 %951, ptr %22, align 4, !tbaa !31
  %952 = load i32, ptr %21, align 4, !tbaa !31
  %953 = shl i32 %952, 16
  %954 = load i32, ptr %22, align 4, !tbaa !31
  %955 = xor i32 %954, %953
  store i32 %955, ptr %22, align 4, !tbaa !31
  %956 = load i32, ptr %21, align 4, !tbaa !31
  %957 = load i32, ptr %20, align 4, !tbaa !31
  %958 = sub i32 %957, %956
  store i32 %958, ptr %20, align 4, !tbaa !31
  %959 = load i32, ptr %22, align 4, !tbaa !31
  %960 = load i32, ptr %20, align 4, !tbaa !31
  %961 = sub i32 %960, %959
  store i32 %961, ptr %20, align 4, !tbaa !31
  %962 = load i32, ptr %22, align 4, !tbaa !31
  %963 = lshr i32 %962, 5
  %964 = load i32, ptr %20, align 4, !tbaa !31
  %965 = xor i32 %964, %963
  store i32 %965, ptr %20, align 4, !tbaa !31
  %966 = load i32, ptr %22, align 4, !tbaa !31
  %967 = load i32, ptr %21, align 4, !tbaa !31
  %968 = sub i32 %967, %966
  store i32 %968, ptr %21, align 4, !tbaa !31
  %969 = load i32, ptr %20, align 4, !tbaa !31
  %970 = load i32, ptr %21, align 4, !tbaa !31
  %971 = sub i32 %970, %969
  store i32 %971, ptr %21, align 4, !tbaa !31
  %972 = load i32, ptr %20, align 4, !tbaa !31
  %973 = lshr i32 %972, 3
  %974 = load i32, ptr %21, align 4, !tbaa !31
  %975 = xor i32 %974, %973
  store i32 %975, ptr %21, align 4, !tbaa !31
  %976 = load i32, ptr %20, align 4, !tbaa !31
  %977 = load i32, ptr %22, align 4, !tbaa !31
  %978 = sub i32 %977, %976
  store i32 %978, ptr %22, align 4, !tbaa !31
  %979 = load i32, ptr %21, align 4, !tbaa !31
  %980 = load i32, ptr %22, align 4, !tbaa !31
  %981 = sub i32 %980, %979
  store i32 %981, ptr %22, align 4, !tbaa !31
  %982 = load i32, ptr %21, align 4, !tbaa !31
  %983 = shl i32 %982, 10
  %984 = load i32, ptr %22, align 4, !tbaa !31
  %985 = xor i32 %984, %983
  store i32 %985, ptr %22, align 4, !tbaa !31
  %986 = load i32, ptr %21, align 4, !tbaa !31
  %987 = load i32, ptr %20, align 4, !tbaa !31
  %988 = sub i32 %987, %986
  store i32 %988, ptr %20, align 4, !tbaa !31
  %989 = load i32, ptr %22, align 4, !tbaa !31
  %990 = load i32, ptr %20, align 4, !tbaa !31
  %991 = sub i32 %990, %989
  store i32 %991, ptr %20, align 4, !tbaa !31
  %992 = load i32, ptr %22, align 4, !tbaa !31
  %993 = lshr i32 %992, 15
  %994 = load i32, ptr %20, align 4, !tbaa !31
  %995 = xor i32 %994, %993
  store i32 %995, ptr %20, align 4, !tbaa !31
  br label %996

996:                                              ; preds = %905
  br label %997

997:                                              ; preds = %996
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %998

998:                                              ; preds = %997
  br label %999

999:                                              ; preds = %998
  br label %1000

1000:                                             ; preds = %999
  br label %1001

1001:                                             ; preds = %1000
  br label %1002

1002:                                             ; preds = %1001
  %1003 = load i32, ptr %20, align 4, !tbaa !31
  %1004 = load ptr, ptr %12, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.gpos_single_hash, ptr %1004, i32 0, i32 3
  %1006 = getelementptr inbounds %struct.UT_hash_handle, ptr %1005, i32 0, i32 7
  store i32 %1003, ptr %1006, align 4, !tbaa !44
  %1007 = load ptr, ptr %12, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.gpos_single_hash, ptr %1007, i32 0, i32 0
  %1009 = load ptr, ptr %12, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.gpos_single_hash, ptr %1009, i32 0, i32 3
  %1011 = getelementptr inbounds %struct.UT_hash_handle, ptr %1010, i32 0, i32 5
  store ptr %1008, ptr %1011, align 8, !tbaa !46
  %1012 = load ptr, ptr %12, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.gpos_single_hash, ptr %1012, i32 0, i32 3
  %1014 = getelementptr inbounds %struct.UT_hash_handle, ptr %1013, i32 0, i32 6
  store i32 4, ptr %1014, align 8, !tbaa !45
  %1015 = load ptr, ptr %10, align 8, !tbaa !5
  %1016 = icmp ne ptr %1015, null
  br i1 %1016, label %1099, label %1017

1017:                                             ; preds = %1002
  %1018 = load ptr, ptr %12, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.gpos_single_hash, ptr %1018, i32 0, i32 3
  %1020 = getelementptr inbounds %struct.UT_hash_handle, ptr %1019, i32 0, i32 2
  store ptr null, ptr %1020, align 8, !tbaa !54
  %1021 = load ptr, ptr %12, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.gpos_single_hash, ptr %1021, i32 0, i32 3
  %1023 = getelementptr inbounds %struct.UT_hash_handle, ptr %1022, i32 0, i32 1
  store ptr null, ptr %1023, align 8, !tbaa !55
  br label %1024

1024:                                             ; preds = %1017
  %1025 = call noalias ptr @malloc(i64 noundef 64) #12
  %1026 = load ptr, ptr %12, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.gpos_single_hash, ptr %1026, i32 0, i32 3
  %1028 = getelementptr inbounds %struct.UT_hash_handle, ptr %1027, i32 0, i32 0
  store ptr %1025, ptr %1028, align 8, !tbaa !35
  %1029 = load ptr, ptr %12, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.gpos_single_hash, ptr %1029, i32 0, i32 3
  %1031 = getelementptr inbounds %struct.UT_hash_handle, ptr %1030, i32 0, i32 0
  %1032 = load ptr, ptr %1031, align 8, !tbaa !35
  %1033 = icmp ne ptr %1032, null
  br i1 %1033, label %1035, label %1034

1034:                                             ; preds = %1024
  call void @exit(i32 noundef -1) #13
  unreachable

1035:                                             ; preds = %1024
  %1036 = load ptr, ptr %12, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.gpos_single_hash, ptr %1036, i32 0, i32 3
  %1038 = getelementptr inbounds %struct.UT_hash_handle, ptr %1037, i32 0, i32 0
  %1039 = load ptr, ptr %1038, align 8, !tbaa !35
  call void @llvm.memset.p0.i64(ptr align 8 %1039, i8 0, i64 64, i1 false)
  %1040 = load ptr, ptr %12, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.gpos_single_hash, ptr %1040, i32 0, i32 3
  %1042 = load ptr, ptr %12, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.gpos_single_hash, ptr %1042, i32 0, i32 3
  %1044 = getelementptr inbounds %struct.UT_hash_handle, ptr %1043, i32 0, i32 0
  %1045 = load ptr, ptr %1044, align 8, !tbaa !35
  %1046 = getelementptr inbounds %struct.UT_hash_table, ptr %1045, i32 0, i32 4
  store ptr %1041, ptr %1046, align 8, !tbaa !56
  %1047 = load ptr, ptr %12, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.gpos_single_hash, ptr %1047, i32 0, i32 3
  %1049 = getelementptr inbounds %struct.UT_hash_handle, ptr %1048, i32 0, i32 0
  %1050 = load ptr, ptr %1049, align 8, !tbaa !35
  %1051 = getelementptr inbounds %struct.UT_hash_table, ptr %1050, i32 0, i32 1
  store i32 32, ptr %1051, align 8, !tbaa !38
  %1052 = load ptr, ptr %12, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.gpos_single_hash, ptr %1052, i32 0, i32 3
  %1054 = getelementptr inbounds %struct.UT_hash_handle, ptr %1053, i32 0, i32 0
  %1055 = load ptr, ptr %1054, align 8, !tbaa !35
  %1056 = getelementptr inbounds %struct.UT_hash_table, ptr %1055, i32 0, i32 2
  store i32 5, ptr %1056, align 4, !tbaa !57
  %1057 = load ptr, ptr %12, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.gpos_single_hash, ptr %1057, i32 0, i32 3
  %1059 = load ptr, ptr %12, align 8, !tbaa !5
  %1060 = ptrtoint ptr %1058 to i64
  %1061 = ptrtoint ptr %1059 to i64
  %1062 = sub i64 %1060, %1061
  %1063 = load ptr, ptr %12, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.gpos_single_hash, ptr %1063, i32 0, i32 3
  %1065 = getelementptr inbounds %struct.UT_hash_handle, ptr %1064, i32 0, i32 0
  %1066 = load ptr, ptr %1065, align 8, !tbaa !35
  %1067 = getelementptr inbounds %struct.UT_hash_table, ptr %1066, i32 0, i32 5
  store i64 %1062, ptr %1067, align 8, !tbaa !43
  %1068 = call noalias ptr @malloc(i64 noundef 512) #12
  %1069 = load ptr, ptr %12, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.gpos_single_hash, ptr %1069, i32 0, i32 3
  %1071 = getelementptr inbounds %struct.UT_hash_handle, ptr %1070, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8, !tbaa !35
  %1073 = getelementptr inbounds %struct.UT_hash_table, ptr %1072, i32 0, i32 0
  store ptr %1068, ptr %1073, align 8, !tbaa !40
  %1074 = load ptr, ptr %12, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.gpos_single_hash, ptr %1074, i32 0, i32 3
  %1076 = getelementptr inbounds %struct.UT_hash_handle, ptr %1075, i32 0, i32 0
  %1077 = load ptr, ptr %1076, align 8, !tbaa !35
  %1078 = getelementptr inbounds %struct.UT_hash_table, ptr %1077, i32 0, i32 10
  store i32 -1609490463, ptr %1078, align 8, !tbaa !58
  %1079 = load ptr, ptr %12, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.gpos_single_hash, ptr %1079, i32 0, i32 3
  %1081 = getelementptr inbounds %struct.UT_hash_handle, ptr %1080, i32 0, i32 0
  %1082 = load ptr, ptr %1081, align 8, !tbaa !35
  %1083 = getelementptr inbounds %struct.UT_hash_table, ptr %1082, i32 0, i32 0
  %1084 = load ptr, ptr %1083, align 8, !tbaa !40
  %1085 = icmp ne ptr %1084, null
  br i1 %1085, label %1087, label %1086

1086:                                             ; preds = %1035
  call void @exit(i32 noundef -1) #13
  unreachable

1087:                                             ; preds = %1035
  %1088 = load ptr, ptr %12, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.gpos_single_hash, ptr %1088, i32 0, i32 3
  %1090 = getelementptr inbounds %struct.UT_hash_handle, ptr %1089, i32 0, i32 0
  %1091 = load ptr, ptr %1090, align 8, !tbaa !35
  %1092 = getelementptr inbounds %struct.UT_hash_table, ptr %1091, i32 0, i32 0
  %1093 = load ptr, ptr %1092, align 8, !tbaa !40
  call void @llvm.memset.p0.i64(ptr align 8 %1093, i8 0, i64 512, i1 false)
  br label %1094

1094:                                             ; preds = %1087
  br label %1095

1095:                                             ; preds = %1094
  br label %1096

1096:                                             ; preds = %1095
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1098, ptr %10, align 8, !tbaa !5
  br label %1145

1099:                                             ; preds = %1002
  %1100 = load ptr, ptr %10, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.gpos_single_hash, ptr %1100, i32 0, i32 3
  %1102 = getelementptr inbounds %struct.UT_hash_handle, ptr %1101, i32 0, i32 0
  %1103 = load ptr, ptr %1102, align 8, !tbaa !35
  %1104 = load ptr, ptr %12, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.gpos_single_hash, ptr %1104, i32 0, i32 3
  %1106 = getelementptr inbounds %struct.UT_hash_handle, ptr %1105, i32 0, i32 0
  store ptr %1103, ptr %1106, align 8, !tbaa !35
  br label %1107

1107:                                             ; preds = %1099
  %1108 = load ptr, ptr %12, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.gpos_single_hash, ptr %1108, i32 0, i32 3
  %1110 = getelementptr inbounds %struct.UT_hash_handle, ptr %1109, i32 0, i32 2
  store ptr null, ptr %1110, align 8, !tbaa !54
  %1111 = load ptr, ptr %10, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.gpos_single_hash, ptr %1111, i32 0, i32 3
  %1113 = getelementptr inbounds %struct.UT_hash_handle, ptr %1112, i32 0, i32 0
  %1114 = load ptr, ptr %1113, align 8, !tbaa !35
  %1115 = getelementptr inbounds %struct.UT_hash_table, ptr %1114, i32 0, i32 4
  %1116 = load ptr, ptr %1115, align 8, !tbaa !56
  %1117 = load ptr, ptr %10, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.gpos_single_hash, ptr %1117, i32 0, i32 3
  %1119 = getelementptr inbounds %struct.UT_hash_handle, ptr %1118, i32 0, i32 0
  %1120 = load ptr, ptr %1119, align 8, !tbaa !35
  %1121 = getelementptr inbounds %struct.UT_hash_table, ptr %1120, i32 0, i32 5
  %1122 = load i64, ptr %1121, align 8, !tbaa !43
  %1123 = sub i64 0, %1122
  %1124 = getelementptr inbounds i8, ptr %1116, i64 %1123
  %1125 = load ptr, ptr %12, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.gpos_single_hash, ptr %1125, i32 0, i32 3
  %1127 = getelementptr inbounds %struct.UT_hash_handle, ptr %1126, i32 0, i32 1
  store ptr %1124, ptr %1127, align 8, !tbaa !55
  %1128 = load ptr, ptr %12, align 8, !tbaa !5
  %1129 = load ptr, ptr %10, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.gpos_single_hash, ptr %1129, i32 0, i32 3
  %1131 = getelementptr inbounds %struct.UT_hash_handle, ptr %1130, i32 0, i32 0
  %1132 = load ptr, ptr %1131, align 8, !tbaa !35
  %1133 = getelementptr inbounds %struct.UT_hash_table, ptr %1132, i32 0, i32 4
  %1134 = load ptr, ptr %1133, align 8, !tbaa !56
  %1135 = getelementptr inbounds %struct.UT_hash_handle, ptr %1134, i32 0, i32 2
  store ptr %1128, ptr %1135, align 8, !tbaa !59
  %1136 = load ptr, ptr %12, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.gpos_single_hash, ptr %1136, i32 0, i32 3
  %1138 = load ptr, ptr %10, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.gpos_single_hash, ptr %1138, i32 0, i32 3
  %1140 = getelementptr inbounds %struct.UT_hash_handle, ptr %1139, i32 0, i32 0
  %1141 = load ptr, ptr %1140, align 8, !tbaa !35
  %1142 = getelementptr inbounds %struct.UT_hash_table, ptr %1141, i32 0, i32 4
  store ptr %1137, ptr %1142, align 8, !tbaa !56
  br label %1143

1143:                                             ; preds = %1107
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %1097
  br label %1146

1146:                                             ; preds = %1145
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.gpos_single_hash, ptr %1147, i32 0, i32 3
  %1149 = getelementptr inbounds %struct.UT_hash_handle, ptr %1148, i32 0, i32 0
  %1150 = load ptr, ptr %1149, align 8, !tbaa !35
  %1151 = getelementptr inbounds %struct.UT_hash_table, ptr %1150, i32 0, i32 3
  %1152 = load i32, ptr %1151, align 8, !tbaa !60
  %1153 = add i32 %1152, 1
  store i32 %1153, ptr %1151, align 8, !tbaa !60
  br label %1154

1154:                                             ; preds = %1146
  %1155 = load i32, ptr %20, align 4, !tbaa !31
  %1156 = load ptr, ptr %10, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.gpos_single_hash, ptr %1156, i32 0, i32 3
  %1158 = getelementptr inbounds %struct.UT_hash_handle, ptr %1157, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8, !tbaa !35
  %1160 = getelementptr inbounds %struct.UT_hash_table, ptr %1159, i32 0, i32 1
  %1161 = load i32, ptr %1160, align 8, !tbaa !38
  %1162 = sub i32 %1161, 1
  %1163 = and i32 %1155, %1162
  store i32 %1163, ptr %25, align 4, !tbaa !31
  br label %1164

1164:                                             ; preds = %1154
  br label %1165

1165:                                             ; preds = %1164
  br label %1166

1166:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %1167 = load ptr, ptr %10, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.gpos_single_hash, ptr %1167, i32 0, i32 3
  %1169 = getelementptr inbounds %struct.UT_hash_handle, ptr %1168, i32 0, i32 0
  %1170 = load ptr, ptr %1169, align 8, !tbaa !35
  %1171 = getelementptr inbounds %struct.UT_hash_table, ptr %1170, i32 0, i32 0
  %1172 = load ptr, ptr %1171, align 8, !tbaa !40
  %1173 = load i32, ptr %25, align 4, !tbaa !31
  %1174 = zext i32 %1173 to i64
  %1175 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1172, i64 %1174
  store ptr %1175, ptr %26, align 8, !tbaa !5
  %1176 = load ptr, ptr %26, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1176, i32 0, i32 1
  %1178 = load i32, ptr %1177, align 8, !tbaa !61
  %1179 = add i32 %1178, 1
  store i32 %1179, ptr %1177, align 8, !tbaa !61
  %1180 = load ptr, ptr %26, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1180, i32 0, i32 0
  %1182 = load ptr, ptr %1181, align 8, !tbaa !41
  %1183 = load ptr, ptr %12, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.gpos_single_hash, ptr %1183, i32 0, i32 3
  %1185 = getelementptr inbounds %struct.UT_hash_handle, ptr %1184, i32 0, i32 4
  store ptr %1182, ptr %1185, align 8, !tbaa !47
  %1186 = load ptr, ptr %12, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.gpos_single_hash, ptr %1186, i32 0, i32 3
  %1188 = getelementptr inbounds %struct.UT_hash_handle, ptr %1187, i32 0, i32 3
  store ptr null, ptr %1188, align 8, !tbaa !62
  %1189 = load ptr, ptr %26, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1189, i32 0, i32 0
  %1191 = load ptr, ptr %1190, align 8, !tbaa !41
  %1192 = icmp ne ptr %1191, null
  br i1 %1192, label %1193, label %1200

1193:                                             ; preds = %1166
  %1194 = load ptr, ptr %12, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.gpos_single_hash, ptr %1194, i32 0, i32 3
  %1196 = load ptr, ptr %26, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1196, i32 0, i32 0
  %1198 = load ptr, ptr %1197, align 8, !tbaa !41
  %1199 = getelementptr inbounds %struct.UT_hash_handle, ptr %1198, i32 0, i32 3
  store ptr %1195, ptr %1199, align 8, !tbaa !63
  br label %1200

1200:                                             ; preds = %1193, %1166
  %1201 = load ptr, ptr %12, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.gpos_single_hash, ptr %1201, i32 0, i32 3
  %1203 = load ptr, ptr %26, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1203, i32 0, i32 0
  store ptr %1202, ptr %1204, align 8, !tbaa !41
  %1205 = load ptr, ptr %26, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1205, i32 0, i32 1
  %1207 = load i32, ptr %1206, align 8, !tbaa !61
  %1208 = load ptr, ptr %26, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1208, i32 0, i32 2
  %1210 = load i32, ptr %1209, align 4, !tbaa !64
  %1211 = add i32 %1210, 1
  %1212 = mul i32 %1211, 10
  %1213 = icmp uge i32 %1207, %1212
  br i1 %1213, label %1214, label %1470

1214:                                             ; preds = %1200
  %1215 = load ptr, ptr %12, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.gpos_single_hash, ptr %1215, i32 0, i32 3
  %1217 = getelementptr inbounds %struct.UT_hash_handle, ptr %1216, i32 0, i32 0
  %1218 = load ptr, ptr %1217, align 8, !tbaa !35
  %1219 = getelementptr inbounds %struct.UT_hash_table, ptr %1218, i32 0, i32 9
  %1220 = load i32, ptr %1219, align 4, !tbaa !65
  %1221 = icmp ne i32 %1220, 0
  br i1 %1221, label %1470, label %1222

1222:                                             ; preds = %1214
  br label %1223

1223:                                             ; preds = %1222
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %1224 = load ptr, ptr %12, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.gpos_single_hash, ptr %1224, i32 0, i32 3
  %1226 = getelementptr inbounds %struct.UT_hash_handle, ptr %1225, i32 0, i32 0
  %1227 = load ptr, ptr %1226, align 8, !tbaa !35
  %1228 = getelementptr inbounds %struct.UT_hash_table, ptr %1227, i32 0, i32 1
  %1229 = load i32, ptr %1228, align 8, !tbaa !38
  %1230 = zext i32 %1229 to i64
  %1231 = mul i64 2, %1230
  %1232 = mul i64 %1231, 16
  %1233 = call noalias ptr @malloc(i64 noundef %1232) #12
  store ptr %1233, ptr %31, align 8, !tbaa !5
  %1234 = load ptr, ptr %31, align 8, !tbaa !5
  %1235 = icmp ne ptr %1234, null
  br i1 %1235, label %1237, label %1236

1236:                                             ; preds = %1223
  call void @exit(i32 noundef -1) #13
  unreachable

1237:                                             ; preds = %1223
  %1238 = load ptr, ptr %31, align 8, !tbaa !5
  %1239 = load ptr, ptr %12, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.gpos_single_hash, ptr %1239, i32 0, i32 3
  %1241 = getelementptr inbounds %struct.UT_hash_handle, ptr %1240, i32 0, i32 0
  %1242 = load ptr, ptr %1241, align 8, !tbaa !35
  %1243 = getelementptr inbounds %struct.UT_hash_table, ptr %1242, i32 0, i32 1
  %1244 = load i32, ptr %1243, align 8, !tbaa !38
  %1245 = zext i32 %1244 to i64
  %1246 = mul i64 2, %1245
  %1247 = mul i64 %1246, 16
  call void @llvm.memset.p0.i64(ptr align 8 %1238, i8 0, i64 %1247, i1 false)
  %1248 = load ptr, ptr %12, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.gpos_single_hash, ptr %1248, i32 0, i32 3
  %1250 = getelementptr inbounds %struct.UT_hash_handle, ptr %1249, i32 0, i32 0
  %1251 = load ptr, ptr %1250, align 8, !tbaa !35
  %1252 = getelementptr inbounds %struct.UT_hash_table, ptr %1251, i32 0, i32 3
  %1253 = load i32, ptr %1252, align 8, !tbaa !60
  %1254 = load ptr, ptr %12, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.gpos_single_hash, ptr %1254, i32 0, i32 3
  %1256 = getelementptr inbounds %struct.UT_hash_handle, ptr %1255, i32 0, i32 0
  %1257 = load ptr, ptr %1256, align 8, !tbaa !35
  %1258 = getelementptr inbounds %struct.UT_hash_table, ptr %1257, i32 0, i32 2
  %1259 = load i32, ptr %1258, align 4, !tbaa !57
  %1260 = add i32 %1259, 1
  %1261 = lshr i32 %1253, %1260
  %1262 = load ptr, ptr %12, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.gpos_single_hash, ptr %1262, i32 0, i32 3
  %1264 = getelementptr inbounds %struct.UT_hash_handle, ptr %1263, i32 0, i32 0
  %1265 = load ptr, ptr %1264, align 8, !tbaa !35
  %1266 = getelementptr inbounds %struct.UT_hash_table, ptr %1265, i32 0, i32 3
  %1267 = load i32, ptr %1266, align 8, !tbaa !60
  %1268 = load ptr, ptr %12, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.gpos_single_hash, ptr %1268, i32 0, i32 3
  %1270 = getelementptr inbounds %struct.UT_hash_handle, ptr %1269, i32 0, i32 0
  %1271 = load ptr, ptr %1270, align 8, !tbaa !35
  %1272 = getelementptr inbounds %struct.UT_hash_table, ptr %1271, i32 0, i32 1
  %1273 = load i32, ptr %1272, align 8, !tbaa !38
  %1274 = mul i32 %1273, 2
  %1275 = sub i32 %1274, 1
  %1276 = and i32 %1267, %1275
  %1277 = icmp ne i32 %1276, 0
  %1278 = zext i1 %1277 to i64
  %1279 = select i1 %1277, i32 1, i32 0
  %1280 = add i32 %1261, %1279
  %1281 = load ptr, ptr %12, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.gpos_single_hash, ptr %1281, i32 0, i32 3
  %1283 = getelementptr inbounds %struct.UT_hash_handle, ptr %1282, i32 0, i32 0
  %1284 = load ptr, ptr %1283, align 8, !tbaa !35
  %1285 = getelementptr inbounds %struct.UT_hash_table, ptr %1284, i32 0, i32 6
  store i32 %1280, ptr %1285, align 8, !tbaa !66
  %1286 = load ptr, ptr %12, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.gpos_single_hash, ptr %1286, i32 0, i32 3
  %1288 = getelementptr inbounds %struct.UT_hash_handle, ptr %1287, i32 0, i32 0
  %1289 = load ptr, ptr %1288, align 8, !tbaa !35
  %1290 = getelementptr inbounds %struct.UT_hash_table, ptr %1289, i32 0, i32 7
  store i32 0, ptr %1290, align 4, !tbaa !67
  store i32 0, ptr %28, align 4, !tbaa !31
  br label %1291

1291:                                             ; preds = %1393, %1237
  %1292 = load i32, ptr %28, align 4, !tbaa !31
  %1293 = load ptr, ptr %12, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.gpos_single_hash, ptr %1293, i32 0, i32 3
  %1295 = getelementptr inbounds %struct.UT_hash_handle, ptr %1294, i32 0, i32 0
  %1296 = load ptr, ptr %1295, align 8, !tbaa !35
  %1297 = getelementptr inbounds %struct.UT_hash_table, ptr %1296, i32 0, i32 1
  %1298 = load i32, ptr %1297, align 8, !tbaa !38
  %1299 = icmp ult i32 %1292, %1298
  br i1 %1299, label %1300, label %1396

1300:                                             ; preds = %1291
  %1301 = load ptr, ptr %12, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.gpos_single_hash, ptr %1301, i32 0, i32 3
  %1303 = getelementptr inbounds %struct.UT_hash_handle, ptr %1302, i32 0, i32 0
  %1304 = load ptr, ptr %1303, align 8, !tbaa !35
  %1305 = getelementptr inbounds %struct.UT_hash_table, ptr %1304, i32 0, i32 0
  %1306 = load ptr, ptr %1305, align 8, !tbaa !40
  %1307 = load i32, ptr %28, align 4, !tbaa !31
  %1308 = zext i32 %1307 to i64
  %1309 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1306, i64 %1308
  %1310 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1309, i32 0, i32 0
  %1311 = load ptr, ptr %1310, align 8, !tbaa !41
  store ptr %1311, ptr %29, align 8, !tbaa !5
  br label %1312

1312:                                             ; preds = %1387, %1300
  %1313 = load ptr, ptr %29, align 8, !tbaa !5
  %1314 = icmp ne ptr %1313, null
  br i1 %1314, label %1315, label %1392

1315:                                             ; preds = %1312
  %1316 = load ptr, ptr %29, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.UT_hash_handle, ptr %1316, i32 0, i32 4
  %1318 = load ptr, ptr %1317, align 8, !tbaa !68
  store ptr %1318, ptr %30, align 8, !tbaa !5
  br label %1319

1319:                                             ; preds = %1315
  %1320 = load ptr, ptr %29, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.UT_hash_handle, ptr %1320, i32 0, i32 7
  %1322 = load i32, ptr %1321, align 4, !tbaa !69
  %1323 = load ptr, ptr %12, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.gpos_single_hash, ptr %1323, i32 0, i32 3
  %1325 = getelementptr inbounds %struct.UT_hash_handle, ptr %1324, i32 0, i32 0
  %1326 = load ptr, ptr %1325, align 8, !tbaa !35
  %1327 = getelementptr inbounds %struct.UT_hash_table, ptr %1326, i32 0, i32 1
  %1328 = load i32, ptr %1327, align 8, !tbaa !38
  %1329 = mul i32 %1328, 2
  %1330 = sub i32 %1329, 1
  %1331 = and i32 %1322, %1330
  store i32 %1331, ptr %27, align 4, !tbaa !31
  br label %1332

1332:                                             ; preds = %1319
  br label %1333

1333:                                             ; preds = %1332
  %1334 = load ptr, ptr %31, align 8, !tbaa !5
  %1335 = load i32, ptr %27, align 4, !tbaa !31
  %1336 = zext i32 %1335 to i64
  %1337 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1334, i64 %1336
  store ptr %1337, ptr %32, align 8, !tbaa !5
  %1338 = load ptr, ptr %32, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1338, i32 0, i32 1
  %1340 = load i32, ptr %1339, align 8, !tbaa !61
  %1341 = add i32 %1340, 1
  store i32 %1341, ptr %1339, align 8, !tbaa !61
  %1342 = load ptr, ptr %12, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.gpos_single_hash, ptr %1342, i32 0, i32 3
  %1344 = getelementptr inbounds %struct.UT_hash_handle, ptr %1343, i32 0, i32 0
  %1345 = load ptr, ptr %1344, align 8, !tbaa !35
  %1346 = getelementptr inbounds %struct.UT_hash_table, ptr %1345, i32 0, i32 6
  %1347 = load i32, ptr %1346, align 8, !tbaa !66
  %1348 = icmp ugt i32 %1341, %1347
  br i1 %1348, label %1349, label %1369

1349:                                             ; preds = %1333
  %1350 = load ptr, ptr %12, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.gpos_single_hash, ptr %1350, i32 0, i32 3
  %1352 = getelementptr inbounds %struct.UT_hash_handle, ptr %1351, i32 0, i32 0
  %1353 = load ptr, ptr %1352, align 8, !tbaa !35
  %1354 = getelementptr inbounds %struct.UT_hash_table, ptr %1353, i32 0, i32 7
  %1355 = load i32, ptr %1354, align 4, !tbaa !67
  %1356 = add i32 %1355, 1
  store i32 %1356, ptr %1354, align 4, !tbaa !67
  %1357 = load ptr, ptr %32, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1357, i32 0, i32 1
  %1359 = load i32, ptr %1358, align 8, !tbaa !61
  %1360 = load ptr, ptr %12, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.gpos_single_hash, ptr %1360, i32 0, i32 3
  %1362 = getelementptr inbounds %struct.UT_hash_handle, ptr %1361, i32 0, i32 0
  %1363 = load ptr, ptr %1362, align 8, !tbaa !35
  %1364 = getelementptr inbounds %struct.UT_hash_table, ptr %1363, i32 0, i32 6
  %1365 = load i32, ptr %1364, align 8, !tbaa !66
  %1366 = udiv i32 %1359, %1365
  %1367 = load ptr, ptr %32, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1367, i32 0, i32 2
  store i32 %1366, ptr %1368, align 4, !tbaa !64
  br label %1369

1369:                                             ; preds = %1349, %1333
  %1370 = load ptr, ptr %29, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.UT_hash_handle, ptr %1370, i32 0, i32 3
  store ptr null, ptr %1371, align 8, !tbaa !63
  %1372 = load ptr, ptr %32, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1372, i32 0, i32 0
  %1374 = load ptr, ptr %1373, align 8, !tbaa !41
  %1375 = load ptr, ptr %29, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.UT_hash_handle, ptr %1375, i32 0, i32 4
  store ptr %1374, ptr %1376, align 8, !tbaa !68
  %1377 = load ptr, ptr %32, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1377, i32 0, i32 0
  %1379 = load ptr, ptr %1378, align 8, !tbaa !41
  %1380 = icmp ne ptr %1379, null
  br i1 %1380, label %1381, label %1387

1381:                                             ; preds = %1369
  %1382 = load ptr, ptr %29, align 8, !tbaa !5
  %1383 = load ptr, ptr %32, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1383, i32 0, i32 0
  %1385 = load ptr, ptr %1384, align 8, !tbaa !41
  %1386 = getelementptr inbounds %struct.UT_hash_handle, ptr %1385, i32 0, i32 3
  store ptr %1382, ptr %1386, align 8, !tbaa !63
  br label %1387

1387:                                             ; preds = %1381, %1369
  %1388 = load ptr, ptr %29, align 8, !tbaa !5
  %1389 = load ptr, ptr %32, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1389, i32 0, i32 0
  store ptr %1388, ptr %1390, align 8, !tbaa !41
  %1391 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1391, ptr %29, align 8, !tbaa !5
  br label %1312, !llvm.loop !70

1392:                                             ; preds = %1312
  br label %1393

1393:                                             ; preds = %1392
  %1394 = load i32, ptr %28, align 4, !tbaa !31
  %1395 = add i32 %1394, 1
  store i32 %1395, ptr %28, align 4, !tbaa !31
  br label %1291, !llvm.loop !71

1396:                                             ; preds = %1291
  %1397 = load ptr, ptr %12, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.gpos_single_hash, ptr %1397, i32 0, i32 3
  %1399 = getelementptr inbounds %struct.UT_hash_handle, ptr %1398, i32 0, i32 0
  %1400 = load ptr, ptr %1399, align 8, !tbaa !35
  %1401 = getelementptr inbounds %struct.UT_hash_table, ptr %1400, i32 0, i32 0
  %1402 = load ptr, ptr %1401, align 8, !tbaa !40
  call void @free(ptr noundef %1402) #10
  %1403 = load ptr, ptr %12, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.gpos_single_hash, ptr %1403, i32 0, i32 3
  %1405 = getelementptr inbounds %struct.UT_hash_handle, ptr %1404, i32 0, i32 0
  %1406 = load ptr, ptr %1405, align 8, !tbaa !35
  %1407 = getelementptr inbounds %struct.UT_hash_table, ptr %1406, i32 0, i32 1
  %1408 = load i32, ptr %1407, align 8, !tbaa !38
  %1409 = mul i32 %1408, 2
  store i32 %1409, ptr %1407, align 8, !tbaa !38
  %1410 = load ptr, ptr %12, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.gpos_single_hash, ptr %1410, i32 0, i32 3
  %1412 = getelementptr inbounds %struct.UT_hash_handle, ptr %1411, i32 0, i32 0
  %1413 = load ptr, ptr %1412, align 8, !tbaa !35
  %1414 = getelementptr inbounds %struct.UT_hash_table, ptr %1413, i32 0, i32 2
  %1415 = load i32, ptr %1414, align 4, !tbaa !57
  %1416 = add i32 %1415, 1
  store i32 %1416, ptr %1414, align 4, !tbaa !57
  %1417 = load ptr, ptr %31, align 8, !tbaa !5
  %1418 = load ptr, ptr %12, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.gpos_single_hash, ptr %1418, i32 0, i32 3
  %1420 = getelementptr inbounds %struct.UT_hash_handle, ptr %1419, i32 0, i32 0
  %1421 = load ptr, ptr %1420, align 8, !tbaa !35
  %1422 = getelementptr inbounds %struct.UT_hash_table, ptr %1421, i32 0, i32 0
  store ptr %1417, ptr %1422, align 8, !tbaa !40
  %1423 = load ptr, ptr %12, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.gpos_single_hash, ptr %1423, i32 0, i32 3
  %1425 = getelementptr inbounds %struct.UT_hash_handle, ptr %1424, i32 0, i32 0
  %1426 = load ptr, ptr %1425, align 8, !tbaa !35
  %1427 = getelementptr inbounds %struct.UT_hash_table, ptr %1426, i32 0, i32 7
  %1428 = load i32, ptr %1427, align 4, !tbaa !67
  %1429 = load ptr, ptr %12, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.gpos_single_hash, ptr %1429, i32 0, i32 3
  %1431 = getelementptr inbounds %struct.UT_hash_handle, ptr %1430, i32 0, i32 0
  %1432 = load ptr, ptr %1431, align 8, !tbaa !35
  %1433 = getelementptr inbounds %struct.UT_hash_table, ptr %1432, i32 0, i32 3
  %1434 = load i32, ptr %1433, align 8, !tbaa !60
  %1435 = lshr i32 %1434, 1
  %1436 = icmp ugt i32 %1428, %1435
  br i1 %1436, label %1437, label %1445

1437:                                             ; preds = %1396
  %1438 = load ptr, ptr %12, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.gpos_single_hash, ptr %1438, i32 0, i32 3
  %1440 = getelementptr inbounds %struct.UT_hash_handle, ptr %1439, i32 0, i32 0
  %1441 = load ptr, ptr %1440, align 8, !tbaa !35
  %1442 = getelementptr inbounds %struct.UT_hash_table, ptr %1441, i32 0, i32 8
  %1443 = load i32, ptr %1442, align 8, !tbaa !72
  %1444 = add i32 %1443, 1
  br label %1446

1445:                                             ; preds = %1396
  br label %1446

1446:                                             ; preds = %1445, %1437
  %1447 = phi i32 [ %1444, %1437 ], [ 0, %1445 ]
  %1448 = load ptr, ptr %12, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.gpos_single_hash, ptr %1448, i32 0, i32 3
  %1450 = getelementptr inbounds %struct.UT_hash_handle, ptr %1449, i32 0, i32 0
  %1451 = load ptr, ptr %1450, align 8, !tbaa !35
  %1452 = getelementptr inbounds %struct.UT_hash_table, ptr %1451, i32 0, i32 8
  store i32 %1447, ptr %1452, align 8, !tbaa !72
  %1453 = load ptr, ptr %12, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.gpos_single_hash, ptr %1453, i32 0, i32 3
  %1455 = getelementptr inbounds %struct.UT_hash_handle, ptr %1454, i32 0, i32 0
  %1456 = load ptr, ptr %1455, align 8, !tbaa !35
  %1457 = getelementptr inbounds %struct.UT_hash_table, ptr %1456, i32 0, i32 8
  %1458 = load i32, ptr %1457, align 8, !tbaa !72
  %1459 = icmp ugt i32 %1458, 1
  br i1 %1459, label %1460, label %1466

1460:                                             ; preds = %1446
  %1461 = load ptr, ptr %12, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.gpos_single_hash, ptr %1461, i32 0, i32 3
  %1463 = getelementptr inbounds %struct.UT_hash_handle, ptr %1462, i32 0, i32 0
  %1464 = load ptr, ptr %1463, align 8, !tbaa !35
  %1465 = getelementptr inbounds %struct.UT_hash_table, ptr %1464, i32 0, i32 9
  store i32 1, ptr %1465, align 4, !tbaa !65
  br label %1466

1466:                                             ; preds = %1460, %1446
  br label %1467

1467:                                             ; preds = %1466
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1468
  br label %1470

1470:                                             ; preds = %1469, %1214, %1200
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %1473

1473:                                             ; preds = %1472
  br label %1474

1474:                                             ; preds = %1473
  br label %1475

1475:                                             ; preds = %1474
  br label %1476

1476:                                             ; preds = %1475
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  br label %1477

1477:                                             ; preds = %1476
  br label %1478

1478:                                             ; preds = %1477
  br label %1479

1479:                                             ; preds = %1478, %581
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  br label %1480

1480:                                             ; preds = %1479, %72
  %1481 = load i16, ptr %11, align 2, !tbaa !9
  %1482 = add i16 %1481, 1
  store i16 %1482, ptr %11, align 2, !tbaa !9
  br label %51, !llvm.loop !73

1483:                                             ; preds = %58
  br label %1484

1484:                                             ; preds = %1483
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %1485 = load ptr, ptr %10, align 8, !tbaa !5
  %1486 = icmp ne ptr %1485, null
  br i1 %1486, label %1487, label %1757

1487:                                             ; preds = %1484
  store i32 1, ptr %36, align 4, !tbaa !31
  store i32 1, ptr %34, align 4, !tbaa !31
  %1488 = load ptr, ptr %10, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.gpos_single_hash, ptr %1488, i32 0, i32 3
  store ptr %1489, ptr %42, align 8, !tbaa !5
  br label %1490

1490:                                             ; preds = %1753, %1487
  %1491 = load i32, ptr %34, align 4, !tbaa !31
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1493, label %1756

1493:                                             ; preds = %1490
  %1494 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1494, ptr %39, align 8, !tbaa !5
  store ptr null, ptr %42, align 8, !tbaa !5
  store ptr null, ptr %43, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !31
  br label %1495

1495:                                             ; preds = %1723, %1493
  %1496 = load ptr, ptr %39, align 8, !tbaa !5
  %1497 = icmp ne ptr %1496, null
  br i1 %1497, label %1498, label %1725

1498:                                             ; preds = %1495
  %1499 = load i32, ptr %35, align 4, !tbaa !31
  %1500 = add i32 %1499, 1
  store i32 %1500, ptr %35, align 4, !tbaa !31
  %1501 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1501, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %37, align 4, !tbaa !31
  store i32 0, ptr %33, align 4, !tbaa !31
  br label %1502

1502:                                             ; preds = %1531, %1498
  %1503 = load i32, ptr %33, align 4, !tbaa !31
  %1504 = load i32, ptr %36, align 4, !tbaa !31
  %1505 = icmp ult i32 %1503, %1504
  br i1 %1505, label %1506, label %1534

1506:                                             ; preds = %1502
  %1507 = load i32, ptr %37, align 4, !tbaa !31
  %1508 = add i32 %1507, 1
  store i32 %1508, ptr %37, align 4, !tbaa !31
  %1509 = load ptr, ptr %40, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.UT_hash_handle, ptr %1509, i32 0, i32 2
  %1511 = load ptr, ptr %1510, align 8, !tbaa !59
  %1512 = icmp ne ptr %1511, null
  br i1 %1512, label %1513, label %1524

1513:                                             ; preds = %1506
  %1514 = load ptr, ptr %40, 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 !59
  %1517 = load ptr, ptr %10, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.gpos_single_hash, ptr %1517, i32 0, i32 3
  %1519 = getelementptr inbounds %struct.UT_hash_handle, ptr %1518, i32 0, i32 0
  %1520 = load ptr, ptr %1519, align 8, !tbaa !35
  %1521 = getelementptr inbounds %struct.UT_hash_table, ptr %1520, i32 0, i32 5
  %1522 = load i64, ptr %1521, align 8, !tbaa !43
  %1523 = getelementptr inbounds i8, ptr %1516, i64 %1522
  br label %1525

1524:                                             ; preds = %1506
  br label %1525

1525:                                             ; preds = %1524, %1513
  %1526 = phi ptr [ %1523, %1513 ], [ null, %1524 ]
  store ptr %1526, ptr %40, align 8, !tbaa !5
  %1527 = load ptr, ptr %40, align 8, !tbaa !5
  %1528 = icmp eq ptr %1527, null
  br i1 %1528, label %1529, label %1530

1529:                                             ; preds = %1525
  br label %1534

1530:                                             ; preds = %1525
  br label %1531

1531:                                             ; preds = %1530
  %1532 = load i32, ptr %33, align 4, !tbaa !31
  %1533 = add i32 %1532, 1
  store i32 %1533, ptr %33, align 4, !tbaa !31
  br label %1502, !llvm.loop !74

1534:                                             ; preds = %1529, %1502
  %1535 = load i32, ptr %36, align 4, !tbaa !31
  store i32 %1535, ptr %38, align 4, !tbaa !31
  br label %1536

1536:                                             ; preds = %1721, %1534
  %1537 = load i32, ptr %37, align 4, !tbaa !31
  %1538 = icmp ne i32 %1537, 0
  br i1 %1538, label %1547, label %1539

1539:                                             ; preds = %1536
  %1540 = load i32, ptr %38, align 4, !tbaa !31
  %1541 = icmp ne i32 %1540, 0
  br i1 %1541, label %1542, label %1545

1542:                                             ; preds = %1539
  %1543 = load ptr, ptr %40, align 8, !tbaa !5
  %1544 = icmp ne ptr %1543, null
  br label %1545

1545:                                             ; preds = %1542, %1539
  %1546 = phi i1 [ false, %1539 ], [ %1544, %1542 ]
  br label %1547

1547:                                             ; preds = %1545, %1536
  %1548 = phi i1 [ true, %1536 ], [ %1546, %1545 ]
  br i1 %1548, label %1549, label %1723

1549:                                             ; preds = %1547
  %1550 = load i32, ptr %37, align 4, !tbaa !31
  %1551 = icmp eq i32 %1550, 0
  br i1 %1551, label %1552, label %1574

1552:                                             ; preds = %1549
  %1553 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1553, ptr %41, align 8, !tbaa !5
  %1554 = load ptr, ptr %40, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.UT_hash_handle, ptr %1554, i32 0, i32 2
  %1556 = load ptr, ptr %1555, align 8, !tbaa !59
  %1557 = icmp ne ptr %1556, null
  br i1 %1557, label %1558, label %1569

1558:                                             ; preds = %1552
  %1559 = load ptr, ptr %40, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.UT_hash_handle, ptr %1559, i32 0, i32 2
  %1561 = load ptr, ptr %1560, align 8, !tbaa !59
  %1562 = load ptr, ptr %10, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.gpos_single_hash, ptr %1562, i32 0, i32 3
  %1564 = getelementptr inbounds %struct.UT_hash_handle, ptr %1563, i32 0, i32 0
  %1565 = load ptr, ptr %1564, align 8, !tbaa !35
  %1566 = getelementptr inbounds %struct.UT_hash_table, ptr %1565, i32 0, i32 5
  %1567 = load i64, ptr %1566, align 8, !tbaa !43
  %1568 = getelementptr inbounds i8, ptr %1561, i64 %1567
  br label %1570

1569:                                             ; preds = %1552
  br label %1570

1570:                                             ; preds = %1569, %1558
  %1571 = phi ptr [ %1568, %1558 ], [ null, %1569 ]
  store ptr %1571, ptr %40, align 8, !tbaa !5
  %1572 = load i32, ptr %38, align 4, !tbaa !31
  %1573 = add i32 %1572, -1
  store i32 %1573, ptr %38, align 4, !tbaa !31
  br label %1677

1574:                                             ; preds = %1549
  %1575 = load i32, ptr %38, align 4, !tbaa !31
  %1576 = icmp eq i32 %1575, 0
  br i1 %1576, label %1580, label %1577

1577:                                             ; preds = %1574
  %1578 = load ptr, ptr %40, align 8, !tbaa !5
  %1579 = icmp eq ptr %1578, null
  br i1 %1579, label %1580, label %1606

1580:                                             ; preds = %1577, %1574
  %1581 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1581, ptr %41, align 8, !tbaa !5
  %1582 = load ptr, ptr %39, align 8, !tbaa !5
  %1583 = icmp ne ptr %1582, null
  br i1 %1583, label %1584, label %1603

1584:                                             ; preds = %1580
  %1585 = load ptr, ptr %39, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.UT_hash_handle, ptr %1585, i32 0, i32 2
  %1587 = load ptr, ptr %1586, align 8, !tbaa !59
  %1588 = icmp ne ptr %1587, null
  br i1 %1588, label %1589, label %1600

1589:                                             ; preds = %1584
  %1590 = load ptr, ptr %39, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.UT_hash_handle, ptr %1590, i32 0, i32 2
  %1592 = load ptr, ptr %1591, align 8, !tbaa !59
  %1593 = load ptr, ptr %10, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.gpos_single_hash, ptr %1593, i32 0, i32 3
  %1595 = getelementptr inbounds %struct.UT_hash_handle, ptr %1594, i32 0, i32 0
  %1596 = load ptr, ptr %1595, align 8, !tbaa !35
  %1597 = getelementptr inbounds %struct.UT_hash_table, ptr %1596, i32 0, i32 5
  %1598 = load i64, ptr %1597, align 8, !tbaa !43
  %1599 = getelementptr inbounds i8, ptr %1592, i64 %1598
  br label %1601

1600:                                             ; preds = %1584
  br label %1601

1601:                                             ; preds = %1600, %1589
  %1602 = phi ptr [ %1599, %1589 ], [ null, %1600 ]
  store ptr %1602, ptr %39, align 8, !tbaa !5
  br label %1603

1603:                                             ; preds = %1601, %1580
  %1604 = load i32, ptr %37, align 4, !tbaa !31
  %1605 = add i32 %1604, -1
  store i32 %1605, ptr %37, align 4, !tbaa !31
  br label %1676

1606:                                             ; preds = %1577
  %1607 = load ptr, ptr %39, align 8, !tbaa !5
  %1608 = load ptr, ptr %10, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.gpos_single_hash, ptr %1608, i32 0, i32 3
  %1610 = getelementptr inbounds %struct.UT_hash_handle, ptr %1609, i32 0, i32 0
  %1611 = load ptr, ptr %1610, align 8, !tbaa !35
  %1612 = getelementptr inbounds %struct.UT_hash_table, ptr %1611, i32 0, i32 5
  %1613 = load i64, ptr %1612, align 8, !tbaa !43
  %1614 = sub i64 0, %1613
  %1615 = getelementptr inbounds i8, ptr %1607, i64 %1614
  %1616 = load ptr, ptr %40, align 8, !tbaa !5
  %1617 = load ptr, ptr %10, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.gpos_single_hash, ptr %1617, i32 0, i32 3
  %1619 = getelementptr inbounds %struct.UT_hash_handle, ptr %1618, i32 0, i32 0
  %1620 = load ptr, ptr %1619, align 8, !tbaa !35
  %1621 = getelementptr inbounds %struct.UT_hash_table, ptr %1620, i32 0, i32 5
  %1622 = load i64, ptr %1621, align 8, !tbaa !43
  %1623 = sub i64 0, %1622
  %1624 = getelementptr inbounds i8, ptr %1616, i64 %1623
  %1625 = call i32 @gpos_by_from_id(ptr noundef %1615, ptr noundef %1624)
  %1626 = icmp sle i32 %1625, 0
  br i1 %1626, label %1627, label %1653

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

1631:                                             ; preds = %1627
  %1632 = load ptr, ptr %39, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.UT_hash_handle, ptr %1632, i32 0, i32 2
  %1634 = load ptr, ptr %1633, align 8, !tbaa !59
  %1635 = icmp ne ptr %1634, null
  br i1 %1635, label %1636, label %1647

1636:                                             ; preds = %1631
  %1637 = load ptr, ptr %39, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.UT_hash_handle, ptr %1637, i32 0, i32 2
  %1639 = load ptr, ptr %1638, align 8, !tbaa !59
  %1640 = load ptr, ptr %10, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.gpos_single_hash, ptr %1640, i32 0, i32 3
  %1642 = getelementptr inbounds %struct.UT_hash_handle, ptr %1641, i32 0, i32 0
  %1643 = load ptr, ptr %1642, align 8, !tbaa !35
  %1644 = getelementptr inbounds %struct.UT_hash_table, ptr %1643, i32 0, i32 5
  %1645 = load i64, ptr %1644, align 8, !tbaa !43
  %1646 = getelementptr inbounds i8, ptr %1639, i64 %1645
  br label %1648

1647:                                             ; preds = %1631
  br label %1648

1648:                                             ; preds = %1647, %1636
  %1649 = phi ptr [ %1646, %1636 ], [ null, %1647 ]
  store ptr %1649, ptr %39, align 8, !tbaa !5
  br label %1650

1650:                                             ; preds = %1648, %1627
  %1651 = load i32, ptr %37, align 4, !tbaa !31
  %1652 = add i32 %1651, -1
  store i32 %1652, ptr %37, align 4, !tbaa !31
  br label %1675

1653:                                             ; preds = %1606
  %1654 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1654, ptr %41, align 8, !tbaa !5
  %1655 = load ptr, ptr %40, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.UT_hash_handle, ptr %1655, i32 0, i32 2
  %1657 = load ptr, ptr %1656, align 8, !tbaa !59
  %1658 = icmp ne ptr %1657, null
  br i1 %1658, label %1659, label %1670

1659:                                             ; preds = %1653
  %1660 = load ptr, ptr %40, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.UT_hash_handle, ptr %1660, i32 0, i32 2
  %1662 = load ptr, ptr %1661, align 8, !tbaa !59
  %1663 = load ptr, ptr %10, align 8, !tbaa !5
  %1664 = getelementptr inbounds %struct.gpos_single_hash, ptr %1663, i32 0, i32 3
  %1665 = getelementptr inbounds %struct.UT_hash_handle, ptr %1664, i32 0, i32 0
  %1666 = load ptr, ptr %1665, align 8, !tbaa !35
  %1667 = getelementptr inbounds %struct.UT_hash_table, ptr %1666, i32 0, i32 5
  %1668 = load i64, ptr %1667, align 8, !tbaa !43
  %1669 = getelementptr inbounds i8, ptr %1662, i64 %1668
  br label %1671

1670:                                             ; preds = %1653
  br label %1671

1671:                                             ; preds = %1670, %1659
  %1672 = phi ptr [ %1669, %1659 ], [ null, %1670 ]
  store ptr %1672, ptr %40, align 8, !tbaa !5
  %1673 = load i32, ptr %38, align 4, !tbaa !31
  %1674 = add i32 %1673, -1
  store i32 %1674, ptr %38, align 4, !tbaa !31
  br label %1675

1675:                                             ; preds = %1671, %1650
  br label %1676

1676:                                             ; preds = %1675, %1603
  br label %1677

1677:                                             ; preds = %1676, %1570
  %1678 = load ptr, ptr %43, align 8, !tbaa !5
  %1679 = icmp ne ptr %1678, null
  br i1 %1679, label %1680, label %1698

1680:                                             ; preds = %1677
  %1681 = load ptr, ptr %41, align 8, !tbaa !5
  %1682 = icmp ne ptr %1681, null
  br i1 %1682, label %1683, label %1693

1683:                                             ; preds = %1680
  %1684 = load ptr, ptr %41, align 8, !tbaa !5
  %1685 = load ptr, ptr %10, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.gpos_single_hash, ptr %1685, i32 0, i32 3
  %1687 = getelementptr inbounds %struct.UT_hash_handle, ptr %1686, i32 0, i32 0
  %1688 = load ptr, ptr %1687, align 8, !tbaa !35
  %1689 = getelementptr inbounds %struct.UT_hash_table, ptr %1688, i32 0, i32 5
  %1690 = load i64, ptr %1689, align 8, !tbaa !43
  %1691 = sub i64 0, %1690
  %1692 = getelementptr inbounds i8, ptr %1684, i64 %1691
  br label %1694

1693:                                             ; preds = %1680
  br label %1694

1694:                                             ; preds = %1693, %1683
  %1695 = phi ptr [ %1692, %1683 ], [ null, %1693 ]
  %1696 = load ptr, ptr %43, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.UT_hash_handle, ptr %1696, i32 0, i32 2
  store ptr %1695, ptr %1697, align 8, !tbaa !59
  br label %1700

1698:                                             ; preds = %1677
  %1699 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1699, ptr %42, align 8, !tbaa !5
  br label %1700

1700:                                             ; preds = %1698, %1694
  %1701 = load ptr, ptr %41, align 8, !tbaa !5
  %1702 = icmp ne ptr %1701, null
  br i1 %1702, label %1703, label %1721

1703:                                             ; preds = %1700
  %1704 = load ptr, ptr %43, align 8, !tbaa !5
  %1705 = icmp ne ptr %1704, null
  br i1 %1705, label %1706, label %1716

1706:                                             ; preds = %1703
  %1707 = load ptr, ptr %43, align 8, !tbaa !5
  %1708 = load ptr, ptr %10, align 8, !tbaa !5
  %1709 = getelementptr inbounds %struct.gpos_single_hash, ptr %1708, i32 0, i32 3
  %1710 = getelementptr inbounds %struct.UT_hash_handle, ptr %1709, i32 0, i32 0
  %1711 = load ptr, ptr %1710, align 8, !tbaa !35
  %1712 = getelementptr inbounds %struct.UT_hash_table, ptr %1711, i32 0, i32 5
  %1713 = load i64, ptr %1712, align 8, !tbaa !43
  %1714 = sub i64 0, %1713
  %1715 = getelementptr inbounds i8, ptr %1707, i64 %1714
  br label %1717

1716:                                             ; preds = %1703
  br label %1717

1717:                                             ; preds = %1716, %1706
  %1718 = phi ptr [ %1715, %1706 ], [ null, %1716 ]
  %1719 = load ptr, ptr %41, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.UT_hash_handle, ptr %1719, i32 0, i32 1
  store ptr %1718, ptr %1720, align 8, !tbaa !75
  br label %1721

1721:                                             ; preds = %1717, %1700
  %1722 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1722, ptr %43, align 8, !tbaa !5
  br label %1536, !llvm.loop !76

1723:                                             ; preds = %1547
  %1724 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1724, ptr %39, align 8, !tbaa !5
  br label %1495, !llvm.loop !77

1725:                                             ; preds = %1495
  %1726 = load ptr, ptr %43, align 8, !tbaa !5
  %1727 = icmp ne ptr %1726, null
  br i1 %1727, label %1728, label %1731

1728:                                             ; preds = %1725
  %1729 = load ptr, ptr %43, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct.UT_hash_handle, ptr %1729, i32 0, i32 2
  store ptr null, ptr %1730, align 8, !tbaa !59
  br label %1731

1731:                                             ; preds = %1728, %1725
  %1732 = load i32, ptr %35, align 4, !tbaa !31
  %1733 = icmp ule i32 %1732, 1
  br i1 %1733, label %1734, label %1753

1734:                                             ; preds = %1731
  store i32 0, ptr %34, align 4, !tbaa !31
  %1735 = load ptr, ptr %43, align 8, !tbaa !5
  %1736 = load ptr, ptr %10, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.gpos_single_hash, ptr %1736, i32 0, i32 3
  %1738 = getelementptr inbounds %struct.UT_hash_handle, ptr %1737, i32 0, i32 0
  %1739 = load ptr, ptr %1738, align 8, !tbaa !35
  %1740 = getelementptr inbounds %struct.UT_hash_table, ptr %1739, i32 0, i32 4
  store ptr %1735, ptr %1740, align 8, !tbaa !56
  br label %1741

1741:                                             ; preds = %1734
  %1742 = load ptr, ptr %42, align 8, !tbaa !5
  %1743 = load ptr, ptr %10, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.gpos_single_hash, ptr %1743, i32 0, i32 3
  %1745 = getelementptr inbounds %struct.UT_hash_handle, ptr %1744, i32 0, i32 0
  %1746 = load ptr, ptr %1745, align 8, !tbaa !35
  %1747 = getelementptr inbounds %struct.UT_hash_table, ptr %1746, i32 0, i32 5
  %1748 = load i64, ptr %1747, align 8, !tbaa !43
  %1749 = sub i64 0, %1748
  %1750 = getelementptr inbounds i8, ptr %1742, i64 %1749
  store ptr %1750, ptr %10, align 8, !tbaa !5
  br label %1751

1751:                                             ; preds = %1741
  br label %1752

1752:                                             ; preds = %1751
  br label %1753

1753:                                             ; preds = %1752, %1731
  %1754 = load i32, ptr %36, align 4, !tbaa !31
  %1755 = mul i32 %1754, 2
  store i32 %1755, ptr %36, align 4, !tbaa !31
  br label %1490, !llvm.loop !78

1756:                                             ; preds = %1490
  br label %1757

1757:                                             ; preds = %1756, %1484
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %1758

1758:                                             ; preds = %1757
  br label %1759

1759:                                             ; preds = %1758
  %1760 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gpos_single, ptr @iSubtable_gpos_single, i32 0, i32 12), align 8, !tbaa !79
  %1761 = load ptr, ptr %9, align 8, !tbaa !5
  call void %1760(ptr noundef %1761)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %1762 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1762, ptr %44, align 8, !tbaa !5
  %1763 = load ptr, ptr %10, align 8, !tbaa !5
  %1764 = icmp ne ptr %1763, null
  br i1 %1764, label %1765, label %1770

1765:                                             ; preds = %1759
  %1766 = load ptr, ptr %10, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.gpos_single_hash, ptr %1766, i32 0, i32 3
  %1768 = getelementptr inbounds %struct.UT_hash_handle, ptr %1767, i32 0, i32 2
  %1769 = load ptr, ptr %1768, align 8, !tbaa !54
  br label %1771

1770:                                             ; preds = %1759
  br label %1771

1771:                                             ; preds = %1770, %1765
  %1772 = phi ptr [ %1769, %1765 ], [ null, %1770 ]
  store ptr %1772, ptr %45, align 8, !tbaa !5
  br label %1773

1773:                                             ; preds = %1984, %1771
  %1774 = load ptr, ptr %44, align 8, !tbaa !5
  %1775 = icmp ne ptr %1774, null
  br i1 %1775, label %1776, label %1986

1776:                                             ; preds = %1773
  %1777 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gpos_single, ptr @iSubtable_gpos_single, i32 0, i32 13), align 8, !tbaa !81
  %1778 = load ptr, ptr %9, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %46, i32 0, i32 0
  %1780 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !82
  %1781 = load ptr, ptr %44, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.gpos_single_hash, ptr %1781, i32 0, i32 0
  %1783 = load i32, ptr %1782, align 8, !tbaa !49
  %1784 = trunc i32 %1783 to i16
  %1785 = load ptr, ptr %44, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.gpos_single_hash, ptr %1785, i32 0, i32 1
  %1787 = load ptr, ptr %1786, align 8, !tbaa !50
  %1788 = call { i64, ptr } %1780(i16 noundef zeroext %1784, ptr noundef %1787)
  %1789 = getelementptr inbounds { i64, ptr }, ptr %1779, i32 0, i32 0
  %1790 = extractvalue { i64, ptr } %1788, 0
  store i64 %1790, ptr %1789, align 8
  %1791 = getelementptr inbounds { i64, ptr }, ptr %1779, i32 0, i32 1
  %1792 = extractvalue { i64, ptr } %1788, 1
  store ptr %1792, ptr %1791, align 8
  %1793 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %46, i32 0, i32 1
  %1794 = load ptr, ptr %44, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.gpos_single_hash, ptr %1794, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1793, ptr align 8 %1795, i64 32, i1 false), !tbaa.struct !51
  call void %1777(ptr noundef %1778, ptr noundef byval(%struct.otl_GposSingleEntry) align 8 %46)
  %1796 = load ptr, ptr %44, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.gpos_single_hash, ptr %1796, i32 0, i32 1
  %1798 = load ptr, ptr %1797, align 8, !tbaa !50
  call void @sdsfree(ptr noundef %1798)
  br label %1799

1799:                                             ; preds = %1776
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %1800 = load ptr, ptr %44, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.gpos_single_hash, ptr %1800, i32 0, i32 3
  store ptr %1801, ptr %47, align 8, !tbaa !5
  %1802 = load ptr, ptr %47, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.UT_hash_handle, ptr %1802, i32 0, i32 1
  %1804 = load ptr, ptr %1803, align 8, !tbaa !75
  %1805 = icmp eq ptr %1804, null
  br i1 %1805, label %1806, label %1822

1806:                                             ; preds = %1799
  %1807 = load ptr, ptr %47, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.UT_hash_handle, ptr %1807, i32 0, i32 2
  %1809 = load ptr, ptr %1808, align 8, !tbaa !59
  %1810 = icmp eq ptr %1809, null
  br i1 %1810, label %1811, label %1822

1811:                                             ; preds = %1806
  %1812 = load ptr, ptr %10, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.gpos_single_hash, ptr %1812, i32 0, i32 3
  %1814 = getelementptr inbounds %struct.UT_hash_handle, ptr %1813, i32 0, i32 0
  %1815 = load ptr, ptr %1814, align 8, !tbaa !35
  %1816 = getelementptr inbounds %struct.UT_hash_table, ptr %1815, i32 0, i32 0
  %1817 = load ptr, ptr %1816, align 8, !tbaa !40
  call void @free(ptr noundef %1817) #10
  %1818 = load ptr, ptr %10, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.gpos_single_hash, ptr %1818, i32 0, i32 3
  %1820 = getelementptr inbounds %struct.UT_hash_handle, ptr %1819, i32 0, i32 0
  %1821 = load ptr, ptr %1820, align 8, !tbaa !35
  call void @free(ptr noundef %1821) #10
  store ptr null, ptr %10, align 8, !tbaa !5
  br label %1970

1822:                                             ; preds = %1806, %1799
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %1823 = load ptr, ptr %47, align 8, !tbaa !5
  %1824 = load ptr, ptr %10, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.gpos_single_hash, ptr %1824, i32 0, i32 3
  %1826 = getelementptr inbounds %struct.UT_hash_handle, ptr %1825, i32 0, i32 0
  %1827 = load ptr, ptr %1826, align 8, !tbaa !35
  %1828 = getelementptr inbounds %struct.UT_hash_table, ptr %1827, i32 0, i32 4
  %1829 = load ptr, ptr %1828, align 8, !tbaa !56
  %1830 = icmp eq ptr %1823, %1829
  br i1 %1830, label %1831, label %1847

1831:                                             ; preds = %1822
  %1832 = load ptr, ptr %47, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.UT_hash_handle, ptr %1832, i32 0, i32 1
  %1834 = load ptr, ptr %1833, align 8, !tbaa !75
  %1835 = load ptr, ptr %10, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.gpos_single_hash, ptr %1835, i32 0, i32 3
  %1837 = getelementptr inbounds %struct.UT_hash_handle, ptr %1836, i32 0, i32 0
  %1838 = load ptr, ptr %1837, align 8, !tbaa !35
  %1839 = getelementptr inbounds %struct.UT_hash_table, ptr %1838, i32 0, i32 5
  %1840 = load i64, ptr %1839, align 8, !tbaa !43
  %1841 = getelementptr inbounds i8, ptr %1834, i64 %1840
  %1842 = load ptr, ptr %10, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.gpos_single_hash, ptr %1842, i32 0, i32 3
  %1844 = getelementptr inbounds %struct.UT_hash_handle, ptr %1843, i32 0, i32 0
  %1845 = load ptr, ptr %1844, align 8, !tbaa !35
  %1846 = getelementptr inbounds %struct.UT_hash_table, ptr %1845, i32 0, i32 4
  store ptr %1841, ptr %1846, align 8, !tbaa !56
  br label %1847

1847:                                             ; preds = %1831, %1822
  %1848 = load ptr, ptr %47, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.UT_hash_handle, ptr %1848, i32 0, i32 1
  %1850 = load ptr, ptr %1849, align 8, !tbaa !75
  %1851 = icmp ne ptr %1850, null
  br i1 %1851, label %1852, label %1867

1852:                                             ; preds = %1847
  %1853 = load ptr, ptr %47, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.UT_hash_handle, ptr %1853, i32 0, i32 2
  %1855 = load ptr, ptr %1854, align 8, !tbaa !59
  %1856 = load ptr, ptr %47, align 8, !tbaa !5
  %1857 = getelementptr inbounds %struct.UT_hash_handle, ptr %1856, i32 0, i32 1
  %1858 = load ptr, ptr %1857, align 8, !tbaa !75
  %1859 = load ptr, ptr %10, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.gpos_single_hash, ptr %1859, i32 0, i32 3
  %1861 = getelementptr inbounds %struct.UT_hash_handle, ptr %1860, i32 0, i32 0
  %1862 = load ptr, ptr %1861, align 8, !tbaa !35
  %1863 = getelementptr inbounds %struct.UT_hash_table, ptr %1862, i32 0, i32 5
  %1864 = load i64, ptr %1863, align 8, !tbaa !43
  %1865 = getelementptr inbounds i8, ptr %1858, i64 %1864
  %1866 = getelementptr inbounds %struct.UT_hash_handle, ptr %1865, i32 0, i32 2
  store ptr %1855, ptr %1866, align 8, !tbaa !59
  br label %1874

1867:                                             ; preds = %1847
  br label %1868

1868:                                             ; preds = %1867
  %1869 = load ptr, ptr %47, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.UT_hash_handle, ptr %1869, i32 0, i32 2
  %1871 = load ptr, ptr %1870, align 8, !tbaa !59
  store ptr %1871, ptr %10, align 8, !tbaa !5
  br label %1872

1872:                                             ; preds = %1868
  br label %1873

1873:                                             ; preds = %1872
  br label %1874

1874:                                             ; preds = %1873, %1852
  %1875 = load ptr, ptr %47, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.UT_hash_handle, ptr %1875, i32 0, i32 2
  %1877 = load ptr, ptr %1876, align 8, !tbaa !59
  %1878 = icmp ne ptr %1877, null
  br i1 %1878, label %1879, label %1894

1879:                                             ; preds = %1874
  %1880 = load ptr, ptr %47, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.UT_hash_handle, ptr %1880, i32 0, i32 1
  %1882 = load ptr, ptr %1881, align 8, !tbaa !75
  %1883 = load ptr, ptr %47, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.UT_hash_handle, ptr %1883, i32 0, i32 2
  %1885 = load ptr, ptr %1884, align 8, !tbaa !59
  %1886 = load ptr, ptr %10, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.gpos_single_hash, ptr %1886, i32 0, i32 3
  %1888 = getelementptr inbounds %struct.UT_hash_handle, ptr %1887, i32 0, i32 0
  %1889 = load ptr, ptr %1888, align 8, !tbaa !35
  %1890 = getelementptr inbounds %struct.UT_hash_table, ptr %1889, i32 0, i32 5
  %1891 = load i64, ptr %1890, align 8, !tbaa !43
  %1892 = getelementptr inbounds i8, ptr %1885, i64 %1891
  %1893 = getelementptr inbounds %struct.UT_hash_handle, ptr %1892, i32 0, i32 1
  store ptr %1882, ptr %1893, align 8, !tbaa !75
  br label %1894

1894:                                             ; preds = %1879, %1874
  br label %1895

1895:                                             ; preds = %1894
  %1896 = load ptr, ptr %47, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.UT_hash_handle, ptr %1896, i32 0, i32 7
  %1898 = load i32, ptr %1897, align 4, !tbaa !69
  %1899 = load ptr, ptr %10, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.gpos_single_hash, ptr %1899, i32 0, i32 3
  %1901 = getelementptr inbounds %struct.UT_hash_handle, ptr %1900, i32 0, i32 0
  %1902 = load ptr, ptr %1901, align 8, !tbaa !35
  %1903 = getelementptr inbounds %struct.UT_hash_table, ptr %1902, i32 0, i32 1
  %1904 = load i32, ptr %1903, align 8, !tbaa !38
  %1905 = sub i32 %1904, 1
  %1906 = and i32 %1898, %1905
  store i32 %1906, ptr %48, align 4, !tbaa !31
  br label %1907

1907:                                             ; preds = %1895
  br label %1908

1908:                                             ; preds = %1907
  br label %1909

1909:                                             ; preds = %1908
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %1910 = load ptr, ptr %10, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.gpos_single_hash, ptr %1910, i32 0, i32 3
  %1912 = getelementptr inbounds %struct.UT_hash_handle, ptr %1911, i32 0, i32 0
  %1913 = load ptr, ptr %1912, align 8, !tbaa !35
  %1914 = getelementptr inbounds %struct.UT_hash_table, ptr %1913, i32 0, i32 0
  %1915 = load ptr, ptr %1914, align 8, !tbaa !40
  %1916 = load i32, ptr %48, align 4, !tbaa !31
  %1917 = zext i32 %1916 to i64
  %1918 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1915, i64 %1917
  store ptr %1918, ptr %49, align 8, !tbaa !5
  %1919 = load ptr, ptr %49, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1919, i32 0, i32 1
  %1921 = load i32, ptr %1920, align 8, !tbaa !61
  %1922 = add i32 %1921, -1
  store i32 %1922, ptr %1920, align 8, !tbaa !61
  %1923 = load ptr, ptr %49, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1923, i32 0, i32 0
  %1925 = load ptr, ptr %1924, align 8, !tbaa !41
  %1926 = load ptr, ptr %47, align 8, !tbaa !5
  %1927 = icmp eq ptr %1925, %1926
  br i1 %1927, label %1928, label %1934

1928:                                             ; preds = %1909
  %1929 = load ptr, ptr %47, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.UT_hash_handle, ptr %1929, i32 0, i32 4
  %1931 = load ptr, ptr %1930, align 8, !tbaa !68
  %1932 = load ptr, ptr %49, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1932, i32 0, i32 0
  store ptr %1931, ptr %1933, align 8, !tbaa !41
  br label %1934

1934:                                             ; preds = %1928, %1909
  %1935 = load ptr, ptr %47, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.UT_hash_handle, ptr %1935, i32 0, i32 3
  %1937 = load ptr, ptr %1936, align 8, !tbaa !63
  %1938 = icmp ne ptr %1937, null
  br i1 %1938, label %1939, label %1947

1939:                                             ; preds = %1934
  %1940 = load ptr, ptr %47, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.UT_hash_handle, ptr %1940, i32 0, i32 4
  %1942 = load ptr, ptr %1941, align 8, !tbaa !68
  %1943 = load ptr, ptr %47, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.UT_hash_handle, ptr %1943, i32 0, i32 3
  %1945 = load ptr, ptr %1944, align 8, !tbaa !63
  %1946 = getelementptr inbounds %struct.UT_hash_handle, ptr %1945, i32 0, i32 4
  store ptr %1942, ptr %1946, align 8, !tbaa !68
  br label %1947

1947:                                             ; preds = %1939, %1934
  %1948 = load ptr, ptr %47, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.UT_hash_handle, ptr %1948, i32 0, i32 4
  %1950 = load ptr, ptr %1949, align 8, !tbaa !68
  %1951 = icmp ne ptr %1950, null
  br i1 %1951, label %1952, label %1960

1952:                                             ; preds = %1947
  %1953 = load ptr, ptr %47, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.UT_hash_handle, ptr %1953, i32 0, i32 3
  %1955 = load ptr, ptr %1954, align 8, !tbaa !63
  %1956 = load ptr, ptr %47, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.UT_hash_handle, ptr %1956, i32 0, i32 4
  %1958 = load ptr, ptr %1957, align 8, !tbaa !68
  %1959 = getelementptr inbounds %struct.UT_hash_handle, ptr %1958, i32 0, i32 3
  store ptr %1955, ptr %1959, align 8, !tbaa !63
  br label %1960

1960:                                             ; preds = %1952, %1947
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %1961

1961:                                             ; preds = %1960
  br label %1962

1962:                                             ; preds = %1961
  %1963 = load ptr, ptr %10, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.gpos_single_hash, ptr %1963, i32 0, i32 3
  %1965 = getelementptr inbounds %struct.UT_hash_handle, ptr %1964, i32 0, i32 0
  %1966 = load ptr, ptr %1965, align 8, !tbaa !35
  %1967 = getelementptr inbounds %struct.UT_hash_table, ptr %1966, i32 0, i32 3
  %1968 = load i32, ptr %1967, align 8, !tbaa !60
  %1969 = add i32 %1968, -1
  store i32 %1969, ptr %1967, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %1970

1970:                                             ; preds = %1962, %1811
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %1971

1971:                                             ; preds = %1970
  br label %1972

1972:                                             ; preds = %1971
  %1973 = load ptr, ptr %44, align 8, !tbaa !5
  call void @free(ptr noundef %1973) #10
  store ptr null, ptr %44, align 8, !tbaa !5
  br label %1974

1974:                                             ; preds = %1972
  %1975 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1975, ptr %44, align 8, !tbaa !5
  %1976 = load ptr, ptr %45, align 8, !tbaa !5
  %1977 = icmp ne ptr %1976, null
  br i1 %1977, label %1978, label %1983

1978:                                             ; preds = %1974
  %1979 = load ptr, ptr %45, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.gpos_single_hash, ptr %1979, i32 0, i32 3
  %1981 = getelementptr inbounds %struct.UT_hash_handle, ptr %1980, i32 0, i32 2
  %1982 = load ptr, ptr %1981, align 8, !tbaa !54
  br label %1984

1983:                                             ; preds = %1974
  br label %1984

1984:                                             ; preds = %1983, %1978
  %1985 = phi ptr [ %1982, %1978 ], [ null, %1983 ]
  store ptr %1985, ptr %45, align 8, !tbaa !5
  br label %1773, !llvm.loop !84

1986:                                             ; preds = %1773
  %1987 = load ptr, ptr %9, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.subtable_gpos_single, ptr %1987, i32 0, i32 0
  %1989 = load i64, ptr %1988, align 8, !tbaa !11
  %1990 = icmp eq i64 %1989, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  ret i1 %1990
}

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

declare ptr @sdscatprintf(ptr noundef, ptr noundef, ...) #2

declare ptr @sdsempty() #2

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

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

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

declare ptr @sdsdup(ptr noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

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

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

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

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

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

declare void @sdsfree(ptr noundef) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind 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 #4 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { 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 #7 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { 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 #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { nounwind allocsize(0) }
attributes #13 = { 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 = !{!"short", !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, !6, i64 88}
!15 = !{!"otfcc_GlyphOrderPackage", !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}
!16 = !{!17, !6, i64 264}
!17 = !{!"_caryll_font", !18, 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, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264}
!18 = !{!"int", !7, i64 0}
!19 = !{!12, !6, i64 16}
!20 = !{!21, !6, i64 32}
!21 = !{!"", !22, i64 0, !22, i64 1, !22, i64 2, !22, i64 3, !22, i64 4, !22, i64 5, !22, i64 6, !22, i64 7, !22, i64 8, !22, i64 9, !22, i64 10, !22, i64 11, !22, i64 12, !22, i64 13, !22, i64 14, !22, i64 15, !22, i64 16, !22, i64 17, !22, i64 18, !22, i64 19, !22, i64 20, !22, i64 21, !22, i64 22, !6, i64 24, !6, i64 32}
!22 = !{!"_Bool", !7, i64 0}
!23 = !{!24, !6, i64 48}
!24 = !{!"otfcc_ILogger", !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}
!25 = !{!26, !6, i64 8}
!26 = !{!"", !27, i64 0, !28, i64 16}
!27 = !{!"otfcc_Handle", !18, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"", !29, i64 0, !29, i64 8, !29, i64 16, !29, i64 24}
!29 = !{!"double", !7, i64 0}
!30 = !{!26, !10, i64 4}
!31 = !{!18, !18, i64 0}
!32 = !{!7, !7, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!36, !6, i64 48}
!36 = !{!"", !18, i64 0, !6, i64 8, !28, i64 16, !37, i64 48}
!37 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !18, i64 48, !18, i64 52}
!38 = !{!39, !18, i64 8}
!39 = !{!"UT_hash_table", !6, i64 0, !18, i64 8, !18, i64 12, !18, i64 16, !6, i64 24, !13, i64 32, !18, i64 40, !18, i64 44, !18, i64 48, !18, i64 52, !18, i64 56}
!40 = !{!39, !6, i64 0}
!41 = !{!42, !6, i64 0}
!42 = !{!"UT_hash_bucket", !6, i64 0, !18, i64 8, !18, i64 12}
!43 = !{!39, !13, i64 32}
!44 = !{!36, !18, i64 100}
!45 = !{!36, !18, i64 96}
!46 = !{!36, !6, i64 88}
!47 = !{!36, !6, i64 80}
!48 = distinct !{!48, !34}
!49 = !{!36, !18, i64 0}
!50 = !{!36, !6, i64 8}
!51 = !{i64 0, i64 8, !52, i64 8, i64 8, !52, i64 16, i64 8, !52, i64 24, i64 8, !52}
!52 = !{!29, !29, i64 0}
!53 = distinct !{!53, !34}
!54 = !{!36, !6, i64 64}
!55 = !{!36, !6, i64 56}
!56 = !{!39, !6, i64 24}
!57 = !{!39, !18, i64 12}
!58 = !{!39, !18, i64 56}
!59 = !{!37, !6, i64 16}
!60 = !{!39, !18, i64 16}
!61 = !{!42, !18, i64 8}
!62 = !{!36, !6, i64 72}
!63 = !{!37, !6, i64 24}
!64 = !{!42, !18, i64 12}
!65 = !{!39, !18, i64 52}
!66 = !{!39, !18, i64 40}
!67 = !{!39, !18, i64 44}
!68 = !{!37, !6, i64 32}
!69 = !{!37, !18, i64 52}
!70 = distinct !{!70, !34}
!71 = distinct !{!71, !34}
!72 = !{!39, !18, i64 48}
!73 = distinct !{!73, !34}
!74 = distinct !{!74, !34}
!75 = !{!37, !6, i64 8}
!76 = distinct !{!76, !34}
!77 = distinct !{!77, !34}
!78 = distinct !{!78, !34}
!79 = !{!80, !6, i64 96}
!80 = !{!"__caryll_vectorinterface_subtable_gpos_single", !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, !6, i64 128, !6, i64 136, !6, i64 144}
!81 = !{!80, !6, i64 104}
!82 = !{!83, !6, i64 80}
!83 = !{!"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}
!84 = distinct !{!84, !34}


; 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_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gpos_single = type { ptr, ptr, ptr, 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_GposSingleEntry = type { %struct.otfcc_Handle, %struct.otl_PositionValue }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.otl_PositionValue = type { double, double, double, double }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otfcc_pkgGlyphOrder = external local_unnamed_addr constant %struct.otfcc_GlyphOrderPackage, align 8
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [56 x i8], align 1
@iSubtable_gpos_single = external local_unnamed_addr constant %struct.__caryll_vectorinterface_subtable_gpos_single, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @consolidate_gpos_single(ptr nocapture noundef readonly %0, ptr nocapture noundef readnone %1, ptr noundef %2, ptr nocapture noundef readonly %3) local_unnamed_addr #0 {
  %5 = alloca i32, align 4
  %6 = alloca %struct.otl_GposSingleEntry, align 8
  %7 = load i64, ptr %2, align 8, !tbaa !5
  %.not801 = icmp eq i64 %7, 0
  br i1 %.not801, label %.thread718, label %.lr.ph769

.lr.ph769:                                        ; preds = %4
  %8 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_pkgGlyphOrder, i64 88), align 8, !tbaa !11
  %9 = getelementptr inbounds i8, ptr %0, i64 264
  %10 = getelementptr inbounds i8, ptr %2, i64 16
  %11 = getelementptr inbounds i8, ptr %3, i64 32
  br label %13

._crit_edge770:                                   ; preds = %305
  %.not = icmp eq ptr %.3, null
  br i1 %.not, label %.thread718, label %310

.thread718:                                       ; preds = %4, %._crit_edge770
  %12 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gpos_single, i64 96), align 8, !tbaa !13
  tail call void %12(ptr noundef nonnull %2) #11
  br label %._crit_edge800

13:                                               ; preds = %.lr.ph769, %305
  %14 = phi i64 [ 0, %.lr.ph769 ], [ %307, %305 ]
  %.0766 = phi ptr [ null, %.lr.ph769 ], [ %.3, %305 ]
  %.0560765 = phi i16 [ 0, %.lr.ph769 ], [ %306, %305 ]
  %15 = load ptr, ptr %9, align 8, !tbaa !15
  %16 = load ptr, ptr %10, align 8, !tbaa !18
  %17 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %16, i64 %14
  %18 = tail call zeroext i1 %8(ptr noundef %15, ptr noundef %17) #11
  br i1 %18, label %28, label %19

19:                                               ; preds = %13
  %20 = load ptr, ptr %11, align 8, !tbaa !19
  %21 = getelementptr inbounds i8, ptr %20, i64 48
  %22 = load ptr, ptr %21, align 8, !tbaa !22
  %23 = tail call ptr @sdsempty() #11
  %24 = load ptr, ptr %10, align 8, !tbaa !18
  %25 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %24, i64 %14, i32 0, i32 2
  %26 = load ptr, ptr %25, align 8, !tbaa !24
  %27 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %23, ptr noundef nonnull @.str, ptr noundef %26) #11
  tail call void %22(ptr noundef %20, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %27) #11
  br label %305

28:                                               ; preds = %13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  %29 = load ptr, ptr %10, align 8, !tbaa !18
  %30 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %29, i64 %14, i32 0, i32 1
  %31 = load i16, ptr %30, align 4, !tbaa !30
  %32 = zext i16 %31 to i32
  store i32 %32, ptr %5, align 4, !tbaa !31
  %33 = and i16 %31, -256
  %34 = zext i16 %33 to i32
  %35 = and i16 %31, 255
  %36 = zext nneg i16 %35 to i32
  %37 = add nuw nsw i32 %34, 17973517
  %38 = add nuw nsw i32 %37, %36
  %39 = xor i32 %38, 522093
  %40 = sub nuw nsw i32 -1622558010, %39
  %41 = shl i32 %39, 8
  %42 = xor i32 %40, %41
  %43 = add nuw nsw i32 %39, %42
  %44 = sub nuw nsw i32 -17973517, %43
  %45 = lshr i32 %42, 13
  %46 = xor i32 %44, %45
  %47 = add nuw nsw i32 %42, %46
  %48 = sub nsw i32 %39, %47
  %49 = lshr i32 %46, 12
  %50 = xor i32 %48, %49
  %51 = add nuw nsw i32 %46, %50
  %52 = sub nuw i32 %42, %51
  %53 = shl i32 %50, 16
  %54 = xor i32 %52, %53
  %55 = add i32 %50, %54
  %56 = sub i32 %46, %55
  %57 = lshr i32 %54, 5
  %58 = xor i32 %56, %57
  %59 = add i32 %54, %58
  %60 = sub i32 %50, %59
  %61 = lshr i32 %58, 3
  %62 = xor i32 %60, %61
  %63 = add i32 %58, %62
  %64 = sub i32 %54, %63
  %65 = shl i32 %62, 10
  %66 = xor i32 %64, %65
  %67 = add i32 %62, %66
  %68 = sub i32 %58, %67
  %69 = lshr i32 %66, 15
  %70 = xor i32 %68, %69
  %.not691 = icmp eq ptr %.0766, null
  br i1 %.not691, label %.loopexit752, label %71

71:                                               ; preds = %28
  %72 = getelementptr inbounds i8, ptr %.0766, i64 48
  %73 = load ptr, ptr %72, align 8, !tbaa !32
  %74 = getelementptr inbounds i8, ptr %73, i64 8
  %75 = load i32, ptr %74, align 8, !tbaa !35
  %76 = add i32 %75, -1
  %77 = and i32 %76, %70
  %78 = load ptr, ptr %73, align 8, !tbaa !37
  %79 = zext i32 %77 to i64
  %80 = getelementptr inbounds %struct.UT_hash_bucket, ptr %78, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !38
  %.not692 = icmp eq ptr %81, null
  br i1 %.not692, label %.loopexit752, label %.lr.ph

.lr.ph:                                           ; preds = %71
  %82 = getelementptr inbounds i8, ptr %73, i64 32
  %83 = load i64, ptr %82, align 8, !tbaa !40
  %84 = sub i64 0, %83
  %85 = getelementptr inbounds i8, ptr %81, i64 %84
  %86 = getelementptr inbounds i8, ptr %73, i64 32
  br label %87

87:                                               ; preds = %102, %.lr.ph
  %.1562757 = phi ptr [ %85, %.lr.ph ], [ %105, %102 ]
  %88 = getelementptr inbounds i8, ptr %.1562757, i64 100
  %89 = load i32, ptr %88, align 4, !tbaa !41
  %90 = icmp eq i32 %89, %70
  br i1 %90, label %91, label %99

91:                                               ; preds = %87
  %92 = getelementptr inbounds i8, ptr %.1562757, i64 96
  %93 = load i32, ptr %92, align 8, !tbaa !42
  %94 = icmp eq i32 %93, 4
  br i1 %94, label %95, label %99

95:                                               ; preds = %91
  %96 = getelementptr inbounds i8, ptr %.1562757, i64 88
  %97 = load ptr, ptr %96, align 8, !tbaa !43
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %97, ptr noundef nonnull dereferenceable(4) %5, i64 4)
  %98 = icmp eq i32 %bcmp, 0
  br i1 %98, label %106, label %99

99:                                               ; preds = %95, %91, %87
  %100 = getelementptr inbounds i8, ptr %.1562757, i64 80
  %101 = load ptr, ptr %100, align 8, !tbaa !44
  %.not694 = icmp eq ptr %101, null
  br i1 %.not694, label %.loopexit752, label %102

102:                                              ; preds = %99
  %103 = load i64, ptr %86, align 8, !tbaa !40
  %104 = sub i64 0, %103
  %105 = getelementptr inbounds i8, ptr %101, i64 %104
  br label %87, !llvm.loop !45

106:                                              ; preds = %95
  %107 = load ptr, ptr %11, align 8, !tbaa !19
  %108 = getelementptr inbounds i8, ptr %107, i64 48
  %109 = load ptr, ptr %108, align 8, !tbaa !22
  %110 = tail call ptr @sdsempty() #11
  %111 = load ptr, ptr %10, align 8, !tbaa !18
  %112 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %111, i64 %14, i32 0, i32 2
  %113 = load ptr, ptr %112, align 8, !tbaa !24
  %114 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %110, ptr noundef nonnull @.str.1, ptr noundef %113) #11
  tail call void %109(ptr noundef %107, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %114) #11
  br label %304

.loopexit752:                                     ; preds = %99, %71, %28
  %115 = tail call ptr @__caryll_allocate_clean(i64 noundef 104, i64 noundef 30)
  %116 = load ptr, ptr %10, align 8, !tbaa !18
  %117 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %116, i64 %14, i32 0, i32 1
  %118 = load i16, ptr %117, align 4, !tbaa !30
  %119 = zext i16 %118 to i32
  store i32 %119, ptr %115, align 8, !tbaa !47
  %120 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %116, i64 %14, i32 0, i32 2
  %121 = load ptr, ptr %120, align 8, !tbaa !24
  %122 = tail call ptr @sdsdup(ptr noundef %121) #11
  %123 = getelementptr inbounds i8, ptr %115, i64 8
  store ptr %122, ptr %123, align 8, !tbaa !48
  %124 = getelementptr inbounds i8, ptr %115, i64 16
  %125 = load ptr, ptr %10, align 8, !tbaa !18
  %126 = getelementptr inbounds %struct.otl_GposSingleEntry, ptr %125, i64 %14, i32 1
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(32) %126, i64 32, i1 false), !tbaa.struct !49
  %127 = getelementptr inbounds i8, ptr %115, i64 3
  %128 = load i8, ptr %127, align 1, !tbaa !51
  %129 = zext i8 %128 to i32
  %130 = shl nuw i32 %129, 24
  %131 = getelementptr inbounds i8, ptr %115, i64 2
  %132 = load i8, ptr %131, align 1, !tbaa !51
  %133 = zext i8 %132 to i32
  %134 = shl nuw nsw i32 %133, 16
  %135 = getelementptr inbounds i8, ptr %115, i64 1
  %136 = load i8, ptr %135, align 1, !tbaa !51
  %137 = zext i8 %136 to i32
  %138 = shl nuw nsw i32 %137, 8
  %139 = load i8, ptr %115, align 1, !tbaa !51
  %140 = zext i8 %139 to i32
  %141 = add i32 %130, 17973517
  %142 = add i32 %141, %134
  %143 = add i32 %142, %138
  %144 = add i32 %143, %140
  %145 = xor i32 %144, 522093
  %146 = sub i32 -1622558010, %145
  %147 = shl i32 %145, 8
  %148 = xor i32 %146, %147
  %149 = add i32 %145, %148
  %150 = sub i32 -17973517, %149
  %151 = lshr i32 %148, 13
  %152 = xor i32 %150, %151
  %153 = add i32 %148, %152
  %154 = sub i32 %145, %153
  %155 = lshr i32 %152, 12
  %156 = xor i32 %154, %155
  %157 = add i32 %152, %156
  %158 = sub i32 %148, %157
  %159 = shl i32 %156, 16
  %160 = xor i32 %158, %159
  %161 = add i32 %156, %160
  %162 = sub i32 %152, %161
  %163 = lshr i32 %160, 5
  %164 = xor i32 %162, %163
  %165 = add i32 %160, %164
  %166 = sub i32 %156, %165
  %167 = lshr i32 %164, 3
  %168 = xor i32 %166, %167
  %169 = add i32 %164, %168
  %170 = sub i32 %160, %169
  %171 = shl i32 %168, 10
  %172 = xor i32 %170, %171
  %173 = add i32 %168, %172
  %174 = sub i32 %164, %173
  %175 = lshr i32 %172, 15
  %176 = xor i32 %174, %175
  %177 = getelementptr inbounds i8, ptr %115, i64 48
  %178 = getelementptr inbounds i8, ptr %115, i64 100
  store i32 %176, ptr %178, align 4, !tbaa !41
  %179 = getelementptr inbounds i8, ptr %115, i64 88
  store ptr %115, ptr %179, align 8, !tbaa !43
  %180 = getelementptr inbounds i8, ptr %115, i64 96
  store i32 4, ptr %180, align 8, !tbaa !42
  br i1 %.not691, label %181, label %195

181:                                              ; preds = %.loopexit752
  %182 = getelementptr inbounds i8, ptr %115, i64 56
  %183 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #12
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %182, i8 0, i64 16, i1 false)
  store ptr %183, ptr %177, align 8, !tbaa !32
  %.not696 = icmp eq ptr %183, null
  br i1 %.not696, label %184, label %185

184:                                              ; preds = %181
  tail call void @exit(i32 noundef -1) #13
  unreachable

185:                                              ; preds = %181
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %183, i8 0, i64 64, i1 false)
  %186 = load ptr, ptr %177, align 8, !tbaa !32
  %187 = getelementptr inbounds i8, ptr %186, i64 24
  store ptr %177, ptr %187, align 8, !tbaa !52
  %188 = getelementptr inbounds i8, ptr %186, i64 8
  store i32 32, ptr %188, align 8, !tbaa !35
  %189 = getelementptr inbounds i8, ptr %186, i64 12
  store i32 5, ptr %189, align 4, !tbaa !53
  %190 = getelementptr inbounds i8, ptr %186, i64 32
  store i64 48, ptr %190, align 8, !tbaa !40
  %191 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #12
  store ptr %191, ptr %186, align 8, !tbaa !37
  %192 = getelementptr inbounds i8, ptr %186, i64 56
  store i32 -1609490463, ptr %192, align 8, !tbaa !54
  %.not697 = icmp eq ptr %191, null
  br i1 %.not697, label %193, label %194

193:                                              ; preds = %185
  tail call void @exit(i32 noundef -1) #13
  unreachable

194:                                              ; preds = %185
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %191, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %177, align 8, !tbaa !32
  br label %207

195:                                              ; preds = %.loopexit752
  %196 = getelementptr inbounds i8, ptr %.0766, i64 48
  %197 = load ptr, ptr %196, align 8, !tbaa !32
  store ptr %197, ptr %177, align 8, !tbaa !32
  %198 = getelementptr inbounds i8, ptr %115, i64 64
  store ptr null, ptr %198, align 8, !tbaa !55
  %199 = getelementptr inbounds i8, ptr %197, i64 24
  %200 = load ptr, ptr %199, align 8, !tbaa !52
  %201 = getelementptr inbounds i8, ptr %197, i64 32
  %202 = load i64, ptr %201, align 8, !tbaa !40
  %203 = sub i64 0, %202
  %204 = getelementptr inbounds i8, ptr %200, i64 %203
  %205 = getelementptr inbounds i8, ptr %115, i64 56
  store ptr %204, ptr %205, align 8, !tbaa !56
  %206 = getelementptr inbounds i8, ptr %200, i64 16
  store ptr %115, ptr %206, align 8, !tbaa !57
  store ptr %177, ptr %199, align 8, !tbaa !52
  br label %207

207:                                              ; preds = %194, %195
  %208 = phi ptr [ %197, %195 ], [ %.pre, %194 ]
  %.1 = phi ptr [ %.0766, %195 ], [ %115, %194 ]
  %209 = getelementptr inbounds i8, ptr %208, i64 16
  %210 = load i32, ptr %209, align 8, !tbaa !58
  %211 = add i32 %210, 1
  store i32 %211, ptr %209, align 8, !tbaa !58
  %212 = getelementptr inbounds i8, ptr %208, i64 8
  %213 = load i32, ptr %212, align 8, !tbaa !35
  %214 = add i32 %213, -1
  %215 = and i32 %214, %176
  %216 = load ptr, ptr %208, align 8, !tbaa !37
  %217 = zext i32 %215 to i64
  %218 = getelementptr inbounds %struct.UT_hash_bucket, ptr %216, i64 %217
  %219 = getelementptr inbounds i8, ptr %218, i64 8
  %220 = load i32, ptr %219, align 8, !tbaa !59
  %221 = add i32 %220, 1
  store i32 %221, ptr %219, align 8, !tbaa !59
  %222 = load ptr, ptr %218, align 8, !tbaa !38
  %223 = getelementptr inbounds i8, ptr %115, i64 80
  store ptr %222, ptr %223, align 8, !tbaa !44
  %224 = getelementptr inbounds i8, ptr %115, i64 72
  store ptr null, ptr %224, align 8, !tbaa !60
  %.not698 = icmp eq ptr %222, null
  br i1 %.not698, label %227, label %225

225:                                              ; preds = %207
  %226 = getelementptr inbounds i8, ptr %222, i64 24
  store ptr %177, ptr %226, align 8, !tbaa !61
  br label %227

227:                                              ; preds = %225, %207
  store ptr %177, ptr %218, align 8, !tbaa !38
  %228 = getelementptr inbounds i8, ptr %218, i64 12
  %229 = load i32, ptr %228, align 4, !tbaa !62
  %230 = mul i32 %229, 10
  %231 = add i32 %230, 10
  %.not699 = icmp ult i32 %221, %231
  br i1 %.not699, label %304, label %232

232:                                              ; preds = %227
  %233 = getelementptr inbounds i8, ptr %208, i64 52
  %234 = load i32, ptr %233, align 4, !tbaa !63
  %.not700 = icmp eq i32 %234, 0
  br i1 %.not700, label %235, label %304

235:                                              ; preds = %232
  %236 = zext i32 %213 to i64
  %237 = shl nuw nsw i64 %236, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %237)
  %.not701 = icmp eq ptr %calloc, null
  br i1 %.not701, label %238, label %239

238:                                              ; preds = %235
  tail call void @exit(i32 noundef -1) #13
  unreachable

239:                                              ; preds = %235
  %240 = load ptr, ptr %177, align 8, !tbaa !32
  %241 = getelementptr inbounds i8, ptr %240, i64 16
  %242 = load i32, ptr %241, align 8, !tbaa !58
  %243 = getelementptr inbounds i8, ptr %240, i64 12
  %244 = load i32, ptr %243, align 4, !tbaa !53
  %245 = add i32 %244, 1
  %246 = lshr i32 %242, %245
  %247 = getelementptr inbounds i8, ptr %240, i64 8
  %248 = load i32, ptr %247, align 8, !tbaa !35
  %249 = shl i32 %248, 1
  %250 = add i32 %249, -1
  %251 = and i32 %250, %242
  %.not702 = icmp ne i32 %251, 0
  %252 = zext i1 %.not702 to i32
  %253 = add i32 %246, %252
  %254 = getelementptr inbounds i8, ptr %240, i64 40
  store i32 %253, ptr %254, align 8, !tbaa !64
  %255 = getelementptr inbounds i8, ptr %240, i64 44
  store i32 0, ptr %255, align 4, !tbaa !65
  %.not802 = icmp eq i32 %248, 0
  %.pre807 = load ptr, ptr %240, align 8, !tbaa !37
  br i1 %.not802, label %._crit_edge764, label %.lr.ph763

.lr.ph763:                                        ; preds = %239
  %wide.trip.count = zext i32 %248 to i64
  br label %256

256:                                              ; preds = %.lr.ph763, %._crit_edge
  %257 = phi i32 [ 0, %.lr.ph763 ], [ %283, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.lr.ph763 ], [ %indvars.iv.next, %._crit_edge ]
  %258 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre807, i64 %indvars.iv
  %259 = load ptr, ptr %258, align 8, !tbaa !38
  %.not703758 = icmp eq ptr %259, null
  br i1 %.not703758, label %._crit_edge, label %.lr.ph760

.lr.ph760:                                        ; preds = %256, %282
  %260 = phi i32 [ %277, %282 ], [ %257, %256 ]
  %.0618759 = phi ptr [ %262, %282 ], [ %259, %256 ]
  %261 = getelementptr inbounds i8, ptr %.0618759, i64 32
  %262 = load ptr, ptr %261, align 8, !tbaa !66
  %263 = getelementptr inbounds i8, ptr %.0618759, i64 52
  %264 = load i32, ptr %263, align 4, !tbaa !67
  %265 = and i32 %264, %250
  %266 = zext i32 %265 to i64
  %267 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %266
  %268 = getelementptr inbounds i8, ptr %267, i64 8
  %269 = load i32, ptr %268, align 8, !tbaa !59
  %270 = add i32 %269, 1
  store i32 %270, ptr %268, align 8, !tbaa !59
  %271 = icmp ugt i32 %270, %253
  br i1 %271, label %272, label %276

272:                                              ; preds = %.lr.ph760
  %273 = add i32 %260, 1
  store i32 %273, ptr %255, align 4, !tbaa !65
  %274 = udiv i32 %270, %253
  %275 = getelementptr inbounds i8, ptr %267, i64 12
  store i32 %274, ptr %275, align 4, !tbaa !62
  br label %276

276:                                              ; preds = %272, %.lr.ph760
  %277 = phi i32 [ %273, %272 ], [ %260, %.lr.ph760 ]
  %278 = getelementptr inbounds i8, ptr %.0618759, i64 24
  store ptr null, ptr %278, align 8, !tbaa !61
  %279 = load ptr, ptr %267, align 8, !tbaa !38
  store ptr %279, ptr %261, align 8, !tbaa !66
  %.not704 = icmp eq ptr %279, null
  br i1 %.not704, label %282, label %280

280:                                              ; preds = %276
  %281 = getelementptr inbounds i8, ptr %279, i64 24
  store ptr %.0618759, ptr %281, align 8, !tbaa !61
  br label %282

282:                                              ; preds = %280, %276
  store ptr %.0618759, ptr %267, align 8, !tbaa !38
  %.not703 = icmp eq ptr %262, null
  br i1 %.not703, label %._crit_edge, label %.lr.ph760, !llvm.loop !68

._crit_edge:                                      ; preds = %282, %256
  %283 = phi i32 [ %257, %256 ], [ %277, %282 ]
  %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_edge764, label %256, !llvm.loop !69

._crit_edge764:                                   ; preds = %._crit_edge, %239
  tail call void @free(ptr noundef %.pre807) #11
  %284 = load ptr, ptr %177, align 8, !tbaa !32
  %285 = getelementptr inbounds i8, ptr %284, i64 8
  %286 = load i32, ptr %285, align 8, !tbaa !35
  %287 = shl i32 %286, 1
  store i32 %287, ptr %285, align 8, !tbaa !35
  %288 = getelementptr inbounds i8, ptr %284, i64 12
  %289 = load i32, ptr %288, align 4, !tbaa !53
  %290 = add i32 %289, 1
  store i32 %290, ptr %288, align 4, !tbaa !53
  store ptr %calloc, ptr %284, align 8, !tbaa !37
  %291 = getelementptr inbounds i8, ptr %284, i64 44
  %292 = load i32, ptr %291, align 4, !tbaa !65
  %293 = getelementptr inbounds i8, ptr %284, i64 16
  %294 = load i32, ptr %293, align 8, !tbaa !58
  %295 = lshr i32 %294, 1
  %296 = icmp ugt i32 %292, %295
  %297 = getelementptr inbounds i8, ptr %284, i64 48
  br i1 %296, label %298, label %.thread707

.thread707:                                       ; preds = %._crit_edge764
  store i32 0, ptr %297, align 8, !tbaa !70
  br label %304

298:                                              ; preds = %._crit_edge764
  %299 = load i32, ptr %297, align 8, !tbaa !70
  %300 = add i32 %299, 1
  store i32 %300, ptr %297, align 8, !tbaa !70
  %301 = icmp ugt i32 %300, 1
  br i1 %301, label %302, label %304

302:                                              ; preds = %298
  %303 = getelementptr inbounds i8, ptr %284, i64 52
  store i32 1, ptr %303, align 4, !tbaa !63
  br label %304

304:                                              ; preds = %.thread707, %227, %232, %298, %302, %106
  %.2 = phi ptr [ %.0766, %106 ], [ %.1, %302 ], [ %.1, %298 ], [ %.1, %232 ], [ %.1, %227 ], [ %.1, %.thread707 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  br label %305

305:                                              ; preds = %304, %19
  %.3 = phi ptr [ %.2, %304 ], [ %.0766, %19 ]
  %306 = add i16 %.0560765, 1
  %307 = zext i16 %306 to i64
  %308 = load i64, ptr %2, align 8, !tbaa !5
  %309 = icmp ugt i64 %308, %307
  br i1 %309, label %13, label %._crit_edge770, !llvm.loop !71

310:                                              ; preds = %._crit_edge770
  %311 = getelementptr inbounds i8, ptr %.3, i64 48
  %312 = getelementptr inbounds i8, ptr %.3, i64 48
  br label %.lr.ph786

.preheader:                                       ; preds = %400
  %313 = shl i32 %.0589791845, 1
  %.not678781 = icmp eq ptr %.2571.ph, null
  br i1 %.not678781, label %.thread827, label %.lr.ph786

.lr.ph786:                                        ; preds = %310, %.preheader
  %.0589791845 = phi i32 [ 1, %310 ], [ %313, %.preheader ]
  %.0569792844 = phi ptr [ %311, %310 ], [ %.2571.ph, %.preheader ]
  %.not803 = icmp eq i32 %.0589791845, 0
  br label %314

.loopexit:                                        ; preds = %324
  %.not678 = icmp eq ptr %.2576, null
  br i1 %.not678, label %._crit_edge787, label %314, !llvm.loop !72

314:                                              ; preds = %.lr.ph786, %.loopexit
  %.0567785 = phi ptr [ null, %.lr.ph786 ], [ %.1568, %.loopexit ]
  %.1570784 = phi ptr [ null, %.lr.ph786 ], [ %.2571.ph, %.loopexit ]
  %.0578783 = phi ptr [ %.0569792844, %.lr.ph786 ], [ %.2576, %.loopexit ]
  %.0590782 = phi i32 [ 0, %.lr.ph786 ], [ %315, %.loopexit ]
  %315 = add i32 %.0590782, 1
  br i1 %.not803, label %.thread708.preheader, label %.lr.ph775

.lr.ph775:                                        ; preds = %314, %319
  %.0574773 = phi ptr [ %323, %319 ], [ %.0578783, %314 ]
  %.0585772 = phi i32 [ %316, %319 ], [ 0, %314 ]
  %316 = add nuw i32 %.0585772, 1
  %317 = getelementptr inbounds i8, ptr %.0574773, i64 16
  %318 = load ptr, ptr %317, align 8, !tbaa !57
  %.not680 = icmp eq ptr %318, null
  br i1 %.not680, label %.thread708.preheader, label %319

319:                                              ; preds = %.lr.ph775
  %320 = load ptr, ptr %312, align 8, !tbaa !32
  %321 = getelementptr inbounds i8, ptr %320, i64 32
  %322 = load i64, ptr %321, align 8, !tbaa !40
  %323 = getelementptr inbounds i8, ptr %318, i64 %322
  %exitcond806.not = icmp eq i32 %316, %.0589791845
  br i1 %exitcond806.not, label %.thread708.preheader, label %.lr.ph775, !llvm.loop !73

.thread708.preheader:                             ; preds = %319, %.lr.ph775, %314
  %.2587.ph = phi i32 [ 0, %314 ], [ %316, %.lr.ph775 ], [ %.0589791845, %319 ]
  %.2576.ph = phi ptr [ %.0578783, %314 ], [ null, %.lr.ph775 ], [ %323, %319 ]
  br label %.thread708.outer

.thread708.outer:                                 ; preds = %.thread708.outer.backedge, %.thread708.preheader
  %.2587.ph846 = phi i32 [ %.2587.ph, %.thread708.preheader ], [ %.3588, %.thread708.outer.backedge ]
  %.0583.ph = phi i32 [ %.0589791845, %.thread708.preheader ], [ %.1584, %.thread708.outer.backedge ]
  %.1579.ph = phi ptr [ %.0578783, %.thread708.preheader ], [ %.4582, %.thread708.outer.backedge ]
  %.2576.ph847 = phi ptr [ %.2576.ph, %.thread708.preheader ], [ %.3577, %.thread708.outer.backedge ]
  %.2571.ph = phi ptr [ %.1570784, %.thread708.preheader ], [ %.2571.ph.be, %.thread708.outer.backedge ]
  %.1568.ph = phi ptr [ %.0567785, %.thread708.preheader ], [ %.0573, %.thread708.outer.backedge ]
  br label %.thread708

.thread708:                                       ; preds = %.thread708.outer, %.thread709.thread
  %.2587 = phi i32 [ %.3588, %.thread709.thread ], [ %.2587.ph846, %.thread708.outer ]
  %.0583 = phi i32 [ %.1584, %.thread709.thread ], [ %.0583.ph, %.thread708.outer ]
  %.1579 = phi ptr [ %.4582, %.thread709.thread ], [ %.1579.ph, %.thread708.outer ]
  %.2576 = phi ptr [ %.3577, %.thread709.thread ], [ %.2576.ph847, %.thread708.outer ]
  %.1568 = phi ptr [ %.0573, %.thread709.thread ], [ %.1568.ph, %.thread708.outer ]
  %cond = icmp eq i32 %.2587, 0
  br i1 %cond, label %324, label %338

324:                                              ; preds = %.thread708
  %325 = icmp ne i32 %.0583, 0
  %326 = icmp ne ptr %.2576, null
  %327 = select i1 %325, i1 %326, i1 false
  br i1 %327, label %.critedge, label %.loopexit

.critedge:                                        ; preds = %324
  %328 = getelementptr inbounds i8, ptr %.2576, i64 16
  %329 = load ptr, ptr %328, align 8, !tbaa !57
  %.not687 = icmp eq ptr %329, null
  br i1 %.not687, label %335, label %330

330:                                              ; preds = %.critedge
  %331 = load ptr, ptr %312, align 8, !tbaa !32
  %332 = getelementptr inbounds i8, ptr %331, i64 32
  %333 = load i64, ptr %332, align 8, !tbaa !40
  %334 = getelementptr inbounds i8, ptr %329, i64 %333
  br label %335

335:                                              ; preds = %.critedge, %330
  %336 = phi ptr [ %334, %330 ], [ null, %.critedge ]
  %337 = add i32 %.0583, -1
  br label %383

338:                                              ; preds = %.thread708
  %339 = icmp eq i32 %.0583, 0
  %340 = icmp eq ptr %.2576, null
  %or.cond = select i1 %339, i1 true, i1 %340
  br i1 %or.cond, label %341, label %352

341:                                              ; preds = %338
  %.not685 = icmp eq ptr %.1579, null
  br i1 %.not685, label %350, label %342

342:                                              ; preds = %341
  %343 = getelementptr inbounds i8, ptr %.1579, i64 16
  %344 = load ptr, ptr %343, align 8, !tbaa !57
  %.not686 = icmp eq ptr %344, null
  br i1 %.not686, label %350, label %345

345:                                              ; preds = %342
  %346 = load ptr, ptr %312, align 8, !tbaa !32
  %347 = getelementptr inbounds i8, ptr %346, i64 32
  %348 = load i64, ptr %347, align 8, !tbaa !40
  %349 = getelementptr inbounds i8, ptr %344, i64 %348
  br label %350

350:                                              ; preds = %345, %342, %341
  %.2580 = phi ptr [ null, %341 ], [ %349, %345 ], [ null, %342 ]
  %351 = add i32 %.2587, -1
  br label %383

352:                                              ; preds = %338
  %353 = load ptr, ptr %312, align 8, !tbaa !32
  %354 = getelementptr inbounds i8, ptr %353, i64 32
  %355 = load i64, ptr %354, align 8, !tbaa !40
  %356 = sub i64 0, %355
  %357 = getelementptr inbounds i8, ptr %.1579, i64 %356
  %358 = getelementptr inbounds i8, ptr %.2576, i64 %356
  %359 = tail call i32 @gpos_by_from_id(ptr noundef %357, ptr noundef %358)
  %360 = icmp slt i32 %359, 1
  br i1 %360, label %361, label %372

361:                                              ; preds = %352
  %.not683 = icmp eq ptr %.1579, null
  br i1 %.not683, label %370, label %362

362:                                              ; preds = %361
  %363 = getelementptr inbounds i8, ptr %.1579, i64 16
  %364 = load ptr, ptr %363, align 8, !tbaa !57
  %.not684 = icmp eq ptr %364, null
  br i1 %.not684, label %370, label %365

365:                                              ; preds = %362
  %366 = load ptr, ptr %312, align 8, !tbaa !32
  %367 = getelementptr inbounds i8, ptr %366, i64 32
  %368 = load i64, ptr %367, align 8, !tbaa !40
  %369 = getelementptr inbounds i8, ptr %364, i64 %368
  br label %370

370:                                              ; preds = %365, %362, %361
  %.3581 = phi ptr [ null, %361 ], [ %369, %365 ], [ null, %362 ]
  %371 = add i32 %.2587, -1
  br label %383

372:                                              ; preds = %352
  %373 = getelementptr inbounds i8, ptr %.2576, i64 16
  %374 = load ptr, ptr %373, align 8, !tbaa !57
  %.not682 = icmp eq ptr %374, null
  br i1 %.not682, label %380, label %375

375:                                              ; preds = %372
  %376 = load ptr, ptr %312, align 8, !tbaa !32
  %377 = getelementptr inbounds i8, ptr %376, i64 32
  %378 = load i64, ptr %377, align 8, !tbaa !40
  %379 = getelementptr inbounds i8, ptr %374, i64 %378
  br label %380

380:                                              ; preds = %372, %375
  %381 = phi ptr [ %379, %375 ], [ null, %372 ]
  %382 = add i32 %.0583, -1
  br label %383

383:                                              ; preds = %350, %380, %370, %335
  %.3588 = phi i32 [ 0, %335 ], [ %351, %350 ], [ %371, %370 ], [ %.2587, %380 ]
  %.1584 = phi i32 [ %337, %335 ], [ %.0583, %350 ], [ %.0583, %370 ], [ %382, %380 ]
  %.4582 = phi ptr [ %.1579, %335 ], [ %.2580, %350 ], [ %.3581, %370 ], [ %.1579, %380 ]
  %.3577 = phi ptr [ %336, %335 ], [ %.2576, %350 ], [ %.2576, %370 ], [ %381, %380 ]
  %.0573 = phi ptr [ %.2576, %335 ], [ %.1579, %350 ], [ %.1579, %370 ], [ %.2576, %380 ]
  %.not688 = icmp eq ptr %.1568, null
  %.not690 = icmp eq ptr %.0573, null
  br i1 %.not688, label %386, label %384

384:                                              ; preds = %383
  br i1 %.not690, label %.thread709.thread, label %387

.thread709.thread:                                ; preds = %384
  %385 = getelementptr inbounds i8, ptr %.1568, i64 16
  store ptr null, ptr %385, align 8, !tbaa !57
  br label %.thread708, !llvm.loop !74

386:                                              ; preds = %383
  br i1 %.not690, label %.thread708.outer.backedge, label %395

387:                                              ; preds = %384
  %388 = load ptr, ptr %312, align 8, !tbaa !32
  %389 = getelementptr inbounds i8, ptr %388, i64 32
  %390 = load i64, ptr %389, align 8, !tbaa !40
  %391 = sub i64 0, %390
  %392 = getelementptr inbounds i8, ptr %.0573, i64 %391
  %393 = getelementptr inbounds i8, ptr %.1568, i64 16
  store ptr %392, ptr %393, align 8, !tbaa !57
  %394 = getelementptr inbounds i8, ptr %.1568, i64 %391
  br label %395

395:                                              ; preds = %386, %387
  %.3572712717 = phi ptr [ %.2571.ph, %387 ], [ %.0573, %386 ]
  %396 = phi ptr [ %394, %387 ], [ null, %386 ]
  %397 = getelementptr inbounds i8, ptr %.0573, i64 8
  store ptr %396, ptr %397, align 8, !tbaa !75
  br label %.thread708.outer.backedge

.thread708.outer.backedge:                        ; preds = %395, %386
  %.2571.ph.be = phi ptr [ null, %386 ], [ %.3572712717, %395 ]
  br label %.thread708.outer, !llvm.loop !74

._crit_edge787:                                   ; preds = %.loopexit
  %.not679 = icmp eq ptr %.1568, null
  br i1 %.not679, label %400, label %398

398:                                              ; preds = %._crit_edge787
  %399 = getelementptr inbounds i8, ptr %.1568, i64 16
  store ptr null, ptr %399, align 8, !tbaa !57
  br label %400

400:                                              ; preds = %398, %._crit_edge787
  %.0567.lcssa826 = phi ptr [ %.1568, %398 ], [ null, %._crit_edge787 ]
  %401 = icmp ult i32 %315, 2
  br i1 %401, label %.thread827, label %.preheader

.thread827:                                       ; preds = %.preheader, %400
  %.1570.lcssa825832 = phi ptr [ %.2571.ph, %400 ], [ null, %.preheader ]
  %.0567.lcssa826831 = phi ptr [ %.0567.lcssa826, %400 ], [ null, %.preheader ]
  %402 = getelementptr inbounds i8, ptr %.3, i64 48
  %403 = load ptr, ptr %402, align 8, !tbaa !32
  %404 = getelementptr inbounds i8, ptr %403, i64 24
  store ptr %.0567.lcssa826831, ptr %404, align 8, !tbaa !52
  %405 = getelementptr inbounds i8, ptr %403, i64 32
  %406 = load i64, ptr %405, align 8, !tbaa !40
  %407 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gpos_single, i64 96), align 8, !tbaa !13
  tail call void %407(ptr noundef nonnull %2) #11
  %.not671 = icmp eq ptr %.1570.lcssa825832, null
  br i1 %.not671, label %._crit_edge800, label %.lr.ph799

.lr.ph799:                                        ; preds = %.thread827
  %408 = sub i64 0, %406
  %409 = getelementptr inbounds i8, ptr %.1570.lcssa825832, i64 %408
  %410 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gpos_single, i64 104), align 8, !tbaa !76
  %411 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 80), align 8, !tbaa !77
  %412 = getelementptr inbounds i8, ptr %6, i64 8
  %413 = getelementptr inbounds i8, ptr %6, i64 16
  br label %414

414:                                              ; preds = %489, %.lr.ph799
  %.7797 = phi ptr [ %409, %.lr.ph799 ], [ %.9, %489 ]
  %.0566795 = phi ptr [ %409, %.lr.ph799 ], [ %.0565796, %489 ]
  %.0565796.in = getelementptr inbounds i8, ptr %.0566795, i64 64
  %.0565796 = load ptr, ptr %.0565796.in, align 8, !tbaa !55
  %415 = load i32, ptr %.0566795, align 8, !tbaa !47
  %416 = trunc i32 %415 to i16
  %417 = getelementptr inbounds i8, ptr %.0566795, i64 8
  %418 = load ptr, ptr %417, align 8, !tbaa !48
  %419 = tail call { i64, ptr } %411(i16 noundef zeroext %416, ptr noundef %418) #11
  %420 = extractvalue { i64, ptr } %419, 0
  store i64 %420, ptr %6, align 8
  %421 = extractvalue { i64, ptr } %419, 1
  store ptr %421, ptr %412, align 8
  %422 = getelementptr inbounds i8, ptr %.0566795, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef nonnull align 8 dereferenceable(32) %422, i64 32, i1 false), !tbaa.struct !49
  tail call void %410(ptr noundef nonnull %2, ptr noundef nonnull byval(%struct.otl_GposSingleEntry) align 8 %6) #11
  %423 = load ptr, ptr %417, align 8, !tbaa !48
  tail call void @sdsfree(ptr noundef %423) #11
  %424 = getelementptr inbounds i8, ptr %.0566795, i64 48
  %425 = getelementptr inbounds i8, ptr %.0566795, i64 56
  %426 = load ptr, ptr %425, align 8, !tbaa !75
  %427 = icmp eq ptr %426, null
  br i1 %427, label %428, label %437

428:                                              ; preds = %414
  %429 = getelementptr inbounds i8, ptr %.0566795, i64 64
  %430 = load ptr, ptr %429, align 8, !tbaa !57
  %431 = icmp eq ptr %430, null
  br i1 %431, label %432, label %437

432:                                              ; preds = %428
  %433 = getelementptr inbounds i8, ptr %.7797, i64 48
  %434 = load ptr, ptr %433, align 8, !tbaa !32
  %435 = load ptr, ptr %434, align 8, !tbaa !37
  tail call void @free(ptr noundef %435) #11
  %436 = load ptr, ptr %433, align 8, !tbaa !32
  tail call void @free(ptr noundef %436) #11
  br label %489

437:                                              ; preds = %428, %414
  %438 = getelementptr inbounds i8, ptr %.7797, i64 48
  %439 = load ptr, ptr %438, align 8, !tbaa !32
  %440 = getelementptr inbounds i8, ptr %439, i64 24
  %441 = load ptr, ptr %440, align 8, !tbaa !52
  %442 = icmp eq ptr %424, %441
  br i1 %442, label %443, label %447

443:                                              ; preds = %437
  %444 = getelementptr inbounds i8, ptr %439, i64 32
  %445 = load i64, ptr %444, align 8, !tbaa !40
  %446 = getelementptr inbounds i8, ptr %426, i64 %445
  store ptr %446, ptr %440, align 8, !tbaa !52
  br label %447

447:                                              ; preds = %443, %437
  %448 = getelementptr inbounds i8, ptr %.0566795, i64 64
  %449 = load ptr, ptr %448, align 8, !tbaa !57
  br i1 %427, label %455, label %450

450:                                              ; preds = %447
  %451 = getelementptr inbounds i8, ptr %439, i64 32
  %452 = load i64, ptr %451, align 8, !tbaa !40
  %453 = getelementptr inbounds i8, ptr %426, i64 %452
  %454 = getelementptr inbounds i8, ptr %453, i64 16
  store ptr %449, ptr %454, align 8, !tbaa !57
  br label %455

455:                                              ; preds = %447, %450
  %.8 = phi ptr [ %.7797, %450 ], [ %449, %447 ]
  %.not674 = icmp eq ptr %449, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.8, i64 48
  %.pre809 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !32
  br i1 %.not674, label %._crit_edge808, label %456

456:                                              ; preds = %455
  %457 = getelementptr inbounds i8, ptr %.pre809, i64 32
  %458 = load i64, ptr %457, align 8, !tbaa !40
  %459 = getelementptr inbounds i8, ptr %449, i64 %458
  %460 = getelementptr inbounds i8, ptr %459, i64 8
  store ptr %426, ptr %460, align 8, !tbaa !75
  br label %._crit_edge808

._crit_edge808:                                   ; preds = %455, %456
  %461 = getelementptr inbounds i8, ptr %.0566795, i64 100
  %462 = load i32, ptr %461, align 4, !tbaa !67
  %463 = getelementptr inbounds i8, ptr %.pre809, i64 8
  %464 = load i32, ptr %463, align 8, !tbaa !35
  %465 = add i32 %464, -1
  %466 = and i32 %465, %462
  %467 = load ptr, ptr %.pre809, align 8, !tbaa !37
  %468 = zext i32 %466 to i64
  %469 = getelementptr inbounds %struct.UT_hash_bucket, ptr %467, i64 %468
  %470 = getelementptr inbounds i8, ptr %469, i64 8
  %471 = load i32, ptr %470, align 8, !tbaa !59
  %472 = add i32 %471, -1
  store i32 %472, ptr %470, align 8, !tbaa !59
  %473 = load ptr, ptr %469, align 8, !tbaa !38
  %474 = icmp eq ptr %473, %424
  br i1 %474, label %475, label %478

475:                                              ; preds = %._crit_edge808
  %476 = getelementptr inbounds i8, ptr %.0566795, i64 80
  %477 = load ptr, ptr %476, align 8, !tbaa !66
  store ptr %477, ptr %469, align 8, !tbaa !38
  br label %478

478:                                              ; preds = %475, %._crit_edge808
  %479 = getelementptr inbounds i8, ptr %.0566795, i64 72
  %480 = load ptr, ptr %479, align 8, !tbaa !61
  %.not675 = icmp eq ptr %480, null
  %.phi.trans.insert811 = getelementptr inbounds i8, ptr %.0566795, i64 80
  %.pre812 = load ptr, ptr %.phi.trans.insert811, align 8, !tbaa !66
  br i1 %.not675, label %._crit_edge810, label %481

481:                                              ; preds = %478
  %482 = getelementptr inbounds i8, ptr %480, i64 32
  store ptr %.pre812, ptr %482, align 8, !tbaa !66
  br label %._crit_edge810

._crit_edge810:                                   ; preds = %478, %481
  %.not676 = icmp eq ptr %.pre812, null
  br i1 %.not676, label %485, label %483

483:                                              ; preds = %._crit_edge810
  %484 = getelementptr inbounds i8, ptr %.pre812, i64 24
  store ptr %480, ptr %484, align 8, !tbaa !61
  br label %485

485:                                              ; preds = %483, %._crit_edge810
  %486 = getelementptr inbounds i8, ptr %.pre809, i64 16
  %487 = load i32, ptr %486, align 8, !tbaa !58
  %488 = add i32 %487, -1
  store i32 %488, ptr %486, align 8, !tbaa !58
  br label %489

489:                                              ; preds = %485, %432
  %.9 = phi ptr [ null, %432 ], [ %.8, %485 ]
  tail call void @free(ptr noundef nonnull %.0566795) #11
  %.not677 = icmp eq ptr %.0565796, null
  br i1 %.not677, label %._crit_edge800, label %414, !llvm.loop !79

._crit_edge800:                                   ; preds = %489, %.thread718, %.thread827
  %490 = load i64, ptr %2, align 8, !tbaa !5
  %491 = icmp eq i64 %490, 0
  ret i1 %491
}

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

declare ptr @sdscatprintf(ptr noundef, ptr noundef, ...) local_unnamed_addr #2

declare ptr @sdsempty() local_unnamed_addr #2

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

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

declare ptr @sdsdup(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

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

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

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

declare void @sdsfree(ptr noundef) local_unnamed_addr #2

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

; 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 #10

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { 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 #9 = { nofree nounwind willreturn memory(argmem: read) }
attributes #10 = { nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #11 = { nounwind }
attributes #12 = { nounwind allocsize(0) }
attributes #13 = { 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 = !{!12, !10, i64 88}
!12 = !{!"otfcc_GlyphOrderPackage", !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}
!13 = !{!14, !10, i64 96}
!14 = !{!"__caryll_vectorinterface_subtable_gpos_single", !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, !10, i64 128, !10, i64 136, !10, i64 144}
!15 = !{!16, !10, i64 264}
!16 = !{!"_caryll_font", !17, 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, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264}
!17 = !{!"int", !8, i64 0}
!18 = !{!6, !10, i64 16}
!19 = !{!20, !10, i64 32}
!20 = !{!"", !21, i64 0, !21, i64 1, !21, i64 2, !21, i64 3, !21, i64 4, !21, i64 5, !21, i64 6, !21, i64 7, !21, i64 8, !21, i64 9, !21, i64 10, !21, i64 11, !21, i64 12, !21, i64 13, !21, i64 14, !21, i64 15, !21, i64 16, !21, i64 17, !21, i64 18, !21, i64 19, !21, i64 20, !21, i64 21, !21, i64 22, !10, i64 24, !10, i64 32}
!21 = !{!"_Bool", !8, i64 0}
!22 = !{!23, !10, i64 48}
!23 = !{!"otfcc_ILogger", !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}
!24 = !{!25, !10, i64 8}
!25 = !{!"", !26, i64 0, !28, i64 16}
!26 = !{!"otfcc_Handle", !17, i64 0, !27, i64 4, !10, i64 8}
!27 = !{!"short", !8, i64 0}
!28 = !{!"", !29, i64 0, !29, i64 8, !29, i64 16, !29, i64 24}
!29 = !{!"double", !8, i64 0}
!30 = !{!25, !27, i64 4}
!31 = !{!17, !17, i64 0}
!32 = !{!33, !10, i64 48}
!33 = !{!"", !17, i64 0, !10, i64 8, !28, i64 16, !34, i64 48}
!34 = !{!"UT_hash_handle", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !17, i64 48, !17, i64 52}
!35 = !{!36, !17, i64 8}
!36 = !{!"UT_hash_table", !10, i64 0, !17, i64 8, !17, i64 12, !17, i64 16, !10, i64 24, !7, i64 32, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56}
!37 = !{!36, !10, i64 0}
!38 = !{!39, !10, i64 0}
!39 = !{!"UT_hash_bucket", !10, i64 0, !17, i64 8, !17, i64 12}
!40 = !{!36, !7, i64 32}
!41 = !{!33, !17, i64 100}
!42 = !{!33, !17, i64 96}
!43 = !{!33, !10, i64 88}
!44 = !{!33, !10, i64 80}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = !{!33, !17, i64 0}
!48 = !{!33, !10, i64 8}
!49 = !{i64 0, i64 8, !50, i64 8, i64 8, !50, i64 16, i64 8, !50, i64 24, i64 8, !50}
!50 = !{!29, !29, i64 0}
!51 = !{!8, !8, i64 0}
!52 = !{!36, !10, i64 24}
!53 = !{!36, !17, i64 12}
!54 = !{!36, !17, i64 56}
!55 = !{!33, !10, i64 64}
!56 = !{!33, !10, i64 56}
!57 = !{!34, !10, i64 16}
!58 = !{!36, !17, i64 16}
!59 = !{!39, !17, i64 8}
!60 = !{!33, !10, i64 72}
!61 = !{!34, !10, i64 24}
!62 = !{!39, !17, i64 12}
!63 = !{!36, !17, i64 52}
!64 = !{!36, !17, i64 40}
!65 = !{!36, !17, i64 44}
!66 = !{!34, !10, i64 32}
!67 = !{!34, !17, i64 52}
!68 = distinct !{!68, !46}
!69 = distinct !{!69, !46}
!70 = !{!36, !17, i64 48}
!71 = distinct !{!71, !46}
!72 = distinct !{!72, !46}
!73 = distinct !{!73, !46}
!74 = distinct !{!74, !46}
!75 = !{!34, !10, i64 8}
!76 = !{!14, !10, i64 104}
!77 = !{!78, !10, i64 80}
!78 = !{!"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}
!79 = distinct !{!79, !46}


; 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