; LLVM IR from caryll/otfcc :: lib/table/otl/subtables (gpos-pair)

; 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.__caryll_elementinterface_subtable_gpos_pair = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_IClassDef = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_PositionValue = type { double, double, double, double }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.subtable_gpos_pair = type { ptr, ptr, ptr, ptr }
%struct.otl_Coverage = type { i16, i32, ptr }
%struct.otl_ClassDef = type { i16, i32, i16, ptr, ptr }
%struct.pair_classifier_hash = type { i32, i32, %struct.UT_hash_handle }
%struct.UT_hash_handle = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.UT_hash_table = type { ptr, i32, i32, i32, ptr, i64, i32, i32, i32, i32, i32 }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@iSubtable_gpos_pair = external dso_local constant %struct.__caryll_elementinterface_subtable_gpos_pair, align 8
@otl_iCoverage = external constant %struct.__otfcc_ICoverage, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8
@otl_iClassDef = external constant %struct.__otfcc_IClassDef, align 8

; Function Attrs: nounwind uwtable
define dso_local ptr @otl_read_gpos_pair(ptr noundef %0, i32 noundef %1, i32 noundef %2, i16 noundef zeroext %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i16, align 2
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i16, align 2
  %14 = alloca ptr, align 8
  %15 = alloca i16, align 2
  %16 = alloca i16, align 2
  %17 = alloca i16, align 2
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i16, align 2
  %21 = alloca i16, align 2
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i16, align 2
  %25 = alloca ptr, align 8
  %26 = alloca i16, align 2
  %27 = alloca i32, align 4
  %28 = alloca i16, align 2
  %29 = alloca i16, align 2
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i16, align 2
  %52 = alloca i16, align 2
  %53 = alloca i16, align 2
  %54 = alloca %struct.otl_PositionValue, align 8
  %55 = alloca %struct.otl_PositionValue, align 8
  %56 = alloca i16, align 2
  %57 = alloca i32, align 4
  %58 = alloca i16, align 2
  %59 = alloca i16, align 2
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca %struct.otl_PositionValue, align 8
  %69 = alloca %struct.otl_PositionValue, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i16, align 2
  %73 = alloca %struct.otfcc_Handle, align 8
  %74 = alloca ptr, align 8
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca i16, align 2
  %78 = alloca i16, align 2
  %79 = alloca i8, align 1
  %80 = alloca i8, align 1
  %81 = alloca ptr, align 8
  %82 = alloca i16, align 2
  %83 = alloca i16, align 2
  %84 = alloca i16, align 2
  %85 = alloca i16, align 2
  %86 = alloca %struct.otl_PositionValue, align 8
  %87 = alloca %struct.otl_PositionValue, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !9
  store i32 %2, ptr %9, align 4, !tbaa !9
  store i16 %3, ptr %10, align 2, !tbaa !11
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %88 = load ptr, ptr getelementptr inbounds (%struct.__caryll_elementinterface_subtable_gpos_pair, ptr @iSubtable_gpos_pair, i32 0, i32 6), align 8, !tbaa !13
  %89 = call ptr (...) %88()
  store ptr %89, ptr %12, align 8, !tbaa !5
  %90 = load i32, ptr %8, align 4, !tbaa !9
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = add i32 %91, 2
  %93 = icmp ult i32 %90, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %5
  br label %2957

95:                                               ; preds = %5
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = load i32, ptr %9, align 4, !tbaa !9
  %98 = zext i32 %97 to i64
  %99 = getelementptr inbounds i8, ptr %96, i64 %98
  %100 = call zeroext i16 @read_16u(ptr noundef %99)
  store i16 %100, ptr %13, align 2, !tbaa !11
  %101 = load i16, ptr %13, align 2, !tbaa !11
  %102 = zext i16 %101 to i32
  %103 = icmp eq i32 %102, 1
  br i1 %103, label %104, label %2687

104:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %105 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 9), align 8, !tbaa !15
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = load i32, ptr %8, align 4, !tbaa !9
  %108 = load i32, ptr %9, align 4, !tbaa !9
  %109 = load ptr, ptr %7, align 8, !tbaa !5
  %110 = load i32, ptr %9, align 4, !tbaa !9
  %111 = zext i32 %110 to i64
  %112 = getelementptr inbounds i8, ptr %109, i64 %111
  %113 = getelementptr inbounds i8, ptr %112, i64 2
  %114 = call zeroext i16 @read_16u(ptr noundef %113)
  %115 = zext i16 %114 to i32
  %116 = add i32 %108, %115
  %117 = call ptr %105(ptr noundef %106, i32 noundef %107, i32 noundef %116)
  store ptr %117, ptr %14, align 8, !tbaa !5
  %118 = call ptr @__caryll_allocate_clean(i64 noundef 32, i64 noundef 45)
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %119, i32 0, i32 0
  store ptr %118, ptr %120, align 8, !tbaa !17
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.otl_Coverage, ptr %121, i32 0, i32 0
  %123 = load i16, ptr %122, align 8, !tbaa !19
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %124, i32 0, i32 0
  %126 = load ptr, ptr %125, align 8, !tbaa !17
  %127 = getelementptr inbounds %struct.otl_ClassDef, ptr %126, i32 0, i32 0
  store i16 %123, ptr %127, align 8, !tbaa !21
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.otl_Coverage, ptr %128, i32 0, i32 0
  %130 = load i16, ptr %129, align 8, !tbaa !19
  %131 = zext i16 %130 to i32
  %132 = sub nsw i32 %131, 1
  %133 = trunc i32 %132 to i16
  %134 = load ptr, ptr %12, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %134, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8, !tbaa !17
  %137 = getelementptr inbounds %struct.otl_ClassDef, ptr %136, i32 0, i32 2
  store i16 %133, ptr %137, align 8, !tbaa !23
  %138 = load ptr, ptr %14, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.otl_Coverage, ptr %138, i32 0, i32 2
  %140 = load ptr, ptr %139, align 8, !tbaa !24
  %141 = load ptr, ptr %12, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %141, i32 0, i32 0
  %143 = load ptr, ptr %142, align 8, !tbaa !17
  %144 = getelementptr inbounds %struct.otl_ClassDef, ptr %143, i32 0, i32 3
  store ptr %140, ptr %144, align 8, !tbaa !25
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.otl_Coverage, ptr %145, i32 0, i32 0
  %147 = load i16, ptr %146, align 8, !tbaa !19
  %148 = zext i16 %147 to i64
  %149 = mul i64 2, %148
  %150 = call ptr @__caryll_allocate_clean(i64 noundef %149, i64 noundef 49)
  %151 = load ptr, ptr %12, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %151, i32 0, i32 0
  %153 = load ptr, ptr %152, align 8, !tbaa !17
  %154 = getelementptr inbounds %struct.otl_ClassDef, ptr %153, i32 0, i32 4
  store ptr %150, ptr %154, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 2, ptr %15) #10
  store i16 0, ptr %15, align 2, !tbaa !11
  br label %155

155:                                              ; preds = %174, %104
  %156 = load i16, ptr %15, align 2, !tbaa !11
  %157 = zext i16 %156 to i32
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.otl_Coverage, ptr %158, i32 0, i32 0
  %160 = load i16, ptr %159, align 8, !tbaa !19
  %161 = zext i16 %160 to i32
  %162 = icmp slt i32 %157, %161
  br i1 %162, label %164, label %163

163:                                              ; preds = %155
  call void @llvm.lifetime.end.p0(i64 2, ptr %15) #10
  br label %177

164:                                              ; preds = %155
  %165 = load i16, ptr %15, align 2, !tbaa !11
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %166, i32 0, i32 0
  %168 = load ptr, ptr %167, align 8, !tbaa !17
  %169 = getelementptr inbounds %struct.otl_ClassDef, ptr %168, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !26
  %171 = load i16, ptr %15, align 2, !tbaa !11
  %172 = zext i16 %171 to i64
  %173 = getelementptr inbounds i16, ptr %170, i64 %172
  store i16 %165, ptr %173, align 2, !tbaa !11
  br label %174

174:                                              ; preds = %164
  %175 = load i16, ptr %15, align 2, !tbaa !11
  %176 = add i16 %175, 1
  store i16 %176, ptr %15, align 2, !tbaa !11
  br label %155, !llvm.loop !27

177:                                              ; preds = %163
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  call void @free(ptr noundef %178) #10
  store ptr null, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %16) #10
  %179 = load ptr, ptr %7, align 8, !tbaa !5
  %180 = load i32, ptr %9, align 4, !tbaa !9
  %181 = zext i32 %180 to i64
  %182 = getelementptr inbounds i8, ptr %179, i64 %181
  %183 = getelementptr inbounds i8, ptr %182, i64 4
  %184 = call zeroext i16 @read_16u(ptr noundef %183)
  store i16 %184, ptr %16, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %17) #10
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = load i32, ptr %9, align 4, !tbaa !9
  %187 = zext i32 %186 to i64
  %188 = getelementptr inbounds i8, ptr %185, i64 %187
  %189 = getelementptr inbounds i8, ptr %188, i64 6
  %190 = call zeroext i16 @read_16u(ptr noundef %189)
  store i16 %190, ptr %17, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  %191 = load i16, ptr %16, align 2, !tbaa !11
  %192 = call zeroext i8 @position_format_length(i16 noundef zeroext %191)
  store i8 %192, ptr %18, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  %193 = load i16, ptr %17, align 2, !tbaa !11
  %194 = call zeroext i8 @position_format_length(i16 noundef zeroext %193)
  store i8 %194, ptr %19, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 2, ptr %20) #10
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = load i32, ptr %9, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds i8, ptr %195, i64 %197
  %199 = getelementptr inbounds i8, ptr %198, i64 8
  %200 = call zeroext i16 @read_16u(ptr noundef %199)
  store i16 %200, ptr %20, align 2, !tbaa !11
  %201 = load i16, ptr %20, align 2, !tbaa !11
  %202 = zext i16 %201 to i32
  %203 = load ptr, ptr %12, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %203, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8, !tbaa !17
  %206 = getelementptr inbounds %struct.otl_ClassDef, ptr %205, i32 0, i32 0
  %207 = load i16, ptr %206, align 8, !tbaa !21
  %208 = zext i16 %207 to i32
  %209 = icmp ne i32 %202, %208
  br i1 %209, label %210, label %211

210:                                              ; preds = %177
  store i32 2, ptr %22, align 4
  br label %2685

211:                                              ; preds = %177
  %212 = load i32, ptr %8, align 4, !tbaa !9
  %213 = load i32, ptr %9, align 4, !tbaa !9
  %214 = add i32 %213, 10
  %215 = load i16, ptr %20, align 2, !tbaa !11
  %216 = zext i16 %215 to i32
  %217 = mul nsw i32 2, %216
  %218 = add i32 %214, %217
  %219 = icmp ult i32 %212, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %211
  store i32 2, ptr %22, align 4
  br label %2685

221:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 2, ptr %21) #10
  store i16 0, ptr %21, align 2, !tbaa !11
  br label %222

222:                                              ; preds = %275, %221
  %223 = load i16, ptr %21, align 2, !tbaa !11
  %224 = zext i16 %223 to i32
  %225 = load i16, ptr %20, align 2, !tbaa !11
  %226 = zext i16 %225 to i32
  %227 = icmp slt i32 %224, %226
  br i1 %227, label %229, label %228

228:                                              ; preds = %222
  store i32 6, ptr %22, align 4
  br label %278

229:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  %230 = load i32, ptr %9, align 4, !tbaa !9
  %231 = load ptr, ptr %7, align 8, !tbaa !5
  %232 = load i32, ptr %9, align 4, !tbaa !9
  %233 = zext i32 %232 to i64
  %234 = getelementptr inbounds i8, ptr %231, i64 %233
  %235 = getelementptr inbounds i8, ptr %234, i64 10
  %236 = load i16, ptr %21, align 2, !tbaa !11
  %237 = zext i16 %236 to i32
  %238 = mul nsw i32 2, %237
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds i8, ptr %235, i64 %239
  %241 = call zeroext i16 @read_16u(ptr noundef %240)
  %242 = zext i16 %241 to i32
  %243 = add i32 %230, %242
  store i32 %243, ptr %23, align 4, !tbaa !9
  %244 = load i32, ptr %8, align 4, !tbaa !9
  %245 = load i32, ptr %23, align 4, !tbaa !9
  %246 = add i32 %245, 2
  %247 = icmp ult i32 %244, %246
  br i1 %247, label %248, label %249

248:                                              ; preds = %229
  store i32 2, ptr %22, align 4
  br label %272

249:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 2, ptr %24) #10
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = load i32, ptr %23, align 4, !tbaa !9
  %252 = zext i32 %251 to i64
  %253 = getelementptr inbounds i8, ptr %250, i64 %252
  %254 = call zeroext i16 @read_16u(ptr noundef %253)
  store i16 %254, ptr %24, align 2, !tbaa !11
  %255 = load i32, ptr %8, align 4, !tbaa !9
  %256 = load i32, ptr %23, align 4, !tbaa !9
  %257 = add i32 %256, 2
  %258 = load i8, ptr %18, align 1, !tbaa !29
  %259 = zext i8 %258 to i32
  %260 = add nsw i32 2, %259
  %261 = load i8, ptr %19, align 1, !tbaa !29
  %262 = zext i8 %261 to i32
  %263 = add nsw i32 %260, %262
  %264 = load i16, ptr %24, align 2, !tbaa !11
  %265 = zext i16 %264 to i32
  %266 = mul nsw i32 %263, %265
  %267 = add i32 %257, %266
  %268 = icmp ult i32 %255, %267
  br i1 %268, label %269, label %270

269:                                              ; preds = %249
  store i32 2, ptr %22, align 4
  br label %271

270:                                              ; preds = %249
  store i32 0, ptr %22, align 4
  br label %271

271:                                              ; preds = %270, %269
  call void @llvm.lifetime.end.p0(i64 2, ptr %24) #10
  br label %272

272:                                              ; preds = %271, %248
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  %273 = load i32, ptr %22, align 4
  switch i32 %273, label %278 [
    i32 0, label %274
  ]

274:                                              ; preds = %272
  br label %275

275:                                              ; preds = %274
  %276 = load i16, ptr %21, align 2, !tbaa !11
  %277 = add i16 %276, 1
  store i16 %277, ptr %21, align 2, !tbaa !11
  br label %222, !llvm.loop !30

278:                                              ; preds = %272, %228
  call void @llvm.lifetime.end.p0(i64 2, ptr %21) #10
  %279 = load i32, ptr %22, align 4
  switch i32 %279, label %2685 [
    i32 6, label %280
  ]

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store ptr null, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %26) #10
  store i16 0, ptr %26, align 2, !tbaa !11
  br label %281

281:                                              ; preds = %1680, %280
  %282 = load i16, ptr %26, align 2, !tbaa !11
  %283 = zext i16 %282 to i32
  %284 = load i16, ptr %20, align 2, !tbaa !11
  %285 = zext i16 %284 to i32
  %286 = icmp slt i32 %283, %285
  br i1 %286, label %288, label %287

287:                                              ; preds = %281
  store i32 9, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %26) #10
  br label %1683

288:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %289 = load i32, ptr %9, align 4, !tbaa !9
  %290 = load ptr, ptr %7, align 8, !tbaa !5
  %291 = load i32, ptr %9, align 4, !tbaa !9
  %292 = zext i32 %291 to i64
  %293 = getelementptr inbounds i8, ptr %290, i64 %292
  %294 = getelementptr inbounds i8, ptr %293, i64 10
  %295 = load i16, ptr %26, align 2, !tbaa !11
  %296 = zext i16 %295 to i32
  %297 = mul nsw i32 2, %296
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i8, ptr %294, i64 %298
  %300 = call zeroext i16 @read_16u(ptr noundef %299)
  %301 = zext i16 %300 to i32
  %302 = add i32 %289, %301
  store i32 %302, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %28) #10
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = load i32, ptr %27, align 4, !tbaa !9
  %305 = zext i32 %304 to i64
  %306 = getelementptr inbounds i8, ptr %303, i64 %305
  %307 = call zeroext i16 @read_16u(ptr noundef %306)
  store i16 %307, ptr %28, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %29) #10
  store i16 0, ptr %29, align 2, !tbaa !11
  br label %308

308:                                              ; preds = %1676, %288
  %309 = load i16, ptr %29, align 2, !tbaa !11
  %310 = zext i16 %309 to i32
  %311 = load i16, ptr %28, align 2, !tbaa !11
  %312 = zext i16 %311 to i32
  %313 = icmp slt i32 %310, %312
  br i1 %313, label %315, label %314

314:                                              ; preds = %308
  store i32 12, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %29) #10
  br label %1679

315:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %316 = load ptr, ptr %7, align 8, !tbaa !5
  %317 = load i32, ptr %27, align 4, !tbaa !9
  %318 = zext i32 %317 to i64
  %319 = getelementptr inbounds i8, ptr %316, i64 %318
  %320 = getelementptr inbounds i8, ptr %319, i64 2
  %321 = load i8, ptr %18, align 1, !tbaa !29
  %322 = zext i8 %321 to i32
  %323 = add nsw i32 2, %322
  %324 = load i8, ptr %19, align 1, !tbaa !29
  %325 = zext i8 %324 to i32
  %326 = add nsw i32 %323, %325
  %327 = load i16, ptr %29, align 2, !tbaa !11
  %328 = zext i16 %327 to i32
  %329 = mul nsw i32 %326, %328
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds i8, ptr %320, i64 %330
  %332 = call zeroext i16 @read_16u(ptr noundef %331)
  %333 = zext i16 %332 to i32
  store i32 %333, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  br label %334

334:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  br label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  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 8, ptr %36) #10
  store ptr %30, ptr %36, align 8, !tbaa !5
  store i32 -17973521, ptr %32, align 4, !tbaa !9
  store i32 -1640531527, ptr %34, align 4, !tbaa !9
  store i32 -1640531527, ptr %33, align 4, !tbaa !9
  store i32 4, ptr %35, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %505, %336
  %338 = load i32, ptr %35, align 4, !tbaa !9
  %339 = icmp uge i32 %338, 12
  br i1 %339, label %340, label %510

340:                                              ; preds = %337
  %341 = load ptr, ptr %36, align 8, !tbaa !5
  %342 = getelementptr inbounds i8, ptr %341, i64 0
  %343 = load i8, ptr %342, align 1, !tbaa !29
  %344 = zext i8 %343 to i32
  %345 = load ptr, ptr %36, align 8, !tbaa !5
  %346 = getelementptr inbounds i8, ptr %345, i64 1
  %347 = load i8, ptr %346, align 1, !tbaa !29
  %348 = zext i8 %347 to i32
  %349 = shl i32 %348, 8
  %350 = add i32 %344, %349
  %351 = load ptr, ptr %36, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %351, i64 2
  %353 = load i8, ptr %352, align 1, !tbaa !29
  %354 = zext i8 %353 to i32
  %355 = shl i32 %354, 16
  %356 = add i32 %350, %355
  %357 = load ptr, ptr %36, align 8, !tbaa !5
  %358 = getelementptr inbounds i8, ptr %357, i64 3
  %359 = load i8, ptr %358, align 1, !tbaa !29
  %360 = zext i8 %359 to i32
  %361 = shl i32 %360, 24
  %362 = add i32 %356, %361
  %363 = load i32, ptr %33, align 4, !tbaa !9
  %364 = add i32 %363, %362
  store i32 %364, ptr %33, align 4, !tbaa !9
  %365 = load ptr, ptr %36, align 8, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %365, i64 4
  %367 = load i8, ptr %366, align 1, !tbaa !29
  %368 = zext i8 %367 to i32
  %369 = load ptr, ptr %36, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %369, i64 5
  %371 = load i8, ptr %370, align 1, !tbaa !29
  %372 = zext i8 %371 to i32
  %373 = shl i32 %372, 8
  %374 = add i32 %368, %373
  %375 = load ptr, ptr %36, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 6
  %377 = load i8, ptr %376, align 1, !tbaa !29
  %378 = zext i8 %377 to i32
  %379 = shl i32 %378, 16
  %380 = add i32 %374, %379
  %381 = load ptr, ptr %36, align 8, !tbaa !5
  %382 = getelementptr inbounds i8, ptr %381, i64 7
  %383 = load i8, ptr %382, align 1, !tbaa !29
  %384 = zext i8 %383 to i32
  %385 = shl i32 %384, 24
  %386 = add i32 %380, %385
  %387 = load i32, ptr %34, align 4, !tbaa !9
  %388 = add i32 %387, %386
  store i32 %388, ptr %34, align 4, !tbaa !9
  %389 = load ptr, ptr %36, align 8, !tbaa !5
  %390 = getelementptr inbounds i8, ptr %389, i64 8
  %391 = load i8, ptr %390, align 1, !tbaa !29
  %392 = zext i8 %391 to i32
  %393 = load ptr, ptr %36, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i64 9
  %395 = load i8, ptr %394, align 1, !tbaa !29
  %396 = zext i8 %395 to i32
  %397 = shl i32 %396, 8
  %398 = add i32 %392, %397
  %399 = load ptr, ptr %36, align 8, !tbaa !5
  %400 = getelementptr inbounds i8, ptr %399, i64 10
  %401 = load i8, ptr %400, align 1, !tbaa !29
  %402 = zext i8 %401 to i32
  %403 = shl i32 %402, 16
  %404 = add i32 %398, %403
  %405 = load ptr, ptr %36, align 8, !tbaa !5
  %406 = getelementptr inbounds i8, ptr %405, i64 11
  %407 = load i8, ptr %406, align 1, !tbaa !29
  %408 = zext i8 %407 to i32
  %409 = shl i32 %408, 24
  %410 = add i32 %404, %409
  %411 = load i32, ptr %32, align 4, !tbaa !9
  %412 = add i32 %411, %410
  store i32 %412, ptr %32, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %340
  %414 = load i32, ptr %34, align 4, !tbaa !9
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = sub i32 %415, %414
  store i32 %416, ptr %33, align 4, !tbaa !9
  %417 = load i32, ptr %32, align 4, !tbaa !9
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = sub i32 %418, %417
  store i32 %419, ptr %33, align 4, !tbaa !9
  %420 = load i32, ptr %32, align 4, !tbaa !9
  %421 = lshr i32 %420, 13
  %422 = load i32, ptr %33, align 4, !tbaa !9
  %423 = xor i32 %422, %421
  store i32 %423, ptr %33, align 4, !tbaa !9
  %424 = load i32, ptr %32, align 4, !tbaa !9
  %425 = load i32, ptr %34, align 4, !tbaa !9
  %426 = sub i32 %425, %424
  store i32 %426, ptr %34, align 4, !tbaa !9
  %427 = load i32, ptr %33, align 4, !tbaa !9
  %428 = load i32, ptr %34, align 4, !tbaa !9
  %429 = sub i32 %428, %427
  store i32 %429, ptr %34, align 4, !tbaa !9
  %430 = load i32, ptr %33, align 4, !tbaa !9
  %431 = shl i32 %430, 8
  %432 = load i32, ptr %34, align 4, !tbaa !9
  %433 = xor i32 %432, %431
  store i32 %433, ptr %34, align 4, !tbaa !9
  %434 = load i32, ptr %33, align 4, !tbaa !9
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = sub i32 %435, %434
  store i32 %436, ptr %32, align 4, !tbaa !9
  %437 = load i32, ptr %34, align 4, !tbaa !9
  %438 = load i32, ptr %32, align 4, !tbaa !9
  %439 = sub i32 %438, %437
  store i32 %439, ptr %32, align 4, !tbaa !9
  %440 = load i32, ptr %34, align 4, !tbaa !9
  %441 = lshr i32 %440, 13
  %442 = load i32, ptr %32, align 4, !tbaa !9
  %443 = xor i32 %442, %441
  store i32 %443, ptr %32, align 4, !tbaa !9
  %444 = load i32, ptr %34, align 4, !tbaa !9
  %445 = load i32, ptr %33, align 4, !tbaa !9
  %446 = sub i32 %445, %444
  store i32 %446, ptr %33, align 4, !tbaa !9
  %447 = load i32, ptr %32, align 4, !tbaa !9
  %448 = load i32, ptr %33, align 4, !tbaa !9
  %449 = sub i32 %448, %447
  store i32 %449, ptr %33, align 4, !tbaa !9
  %450 = load i32, ptr %32, align 4, !tbaa !9
  %451 = lshr i32 %450, 12
  %452 = load i32, ptr %33, align 4, !tbaa !9
  %453 = xor i32 %452, %451
  store i32 %453, ptr %33, align 4, !tbaa !9
  %454 = load i32, ptr %32, align 4, !tbaa !9
  %455 = load i32, ptr %34, align 4, !tbaa !9
  %456 = sub i32 %455, %454
  store i32 %456, ptr %34, align 4, !tbaa !9
  %457 = load i32, ptr %33, align 4, !tbaa !9
  %458 = load i32, ptr %34, align 4, !tbaa !9
  %459 = sub i32 %458, %457
  store i32 %459, ptr %34, align 4, !tbaa !9
  %460 = load i32, ptr %33, align 4, !tbaa !9
  %461 = shl i32 %460, 16
  %462 = load i32, ptr %34, align 4, !tbaa !9
  %463 = xor i32 %462, %461
  store i32 %463, ptr %34, align 4, !tbaa !9
  %464 = load i32, ptr %33, align 4, !tbaa !9
  %465 = load i32, ptr %32, align 4, !tbaa !9
  %466 = sub i32 %465, %464
  store i32 %466, ptr %32, align 4, !tbaa !9
  %467 = load i32, ptr %34, align 4, !tbaa !9
  %468 = load i32, ptr %32, align 4, !tbaa !9
  %469 = sub i32 %468, %467
  store i32 %469, ptr %32, align 4, !tbaa !9
  %470 = load i32, ptr %34, align 4, !tbaa !9
  %471 = lshr i32 %470, 5
  %472 = load i32, ptr %32, align 4, !tbaa !9
  %473 = xor i32 %472, %471
  store i32 %473, ptr %32, align 4, !tbaa !9
  %474 = load i32, ptr %34, align 4, !tbaa !9
  %475 = load i32, ptr %33, align 4, !tbaa !9
  %476 = sub i32 %475, %474
  store i32 %476, ptr %33, align 4, !tbaa !9
  %477 = load i32, ptr %32, align 4, !tbaa !9
  %478 = load i32, ptr %33, align 4, !tbaa !9
  %479 = sub i32 %478, %477
  store i32 %479, ptr %33, align 4, !tbaa !9
  %480 = load i32, ptr %32, align 4, !tbaa !9
  %481 = lshr i32 %480, 3
  %482 = load i32, ptr %33, align 4, !tbaa !9
  %483 = xor i32 %482, %481
  store i32 %483, ptr %33, align 4, !tbaa !9
  %484 = load i32, ptr %32, align 4, !tbaa !9
  %485 = load i32, ptr %34, align 4, !tbaa !9
  %486 = sub i32 %485, %484
  store i32 %486, ptr %34, align 4, !tbaa !9
  %487 = load i32, ptr %33, align 4, !tbaa !9
  %488 = load i32, ptr %34, align 4, !tbaa !9
  %489 = sub i32 %488, %487
  store i32 %489, ptr %34, align 4, !tbaa !9
  %490 = load i32, ptr %33, align 4, !tbaa !9
  %491 = shl i32 %490, 10
  %492 = load i32, ptr %34, align 4, !tbaa !9
  %493 = xor i32 %492, %491
  store i32 %493, ptr %34, align 4, !tbaa !9
  %494 = load i32, ptr %33, align 4, !tbaa !9
  %495 = load i32, ptr %32, align 4, !tbaa !9
  %496 = sub i32 %495, %494
  store i32 %496, ptr %32, align 4, !tbaa !9
  %497 = load i32, ptr %34, align 4, !tbaa !9
  %498 = load i32, ptr %32, align 4, !tbaa !9
  %499 = sub i32 %498, %497
  store i32 %499, ptr %32, align 4, !tbaa !9
  %500 = load i32, ptr %34, align 4, !tbaa !9
  %501 = lshr i32 %500, 15
  %502 = load i32, ptr %32, align 4, !tbaa !9
  %503 = xor i32 %502, %501
  store i32 %503, ptr %32, align 4, !tbaa !9
  br label %504

504:                                              ; preds = %413
  br label %505

505:                                              ; preds = %504
  %506 = load ptr, ptr %36, align 8, !tbaa !5
  %507 = getelementptr inbounds i8, ptr %506, i64 12
  store ptr %507, ptr %36, align 8, !tbaa !5
  %508 = load i32, ptr %35, align 4, !tbaa !9
  %509 = sub i32 %508, 12
  store i32 %509, ptr %35, align 4, !tbaa !9
  br label %337, !llvm.loop !31

510:                                              ; preds = %337
  %511 = load i32, ptr %32, align 4, !tbaa !9
  %512 = add i32 %511, 4
  store i32 %512, ptr %32, align 4, !tbaa !9
  %513 = load i32, ptr %35, align 4, !tbaa !9
  switch i32 %513, label %600 [
    i32 11, label %514
    i32 10, label %522
    i32 9, label %530
    i32 8, label %538
    i32 7, label %546
    i32 6, label %554
    i32 5, label %562
    i32 4, label %569
    i32 3, label %577
    i32 2, label %585
    i32 1, label %593
  ]

514:                                              ; preds = %510
  %515 = load ptr, ptr %36, align 8, !tbaa !5
  %516 = getelementptr inbounds i8, ptr %515, i64 10
  %517 = load i8, ptr %516, align 1, !tbaa !29
  %518 = zext i8 %517 to i32
  %519 = shl i32 %518, 24
  %520 = load i32, ptr %32, align 4, !tbaa !9
  %521 = add i32 %520, %519
  store i32 %521, ptr %32, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %514, %510
  %523 = load ptr, ptr %36, align 8, !tbaa !5
  %524 = getelementptr inbounds i8, ptr %523, i64 9
  %525 = load i8, ptr %524, align 1, !tbaa !29
  %526 = zext i8 %525 to i32
  %527 = shl i32 %526, 16
  %528 = load i32, ptr %32, align 4, !tbaa !9
  %529 = add i32 %528, %527
  store i32 %529, ptr %32, align 4, !tbaa !9
  br label %530

530:                                              ; preds = %522, %510
  %531 = load ptr, ptr %36, align 8, !tbaa !5
  %532 = getelementptr inbounds i8, ptr %531, i64 8
  %533 = load i8, ptr %532, align 1, !tbaa !29
  %534 = zext i8 %533 to i32
  %535 = shl i32 %534, 8
  %536 = load i32, ptr %32, align 4, !tbaa !9
  %537 = add i32 %536, %535
  store i32 %537, ptr %32, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %530, %510
  %539 = load ptr, ptr %36, align 8, !tbaa !5
  %540 = getelementptr inbounds i8, ptr %539, i64 7
  %541 = load i8, ptr %540, align 1, !tbaa !29
  %542 = zext i8 %541 to i32
  %543 = shl i32 %542, 24
  %544 = load i32, ptr %34, align 4, !tbaa !9
  %545 = add i32 %544, %543
  store i32 %545, ptr %34, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %538, %510
  %547 = load ptr, ptr %36, align 8, !tbaa !5
  %548 = getelementptr inbounds i8, ptr %547, i64 6
  %549 = load i8, ptr %548, align 1, !tbaa !29
  %550 = zext i8 %549 to i32
  %551 = shl i32 %550, 16
  %552 = load i32, ptr %34, align 4, !tbaa !9
  %553 = add i32 %552, %551
  store i32 %553, ptr %34, align 4, !tbaa !9
  br label %554

554:                                              ; preds = %546, %510
  %555 = load ptr, ptr %36, align 8, !tbaa !5
  %556 = getelementptr inbounds i8, ptr %555, i64 5
  %557 = load i8, ptr %556, align 1, !tbaa !29
  %558 = zext i8 %557 to i32
  %559 = shl i32 %558, 8
  %560 = load i32, ptr %34, align 4, !tbaa !9
  %561 = add i32 %560, %559
  store i32 %561, ptr %34, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %554, %510
  %563 = load ptr, ptr %36, align 8, !tbaa !5
  %564 = getelementptr inbounds i8, ptr %563, i64 4
  %565 = load i8, ptr %564, align 1, !tbaa !29
  %566 = zext i8 %565 to i32
  %567 = load i32, ptr %34, align 4, !tbaa !9
  %568 = add i32 %567, %566
  store i32 %568, ptr %34, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %562, %510
  %570 = load ptr, ptr %36, align 8, !tbaa !5
  %571 = getelementptr inbounds i8, ptr %570, i64 3
  %572 = load i8, ptr %571, align 1, !tbaa !29
  %573 = zext i8 %572 to i32
  %574 = shl i32 %573, 24
  %575 = load i32, ptr %33, align 4, !tbaa !9
  %576 = add i32 %575, %574
  store i32 %576, ptr %33, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %569, %510
  %578 = load ptr, ptr %36, align 8, !tbaa !5
  %579 = getelementptr inbounds i8, ptr %578, i64 2
  %580 = load i8, ptr %579, align 1, !tbaa !29
  %581 = zext i8 %580 to i32
  %582 = shl i32 %581, 16
  %583 = load i32, ptr %33, align 4, !tbaa !9
  %584 = add i32 %583, %582
  store i32 %584, ptr %33, align 4, !tbaa !9
  br label %585

585:                                              ; preds = %577, %510
  %586 = load ptr, ptr %36, align 8, !tbaa !5
  %587 = getelementptr inbounds i8, ptr %586, i64 1
  %588 = load i8, ptr %587, align 1, !tbaa !29
  %589 = zext i8 %588 to i32
  %590 = shl i32 %589, 8
  %591 = load i32, ptr %33, align 4, !tbaa !9
  %592 = add i32 %591, %590
  store i32 %592, ptr %33, align 4, !tbaa !9
  br label %593

593:                                              ; preds = %585, %510
  %594 = load ptr, ptr %36, align 8, !tbaa !5
  %595 = getelementptr inbounds i8, ptr %594, i64 0
  %596 = load i8, ptr %595, align 1, !tbaa !29
  %597 = zext i8 %596 to i32
  %598 = load i32, ptr %33, align 4, !tbaa !9
  %599 = add i32 %598, %597
  store i32 %599, ptr %33, align 4, !tbaa !9
  br label %600

600:                                              ; preds = %593, %510
  br label %601

601:                                              ; preds = %600
  %602 = load i32, ptr %34, align 4, !tbaa !9
  %603 = load i32, ptr %33, align 4, !tbaa !9
  %604 = sub i32 %603, %602
  store i32 %604, ptr %33, align 4, !tbaa !9
  %605 = load i32, ptr %32, align 4, !tbaa !9
  %606 = load i32, ptr %33, align 4, !tbaa !9
  %607 = sub i32 %606, %605
  store i32 %607, ptr %33, align 4, !tbaa !9
  %608 = load i32, ptr %32, align 4, !tbaa !9
  %609 = lshr i32 %608, 13
  %610 = load i32, ptr %33, align 4, !tbaa !9
  %611 = xor i32 %610, %609
  store i32 %611, ptr %33, align 4, !tbaa !9
  %612 = load i32, ptr %32, align 4, !tbaa !9
  %613 = load i32, ptr %34, align 4, !tbaa !9
  %614 = sub i32 %613, %612
  store i32 %614, ptr %34, align 4, !tbaa !9
  %615 = load i32, ptr %33, align 4, !tbaa !9
  %616 = load i32, ptr %34, align 4, !tbaa !9
  %617 = sub i32 %616, %615
  store i32 %617, ptr %34, align 4, !tbaa !9
  %618 = load i32, ptr %33, align 4, !tbaa !9
  %619 = shl i32 %618, 8
  %620 = load i32, ptr %34, align 4, !tbaa !9
  %621 = xor i32 %620, %619
  store i32 %621, ptr %34, align 4, !tbaa !9
  %622 = load i32, ptr %33, align 4, !tbaa !9
  %623 = load i32, ptr %32, align 4, !tbaa !9
  %624 = sub i32 %623, %622
  store i32 %624, ptr %32, align 4, !tbaa !9
  %625 = load i32, ptr %34, align 4, !tbaa !9
  %626 = load i32, ptr %32, align 4, !tbaa !9
  %627 = sub i32 %626, %625
  store i32 %627, ptr %32, align 4, !tbaa !9
  %628 = load i32, ptr %34, align 4, !tbaa !9
  %629 = lshr i32 %628, 13
  %630 = load i32, ptr %32, align 4, !tbaa !9
  %631 = xor i32 %630, %629
  store i32 %631, ptr %32, align 4, !tbaa !9
  %632 = load i32, ptr %34, align 4, !tbaa !9
  %633 = load i32, ptr %33, align 4, !tbaa !9
  %634 = sub i32 %633, %632
  store i32 %634, ptr %33, align 4, !tbaa !9
  %635 = load i32, ptr %32, align 4, !tbaa !9
  %636 = load i32, ptr %33, align 4, !tbaa !9
  %637 = sub i32 %636, %635
  store i32 %637, ptr %33, align 4, !tbaa !9
  %638 = load i32, ptr %32, align 4, !tbaa !9
  %639 = lshr i32 %638, 12
  %640 = load i32, ptr %33, align 4, !tbaa !9
  %641 = xor i32 %640, %639
  store i32 %641, ptr %33, align 4, !tbaa !9
  %642 = load i32, ptr %32, align 4, !tbaa !9
  %643 = load i32, ptr %34, align 4, !tbaa !9
  %644 = sub i32 %643, %642
  store i32 %644, ptr %34, align 4, !tbaa !9
  %645 = load i32, ptr %33, align 4, !tbaa !9
  %646 = load i32, ptr %34, align 4, !tbaa !9
  %647 = sub i32 %646, %645
  store i32 %647, ptr %34, align 4, !tbaa !9
  %648 = load i32, ptr %33, align 4, !tbaa !9
  %649 = shl i32 %648, 16
  %650 = load i32, ptr %34, align 4, !tbaa !9
  %651 = xor i32 %650, %649
  store i32 %651, ptr %34, align 4, !tbaa !9
  %652 = load i32, ptr %33, align 4, !tbaa !9
  %653 = load i32, ptr %32, align 4, !tbaa !9
  %654 = sub i32 %653, %652
  store i32 %654, ptr %32, align 4, !tbaa !9
  %655 = load i32, ptr %34, align 4, !tbaa !9
  %656 = load i32, ptr %32, align 4, !tbaa !9
  %657 = sub i32 %656, %655
  store i32 %657, ptr %32, align 4, !tbaa !9
  %658 = load i32, ptr %34, align 4, !tbaa !9
  %659 = lshr i32 %658, 5
  %660 = load i32, ptr %32, align 4, !tbaa !9
  %661 = xor i32 %660, %659
  store i32 %661, ptr %32, align 4, !tbaa !9
  %662 = load i32, ptr %34, align 4, !tbaa !9
  %663 = load i32, ptr %33, align 4, !tbaa !9
  %664 = sub i32 %663, %662
  store i32 %664, ptr %33, align 4, !tbaa !9
  %665 = load i32, ptr %32, align 4, !tbaa !9
  %666 = load i32, ptr %33, align 4, !tbaa !9
  %667 = sub i32 %666, %665
  store i32 %667, ptr %33, align 4, !tbaa !9
  %668 = load i32, ptr %32, align 4, !tbaa !9
  %669 = lshr i32 %668, 3
  %670 = load i32, ptr %33, align 4, !tbaa !9
  %671 = xor i32 %670, %669
  store i32 %671, ptr %33, align 4, !tbaa !9
  %672 = load i32, ptr %32, align 4, !tbaa !9
  %673 = load i32, ptr %34, align 4, !tbaa !9
  %674 = sub i32 %673, %672
  store i32 %674, ptr %34, align 4, !tbaa !9
  %675 = load i32, ptr %33, align 4, !tbaa !9
  %676 = load i32, ptr %34, align 4, !tbaa !9
  %677 = sub i32 %676, %675
  store i32 %677, ptr %34, align 4, !tbaa !9
  %678 = load i32, ptr %33, align 4, !tbaa !9
  %679 = shl i32 %678, 10
  %680 = load i32, ptr %34, align 4, !tbaa !9
  %681 = xor i32 %680, %679
  store i32 %681, ptr %34, align 4, !tbaa !9
  %682 = load i32, ptr %33, align 4, !tbaa !9
  %683 = load i32, ptr %32, align 4, !tbaa !9
  %684 = sub i32 %683, %682
  store i32 %684, ptr %32, align 4, !tbaa !9
  %685 = load i32, ptr %34, align 4, !tbaa !9
  %686 = load i32, ptr %32, align 4, !tbaa !9
  %687 = sub i32 %686, %685
  store i32 %687, ptr %32, align 4, !tbaa !9
  %688 = load i32, ptr %34, align 4, !tbaa !9
  %689 = lshr i32 %688, 15
  %690 = load i32, ptr %32, align 4, !tbaa !9
  %691 = xor i32 %690, %689
  store i32 %691, ptr %32, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %601
  br label %693

693:                                              ; preds = %692
  call void @llvm.lifetime.end.p0(i64 8, 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 %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697
  store ptr null, ptr %31, align 8, !tbaa !5
  %699 = load ptr, ptr %25, align 8, !tbaa !5
  %700 = icmp ne ptr %699, null
  br i1 %700, label %701, label %805

701:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  br label %702

702:                                              ; preds = %701
  %703 = load i32, ptr %32, align 4, !tbaa !9
  %704 = load ptr, ptr %25, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.pair_classifier_hash, ptr %704, i32 0, i32 2
  %706 = getelementptr inbounds %struct.UT_hash_handle, ptr %705, i32 0, i32 0
  %707 = load ptr, ptr %706, align 8, !tbaa !32
  %708 = getelementptr inbounds %struct.UT_hash_table, ptr %707, i32 0, i32 1
  %709 = load i32, ptr %708, align 8, !tbaa !35
  %710 = sub i32 %709, 1
  %711 = and i32 %703, %710
  store i32 %711, ptr %37, align 4, !tbaa !9
  br label %712

712:                                              ; preds = %702
  br label %713

713:                                              ; preds = %712
  br label %714

714:                                              ; preds = %713
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.pair_classifier_hash, ptr %715, i32 0, i32 2
  %717 = getelementptr inbounds %struct.UT_hash_handle, ptr %716, i32 0, i32 0
  %718 = load ptr, ptr %717, align 8, !tbaa !32
  %719 = getelementptr inbounds %struct.UT_hash_table, ptr %718, i32 0, i32 0
  %720 = load ptr, ptr %719, align 8, !tbaa !38
  %721 = load i32, ptr %37, align 4, !tbaa !9
  %722 = zext i32 %721 to i64
  %723 = getelementptr inbounds %struct.UT_hash_bucket, ptr %720, i64 %722
  %724 = getelementptr inbounds %struct.UT_hash_bucket, ptr %723, i32 0, i32 0
  %725 = load ptr, ptr %724, align 8, !tbaa !39
  %726 = icmp ne ptr %725, null
  br i1 %726, label %727, label %750

727:                                              ; preds = %714
  br label %728

728:                                              ; preds = %727
  %729 = load ptr, ptr %25, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.pair_classifier_hash, ptr %729, i32 0, i32 2
  %731 = getelementptr inbounds %struct.UT_hash_handle, ptr %730, i32 0, i32 0
  %732 = load ptr, ptr %731, align 8, !tbaa !32
  %733 = getelementptr inbounds %struct.UT_hash_table, ptr %732, i32 0, i32 0
  %734 = load ptr, ptr %733, align 8, !tbaa !38
  %735 = load i32, ptr %37, align 4, !tbaa !9
  %736 = zext i32 %735 to i64
  %737 = getelementptr inbounds %struct.UT_hash_bucket, ptr %734, i64 %736
  %738 = getelementptr inbounds %struct.UT_hash_bucket, ptr %737, i32 0, i32 0
  %739 = load ptr, ptr %738, align 8, !tbaa !39
  %740 = load ptr, ptr %25, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.pair_classifier_hash, ptr %740, i32 0, i32 2
  %742 = getelementptr inbounds %struct.UT_hash_handle, ptr %741, i32 0, i32 0
  %743 = load ptr, ptr %742, align 8, !tbaa !32
  %744 = getelementptr inbounds %struct.UT_hash_table, ptr %743, i32 0, i32 5
  %745 = load i64, ptr %744, align 8, !tbaa !41
  %746 = sub i64 0, %745
  %747 = getelementptr inbounds i8, ptr %739, i64 %746
  store ptr %747, ptr %31, align 8, !tbaa !5
  br label %748

748:                                              ; preds = %728
  br label %749

749:                                              ; preds = %748
  br label %751

750:                                              ; preds = %714
  store ptr null, ptr %31, align 8, !tbaa !5
  br label %751

751:                                              ; preds = %750, %749
  br label %752

752:                                              ; preds = %801, %751
  %753 = load ptr, ptr %31, align 8, !tbaa !5
  %754 = icmp ne ptr %753, null
  br i1 %754, label %755, label %802

755:                                              ; preds = %752
  %756 = load ptr, ptr %31, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.pair_classifier_hash, ptr %756, i32 0, i32 2
  %758 = getelementptr inbounds %struct.UT_hash_handle, ptr %757, i32 0, i32 7
  %759 = load i32, ptr %758, align 4, !tbaa !42
  %760 = load i32, ptr %32, align 4, !tbaa !9
  %761 = icmp eq i32 %759, %760
  br i1 %761, label %762, label %778

762:                                              ; preds = %755
  %763 = load ptr, ptr %31, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.pair_classifier_hash, ptr %763, i32 0, i32 2
  %765 = getelementptr inbounds %struct.UT_hash_handle, ptr %764, i32 0, i32 6
  %766 = load i32, ptr %765, align 8, !tbaa !43
  %767 = zext i32 %766 to i64
  %768 = icmp eq i64 %767, 4
  br i1 %768, label %769, label %778

769:                                              ; preds = %762
  %770 = load ptr, ptr %31, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.pair_classifier_hash, ptr %770, i32 0, i32 2
  %772 = getelementptr inbounds %struct.UT_hash_handle, ptr %771, i32 0, i32 5
  %773 = load ptr, ptr %772, align 8, !tbaa !44
  %774 = call i32 @memcmp(ptr noundef %773, ptr noundef %30, i64 noundef 4) #11
  %775 = icmp eq i32 %774, 0
  br i1 %775, label %776, label %777

776:                                              ; preds = %769
  br label %802

777:                                              ; preds = %769
  br label %778

778:                                              ; preds = %777, %762, %755
  %779 = load ptr, ptr %31, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.pair_classifier_hash, ptr %779, i32 0, i32 2
  %781 = getelementptr inbounds %struct.UT_hash_handle, ptr %780, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !45
  %783 = icmp ne ptr %782, null
  br i1 %783, label %784, label %800

784:                                              ; preds = %778
  br label %785

785:                                              ; preds = %784
  %786 = load ptr, ptr %31, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.pair_classifier_hash, ptr %786, i32 0, i32 2
  %788 = getelementptr inbounds %struct.UT_hash_handle, ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !45
  %790 = load ptr, ptr %25, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.pair_classifier_hash, ptr %790, i32 0, i32 2
  %792 = getelementptr inbounds %struct.UT_hash_handle, ptr %791, i32 0, i32 0
  %793 = load ptr, ptr %792, align 8, !tbaa !32
  %794 = getelementptr inbounds %struct.UT_hash_table, ptr %793, i32 0, i32 5
  %795 = load i64, ptr %794, align 8, !tbaa !41
  %796 = sub i64 0, %795
  %797 = getelementptr inbounds i8, ptr %789, i64 %796
  store ptr %797, ptr %31, align 8, !tbaa !5
  br label %798

798:                                              ; preds = %785
  br label %799

799:                                              ; preds = %798
  br label %801

800:                                              ; preds = %778
  store ptr null, ptr %31, align 8, !tbaa !5
  br label %801

801:                                              ; preds = %800, %799
  br label %752, !llvm.loop !46

802:                                              ; preds = %776, %752
  br label %803

803:                                              ; preds = %802
  br label %804

804:                                              ; preds = %803
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %805

805:                                              ; preds = %804, %698
  br label %806

806:                                              ; preds = %805
  br label %807

807:                                              ; preds = %806
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808
  %810 = load ptr, ptr %31, align 8, !tbaa !5
  %811 = icmp ne ptr %810, null
  br i1 %811, label %1675, label %812

812:                                              ; preds = %809
  %813 = call ptr @__caryll_allocate_clean(i64 noundef 64, i64 noundef 81)
  store ptr %813, ptr %31, align 8, !tbaa !5
  %814 = load i32, ptr %30, align 4, !tbaa !9
  %815 = load ptr, ptr %31, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.pair_classifier_hash, ptr %815, i32 0, i32 0
  store i32 %814, ptr %816, align 8, !tbaa !47
  %817 = load ptr, ptr %25, align 8, !tbaa !5
  %818 = icmp ne ptr %817, null
  br i1 %818, label %819, label %826

819:                                              ; preds = %812
  %820 = load ptr, ptr %25, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.pair_classifier_hash, ptr %820, i32 0, i32 2
  %822 = getelementptr inbounds %struct.UT_hash_handle, ptr %821, i32 0, i32 0
  %823 = load ptr, ptr %822, align 8, !tbaa !32
  %824 = getelementptr inbounds %struct.UT_hash_table, ptr %823, i32 0, i32 3
  %825 = load i32, ptr %824, align 8, !tbaa !48
  br label %827

826:                                              ; preds = %812
  br label %827

827:                                              ; preds = %826, %819
  %828 = phi i32 [ %825, %819 ], [ 0, %826 ]
  %829 = add i32 %828, 1
  %830 = load ptr, ptr %31, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.pair_classifier_hash, ptr %830, i32 0, i32 1
  store i32 %829, ptr %831, align 4, !tbaa !49
  br label %832

832:                                              ; preds = %827
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  br label %833

833:                                              ; preds = %832
  br label %834

834:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %835 = load ptr, ptr %31, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.pair_classifier_hash, ptr %835, i32 0, i32 0
  store ptr %836, ptr %42, align 8, !tbaa !5
  store i32 -17973521, ptr %38, align 4, !tbaa !9
  store i32 -1640531527, ptr %40, align 4, !tbaa !9
  store i32 -1640531527, ptr %39, align 4, !tbaa !9
  store i32 4, ptr %41, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %1005, %834
  %838 = load i32, ptr %41, align 4, !tbaa !9
  %839 = icmp uge i32 %838, 12
  br i1 %839, label %840, label %1010

840:                                              ; preds = %837
  %841 = load ptr, ptr %42, align 8, !tbaa !5
  %842 = getelementptr inbounds i8, ptr %841, i64 0
  %843 = load i8, ptr %842, align 1, !tbaa !29
  %844 = zext i8 %843 to i32
  %845 = load ptr, ptr %42, align 8, !tbaa !5
  %846 = getelementptr inbounds i8, ptr %845, i64 1
  %847 = load i8, ptr %846, align 1, !tbaa !29
  %848 = zext i8 %847 to i32
  %849 = shl i32 %848, 8
  %850 = add i32 %844, %849
  %851 = load ptr, ptr %42, align 8, !tbaa !5
  %852 = getelementptr inbounds i8, ptr %851, i64 2
  %853 = load i8, ptr %852, align 1, !tbaa !29
  %854 = zext i8 %853 to i32
  %855 = shl i32 %854, 16
  %856 = add i32 %850, %855
  %857 = load ptr, ptr %42, align 8, !tbaa !5
  %858 = getelementptr inbounds i8, ptr %857, i64 3
  %859 = load i8, ptr %858, align 1, !tbaa !29
  %860 = zext i8 %859 to i32
  %861 = shl i32 %860, 24
  %862 = add i32 %856, %861
  %863 = load i32, ptr %39, align 4, !tbaa !9
  %864 = add i32 %863, %862
  store i32 %864, ptr %39, align 4, !tbaa !9
  %865 = load ptr, ptr %42, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i64 4
  %867 = load i8, ptr %866, align 1, !tbaa !29
  %868 = zext i8 %867 to i32
  %869 = load ptr, ptr %42, align 8, !tbaa !5
  %870 = getelementptr inbounds i8, ptr %869, i64 5
  %871 = load i8, ptr %870, align 1, !tbaa !29
  %872 = zext i8 %871 to i32
  %873 = shl i32 %872, 8
  %874 = add i32 %868, %873
  %875 = load ptr, ptr %42, align 8, !tbaa !5
  %876 = getelementptr inbounds i8, ptr %875, i64 6
  %877 = load i8, ptr %876, align 1, !tbaa !29
  %878 = zext i8 %877 to i32
  %879 = shl i32 %878, 16
  %880 = add i32 %874, %879
  %881 = load ptr, ptr %42, align 8, !tbaa !5
  %882 = getelementptr inbounds i8, ptr %881, i64 7
  %883 = load i8, ptr %882, align 1, !tbaa !29
  %884 = zext i8 %883 to i32
  %885 = shl i32 %884, 24
  %886 = add i32 %880, %885
  %887 = load i32, ptr %40, align 4, !tbaa !9
  %888 = add i32 %887, %886
  store i32 %888, ptr %40, align 4, !tbaa !9
  %889 = load ptr, ptr %42, align 8, !tbaa !5
  %890 = getelementptr inbounds i8, ptr %889, i64 8
  %891 = load i8, ptr %890, align 1, !tbaa !29
  %892 = zext i8 %891 to i32
  %893 = load ptr, ptr %42, align 8, !tbaa !5
  %894 = getelementptr inbounds i8, ptr %893, i64 9
  %895 = load i8, ptr %894, align 1, !tbaa !29
  %896 = zext i8 %895 to i32
  %897 = shl i32 %896, 8
  %898 = add i32 %892, %897
  %899 = load ptr, ptr %42, align 8, !tbaa !5
  %900 = getelementptr inbounds i8, ptr %899, i64 10
  %901 = load i8, ptr %900, align 1, !tbaa !29
  %902 = zext i8 %901 to i32
  %903 = shl i32 %902, 16
  %904 = add i32 %898, %903
  %905 = load ptr, ptr %42, align 8, !tbaa !5
  %906 = getelementptr inbounds i8, ptr %905, i64 11
  %907 = load i8, ptr %906, align 1, !tbaa !29
  %908 = zext i8 %907 to i32
  %909 = shl i32 %908, 24
  %910 = add i32 %904, %909
  %911 = load i32, ptr %38, align 4, !tbaa !9
  %912 = add i32 %911, %910
  store i32 %912, ptr %38, align 4, !tbaa !9
  br label %913

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

1004:                                             ; preds = %913
  br label %1005

1005:                                             ; preds = %1004
  %1006 = load ptr, ptr %42, align 8, !tbaa !5
  %1007 = getelementptr inbounds i8, ptr %1006, i64 12
  store ptr %1007, ptr %42, align 8, !tbaa !5
  %1008 = load i32, ptr %41, align 4, !tbaa !9
  %1009 = sub i32 %1008, 12
  store i32 %1009, ptr %41, align 4, !tbaa !9
  br label %837, !llvm.loop !50

1010:                                             ; preds = %837
  %1011 = load i32, ptr %38, align 4, !tbaa !9
  %1012 = add i32 %1011, 4
  store i32 %1012, ptr %38, align 4, !tbaa !9
  %1013 = load i32, ptr %41, align 4, !tbaa !9
  switch i32 %1013, label %1100 [
    i32 11, label %1014
    i32 10, label %1022
    i32 9, label %1030
    i32 8, label %1038
    i32 7, label %1046
    i32 6, label %1054
    i32 5, label %1062
    i32 4, label %1069
    i32 3, label %1077
    i32 2, label %1085
    i32 1, label %1093
  ]

1014:                                             ; preds = %1010
  %1015 = load ptr, ptr %42, align 8, !tbaa !5
  %1016 = getelementptr inbounds i8, ptr %1015, i64 10
  %1017 = load i8, ptr %1016, align 1, !tbaa !29
  %1018 = zext i8 %1017 to i32
  %1019 = shl i32 %1018, 24
  %1020 = load i32, ptr %38, align 4, !tbaa !9
  %1021 = add i32 %1020, %1019
  store i32 %1021, ptr %38, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1014, %1010
  %1023 = load ptr, ptr %42, align 8, !tbaa !5
  %1024 = getelementptr inbounds i8, ptr %1023, i64 9
  %1025 = load i8, ptr %1024, align 1, !tbaa !29
  %1026 = zext i8 %1025 to i32
  %1027 = shl i32 %1026, 16
  %1028 = load i32, ptr %38, align 4, !tbaa !9
  %1029 = add i32 %1028, %1027
  store i32 %1029, ptr %38, align 4, !tbaa !9
  br label %1030

1030:                                             ; preds = %1022, %1010
  %1031 = load ptr, ptr %42, align 8, !tbaa !5
  %1032 = getelementptr inbounds i8, ptr %1031, i64 8
  %1033 = load i8, ptr %1032, align 1, !tbaa !29
  %1034 = zext i8 %1033 to i32
  %1035 = shl i32 %1034, 8
  %1036 = load i32, ptr %38, align 4, !tbaa !9
  %1037 = add i32 %1036, %1035
  store i32 %1037, ptr %38, align 4, !tbaa !9
  br label %1038

1038:                                             ; preds = %1030, %1010
  %1039 = load ptr, ptr %42, align 8, !tbaa !5
  %1040 = getelementptr inbounds i8, ptr %1039, i64 7
  %1041 = load i8, ptr %1040, align 1, !tbaa !29
  %1042 = zext i8 %1041 to i32
  %1043 = shl i32 %1042, 24
  %1044 = load i32, ptr %40, align 4, !tbaa !9
  %1045 = add i32 %1044, %1043
  store i32 %1045, ptr %40, align 4, !tbaa !9
  br label %1046

1046:                                             ; preds = %1038, %1010
  %1047 = load ptr, ptr %42, align 8, !tbaa !5
  %1048 = getelementptr inbounds i8, ptr %1047, i64 6
  %1049 = load i8, ptr %1048, align 1, !tbaa !29
  %1050 = zext i8 %1049 to i32
  %1051 = shl i32 %1050, 16
  %1052 = load i32, ptr %40, align 4, !tbaa !9
  %1053 = add i32 %1052, %1051
  store i32 %1053, ptr %40, align 4, !tbaa !9
  br label %1054

1054:                                             ; preds = %1046, %1010
  %1055 = load ptr, ptr %42, align 8, !tbaa !5
  %1056 = getelementptr inbounds i8, ptr %1055, i64 5
  %1057 = load i8, ptr %1056, align 1, !tbaa !29
  %1058 = zext i8 %1057 to i32
  %1059 = shl i32 %1058, 8
  %1060 = load i32, ptr %40, align 4, !tbaa !9
  %1061 = add i32 %1060, %1059
  store i32 %1061, ptr %40, align 4, !tbaa !9
  br label %1062

1062:                                             ; preds = %1054, %1010
  %1063 = load ptr, ptr %42, align 8, !tbaa !5
  %1064 = getelementptr inbounds i8, ptr %1063, i64 4
  %1065 = load i8, ptr %1064, align 1, !tbaa !29
  %1066 = zext i8 %1065 to i32
  %1067 = load i32, ptr %40, align 4, !tbaa !9
  %1068 = add i32 %1067, %1066
  store i32 %1068, ptr %40, align 4, !tbaa !9
  br label %1069

1069:                                             ; preds = %1062, %1010
  %1070 = load ptr, ptr %42, align 8, !tbaa !5
  %1071 = getelementptr inbounds i8, ptr %1070, i64 3
  %1072 = load i8, ptr %1071, align 1, !tbaa !29
  %1073 = zext i8 %1072 to i32
  %1074 = shl i32 %1073, 24
  %1075 = load i32, ptr %39, align 4, !tbaa !9
  %1076 = add i32 %1075, %1074
  store i32 %1076, ptr %39, align 4, !tbaa !9
  br label %1077

1077:                                             ; preds = %1069, %1010
  %1078 = load ptr, ptr %42, align 8, !tbaa !5
  %1079 = getelementptr inbounds i8, ptr %1078, i64 2
  %1080 = load i8, ptr %1079, align 1, !tbaa !29
  %1081 = zext i8 %1080 to i32
  %1082 = shl i32 %1081, 16
  %1083 = load i32, ptr %39, align 4, !tbaa !9
  %1084 = add i32 %1083, %1082
  store i32 %1084, ptr %39, align 4, !tbaa !9
  br label %1085

1085:                                             ; preds = %1077, %1010
  %1086 = load ptr, ptr %42, align 8, !tbaa !5
  %1087 = getelementptr inbounds i8, ptr %1086, i64 1
  %1088 = load i8, ptr %1087, align 1, !tbaa !29
  %1089 = zext i8 %1088 to i32
  %1090 = shl i32 %1089, 8
  %1091 = load i32, ptr %39, align 4, !tbaa !9
  %1092 = add i32 %1091, %1090
  store i32 %1092, ptr %39, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1085, %1010
  %1094 = load ptr, ptr %42, align 8, !tbaa !5
  %1095 = getelementptr inbounds i8, ptr %1094, i64 0
  %1096 = load i8, ptr %1095, align 1, !tbaa !29
  %1097 = zext i8 %1096 to i32
  %1098 = load i32, ptr %39, align 4, !tbaa !9
  %1099 = add i32 %1098, %1097
  store i32 %1099, ptr %39, align 4, !tbaa !9
  br label %1100

1100:                                             ; preds = %1093, %1010
  br label %1101

1101:                                             ; preds = %1100
  %1102 = load i32, ptr %40, align 4, !tbaa !9
  %1103 = load i32, ptr %39, align 4, !tbaa !9
  %1104 = sub i32 %1103, %1102
  store i32 %1104, ptr %39, align 4, !tbaa !9
  %1105 = load i32, ptr %38, align 4, !tbaa !9
  %1106 = load i32, ptr %39, align 4, !tbaa !9
  %1107 = sub i32 %1106, %1105
  store i32 %1107, ptr %39, align 4, !tbaa !9
  %1108 = load i32, ptr %38, align 4, !tbaa !9
  %1109 = lshr i32 %1108, 13
  %1110 = load i32, ptr %39, align 4, !tbaa !9
  %1111 = xor i32 %1110, %1109
  store i32 %1111, ptr %39, align 4, !tbaa !9
  %1112 = load i32, ptr %38, align 4, !tbaa !9
  %1113 = load i32, ptr %40, align 4, !tbaa !9
  %1114 = sub i32 %1113, %1112
  store i32 %1114, ptr %40, align 4, !tbaa !9
  %1115 = load i32, ptr %39, align 4, !tbaa !9
  %1116 = load i32, ptr %40, align 4, !tbaa !9
  %1117 = sub i32 %1116, %1115
  store i32 %1117, ptr %40, align 4, !tbaa !9
  %1118 = load i32, ptr %39, align 4, !tbaa !9
  %1119 = shl i32 %1118, 8
  %1120 = load i32, ptr %40, align 4, !tbaa !9
  %1121 = xor i32 %1120, %1119
  store i32 %1121, ptr %40, align 4, !tbaa !9
  %1122 = load i32, ptr %39, align 4, !tbaa !9
  %1123 = load i32, ptr %38, align 4, !tbaa !9
  %1124 = sub i32 %1123, %1122
  store i32 %1124, ptr %38, align 4, !tbaa !9
  %1125 = load i32, ptr %40, align 4, !tbaa !9
  %1126 = load i32, ptr %38, align 4, !tbaa !9
  %1127 = sub i32 %1126, %1125
  store i32 %1127, ptr %38, align 4, !tbaa !9
  %1128 = load i32, ptr %40, align 4, !tbaa !9
  %1129 = lshr i32 %1128, 13
  %1130 = load i32, ptr %38, align 4, !tbaa !9
  %1131 = xor i32 %1130, %1129
  store i32 %1131, ptr %38, align 4, !tbaa !9
  %1132 = load i32, ptr %40, align 4, !tbaa !9
  %1133 = load i32, ptr %39, align 4, !tbaa !9
  %1134 = sub i32 %1133, %1132
  store i32 %1134, ptr %39, align 4, !tbaa !9
  %1135 = load i32, ptr %38, align 4, !tbaa !9
  %1136 = load i32, ptr %39, align 4, !tbaa !9
  %1137 = sub i32 %1136, %1135
  store i32 %1137, ptr %39, align 4, !tbaa !9
  %1138 = load i32, ptr %38, align 4, !tbaa !9
  %1139 = lshr i32 %1138, 12
  %1140 = load i32, ptr %39, align 4, !tbaa !9
  %1141 = xor i32 %1140, %1139
  store i32 %1141, ptr %39, align 4, !tbaa !9
  %1142 = load i32, ptr %38, align 4, !tbaa !9
  %1143 = load i32, ptr %40, align 4, !tbaa !9
  %1144 = sub i32 %1143, %1142
  store i32 %1144, ptr %40, align 4, !tbaa !9
  %1145 = load i32, ptr %39, align 4, !tbaa !9
  %1146 = load i32, ptr %40, align 4, !tbaa !9
  %1147 = sub i32 %1146, %1145
  store i32 %1147, ptr %40, align 4, !tbaa !9
  %1148 = load i32, ptr %39, align 4, !tbaa !9
  %1149 = shl i32 %1148, 16
  %1150 = load i32, ptr %40, align 4, !tbaa !9
  %1151 = xor i32 %1150, %1149
  store i32 %1151, ptr %40, align 4, !tbaa !9
  %1152 = load i32, ptr %39, align 4, !tbaa !9
  %1153 = load i32, ptr %38, align 4, !tbaa !9
  %1154 = sub i32 %1153, %1152
  store i32 %1154, ptr %38, align 4, !tbaa !9
  %1155 = load i32, ptr %40, align 4, !tbaa !9
  %1156 = load i32, ptr %38, align 4, !tbaa !9
  %1157 = sub i32 %1156, %1155
  store i32 %1157, ptr %38, align 4, !tbaa !9
  %1158 = load i32, ptr %40, align 4, !tbaa !9
  %1159 = lshr i32 %1158, 5
  %1160 = load i32, ptr %38, align 4, !tbaa !9
  %1161 = xor i32 %1160, %1159
  store i32 %1161, ptr %38, align 4, !tbaa !9
  %1162 = load i32, ptr %40, align 4, !tbaa !9
  %1163 = load i32, ptr %39, align 4, !tbaa !9
  %1164 = sub i32 %1163, %1162
  store i32 %1164, ptr %39, align 4, !tbaa !9
  %1165 = load i32, ptr %38, align 4, !tbaa !9
  %1166 = load i32, ptr %39, align 4, !tbaa !9
  %1167 = sub i32 %1166, %1165
  store i32 %1167, ptr %39, align 4, !tbaa !9
  %1168 = load i32, ptr %38, align 4, !tbaa !9
  %1169 = lshr i32 %1168, 3
  %1170 = load i32, ptr %39, align 4, !tbaa !9
  %1171 = xor i32 %1170, %1169
  store i32 %1171, ptr %39, align 4, !tbaa !9
  %1172 = load i32, ptr %38, align 4, !tbaa !9
  %1173 = load i32, ptr %40, align 4, !tbaa !9
  %1174 = sub i32 %1173, %1172
  store i32 %1174, ptr %40, align 4, !tbaa !9
  %1175 = load i32, ptr %39, align 4, !tbaa !9
  %1176 = load i32, ptr %40, align 4, !tbaa !9
  %1177 = sub i32 %1176, %1175
  store i32 %1177, ptr %40, align 4, !tbaa !9
  %1178 = load i32, ptr %39, align 4, !tbaa !9
  %1179 = shl i32 %1178, 10
  %1180 = load i32, ptr %40, align 4, !tbaa !9
  %1181 = xor i32 %1180, %1179
  store i32 %1181, ptr %40, align 4, !tbaa !9
  %1182 = load i32, ptr %39, align 4, !tbaa !9
  %1183 = load i32, ptr %38, align 4, !tbaa !9
  %1184 = sub i32 %1183, %1182
  store i32 %1184, ptr %38, align 4, !tbaa !9
  %1185 = load i32, ptr %40, align 4, !tbaa !9
  %1186 = load i32, ptr %38, align 4, !tbaa !9
  %1187 = sub i32 %1186, %1185
  store i32 %1187, ptr %38, align 4, !tbaa !9
  %1188 = load i32, ptr %40, align 4, !tbaa !9
  %1189 = lshr i32 %1188, 15
  %1190 = load i32, ptr %38, align 4, !tbaa !9
  %1191 = xor i32 %1190, %1189
  store i32 %1191, ptr %38, align 4, !tbaa !9
  br label %1192

1192:                                             ; preds = %1101
  br label %1193

1193:                                             ; preds = %1192
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %1194

1194:                                             ; preds = %1193
  br label %1195

1195:                                             ; preds = %1194
  br label %1196

1196:                                             ; preds = %1195
  br label %1197

1197:                                             ; preds = %1196
  br label %1198

1198:                                             ; preds = %1197
  %1199 = load i32, ptr %38, align 4, !tbaa !9
  %1200 = load ptr, ptr %31, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1200, i32 0, i32 2
  %1202 = getelementptr inbounds %struct.UT_hash_handle, ptr %1201, i32 0, i32 7
  store i32 %1199, ptr %1202, align 4, !tbaa !42
  %1203 = load ptr, ptr %31, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1203, i32 0, i32 0
  %1205 = load ptr, ptr %31, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1205, i32 0, i32 2
  %1207 = getelementptr inbounds %struct.UT_hash_handle, ptr %1206, i32 0, i32 5
  store ptr %1204, ptr %1207, align 8, !tbaa !44
  %1208 = load ptr, ptr %31, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1208, i32 0, i32 2
  %1210 = getelementptr inbounds %struct.UT_hash_handle, ptr %1209, i32 0, i32 6
  store i32 4, ptr %1210, align 8, !tbaa !43
  %1211 = load ptr, ptr %25, align 8, !tbaa !5
  %1212 = icmp ne ptr %1211, null
  br i1 %1212, label %1295, label %1213

1213:                                             ; preds = %1198
  %1214 = load ptr, ptr %31, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1214, i32 0, i32 2
  %1216 = getelementptr inbounds %struct.UT_hash_handle, ptr %1215, i32 0, i32 2
  store ptr null, ptr %1216, align 8, !tbaa !51
  %1217 = load ptr, ptr %31, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1217, i32 0, i32 2
  %1219 = getelementptr inbounds %struct.UT_hash_handle, ptr %1218, i32 0, i32 1
  store ptr null, ptr %1219, align 8, !tbaa !52
  br label %1220

1220:                                             ; preds = %1213
  %1221 = call noalias ptr @malloc(i64 noundef 64) #12
  %1222 = load ptr, ptr %31, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1222, i32 0, i32 2
  %1224 = getelementptr inbounds %struct.UT_hash_handle, ptr %1223, i32 0, i32 0
  store ptr %1221, ptr %1224, align 8, !tbaa !32
  %1225 = load ptr, ptr %31, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1225, i32 0, i32 2
  %1227 = getelementptr inbounds %struct.UT_hash_handle, ptr %1226, i32 0, i32 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !32
  %1229 = icmp ne ptr %1228, null
  br i1 %1229, label %1231, label %1230

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

1231:                                             ; preds = %1220
  %1232 = load ptr, ptr %31, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1232, i32 0, i32 2
  %1234 = getelementptr inbounds %struct.UT_hash_handle, ptr %1233, i32 0, i32 0
  %1235 = load ptr, ptr %1234, align 8, !tbaa !32
  call void @llvm.memset.p0.i64(ptr align 8 %1235, i8 0, i64 64, i1 false)
  %1236 = load ptr, ptr %31, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1236, i32 0, i32 2
  %1238 = load ptr, ptr %31, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1238, i32 0, i32 2
  %1240 = getelementptr inbounds %struct.UT_hash_handle, ptr %1239, i32 0, i32 0
  %1241 = load ptr, ptr %1240, align 8, !tbaa !32
  %1242 = getelementptr inbounds %struct.UT_hash_table, ptr %1241, i32 0, i32 4
  store ptr %1237, ptr %1242, align 8, !tbaa !53
  %1243 = load ptr, ptr %31, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1243, i32 0, i32 2
  %1245 = getelementptr inbounds %struct.UT_hash_handle, ptr %1244, i32 0, i32 0
  %1246 = load ptr, ptr %1245, align 8, !tbaa !32
  %1247 = getelementptr inbounds %struct.UT_hash_table, ptr %1246, i32 0, i32 1
  store i32 32, ptr %1247, align 8, !tbaa !35
  %1248 = load ptr, ptr %31, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1248, i32 0, i32 2
  %1250 = getelementptr inbounds %struct.UT_hash_handle, ptr %1249, i32 0, i32 0
  %1251 = load ptr, ptr %1250, align 8, !tbaa !32
  %1252 = getelementptr inbounds %struct.UT_hash_table, ptr %1251, i32 0, i32 2
  store i32 5, ptr %1252, align 4, !tbaa !54
  %1253 = load ptr, ptr %31, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1253, i32 0, i32 2
  %1255 = load ptr, ptr %31, align 8, !tbaa !5
  %1256 = ptrtoint ptr %1254 to i64
  %1257 = ptrtoint ptr %1255 to i64
  %1258 = sub i64 %1256, %1257
  %1259 = load ptr, ptr %31, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1259, i32 0, i32 2
  %1261 = getelementptr inbounds %struct.UT_hash_handle, ptr %1260, i32 0, i32 0
  %1262 = load ptr, ptr %1261, align 8, !tbaa !32
  %1263 = getelementptr inbounds %struct.UT_hash_table, ptr %1262, i32 0, i32 5
  store i64 %1258, ptr %1263, align 8, !tbaa !41
  %1264 = call noalias ptr @malloc(i64 noundef 512) #12
  %1265 = load ptr, ptr %31, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1265, i32 0, i32 2
  %1267 = getelementptr inbounds %struct.UT_hash_handle, ptr %1266, i32 0, i32 0
  %1268 = load ptr, ptr %1267, align 8, !tbaa !32
  %1269 = getelementptr inbounds %struct.UT_hash_table, ptr %1268, i32 0, i32 0
  store ptr %1264, ptr %1269, align 8, !tbaa !38
  %1270 = load ptr, ptr %31, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1270, i32 0, i32 2
  %1272 = getelementptr inbounds %struct.UT_hash_handle, ptr %1271, i32 0, i32 0
  %1273 = load ptr, ptr %1272, align 8, !tbaa !32
  %1274 = getelementptr inbounds %struct.UT_hash_table, ptr %1273, i32 0, i32 10
  store i32 -1609490463, ptr %1274, align 8, !tbaa !55
  %1275 = load ptr, ptr %31, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1275, i32 0, i32 2
  %1277 = getelementptr inbounds %struct.UT_hash_handle, ptr %1276, i32 0, i32 0
  %1278 = load ptr, ptr %1277, align 8, !tbaa !32
  %1279 = getelementptr inbounds %struct.UT_hash_table, ptr %1278, i32 0, i32 0
  %1280 = load ptr, ptr %1279, align 8, !tbaa !38
  %1281 = icmp ne ptr %1280, null
  br i1 %1281, label %1283, label %1282

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

1283:                                             ; preds = %1231
  %1284 = load ptr, ptr %31, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1284, i32 0, i32 2
  %1286 = getelementptr inbounds %struct.UT_hash_handle, ptr %1285, i32 0, i32 0
  %1287 = load ptr, ptr %1286, align 8, !tbaa !32
  %1288 = getelementptr inbounds %struct.UT_hash_table, ptr %1287, i32 0, i32 0
  %1289 = load ptr, ptr %1288, align 8, !tbaa !38
  call void @llvm.memset.p0.i64(ptr align 8 %1289, i8 0, i64 512, i1 false)
  br label %1290

1290:                                             ; preds = %1283
  br label %1291

1291:                                             ; preds = %1290
  br label %1292

1292:                                             ; preds = %1291
  br label %1293

1293:                                             ; preds = %1292
  %1294 = load ptr, ptr %31, align 8, !tbaa !5
  store ptr %1294, ptr %25, align 8, !tbaa !5
  br label %1341

1295:                                             ; preds = %1198
  %1296 = load ptr, ptr %25, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1296, i32 0, i32 2
  %1298 = getelementptr inbounds %struct.UT_hash_handle, ptr %1297, i32 0, i32 0
  %1299 = load ptr, ptr %1298, align 8, !tbaa !32
  %1300 = load ptr, ptr %31, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1300, i32 0, i32 2
  %1302 = getelementptr inbounds %struct.UT_hash_handle, ptr %1301, i32 0, i32 0
  store ptr %1299, ptr %1302, align 8, !tbaa !32
  br label %1303

1303:                                             ; preds = %1295
  %1304 = load ptr, ptr %31, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1304, i32 0, i32 2
  %1306 = getelementptr inbounds %struct.UT_hash_handle, ptr %1305, i32 0, i32 2
  store ptr null, ptr %1306, align 8, !tbaa !51
  %1307 = load ptr, ptr %25, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1307, i32 0, i32 2
  %1309 = getelementptr inbounds %struct.UT_hash_handle, ptr %1308, i32 0, i32 0
  %1310 = load ptr, ptr %1309, align 8, !tbaa !32
  %1311 = getelementptr inbounds %struct.UT_hash_table, ptr %1310, i32 0, i32 4
  %1312 = load ptr, ptr %1311, align 8, !tbaa !53
  %1313 = load ptr, ptr %25, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1313, i32 0, i32 2
  %1315 = getelementptr inbounds %struct.UT_hash_handle, ptr %1314, i32 0, i32 0
  %1316 = load ptr, ptr %1315, align 8, !tbaa !32
  %1317 = getelementptr inbounds %struct.UT_hash_table, ptr %1316, i32 0, i32 5
  %1318 = load i64, ptr %1317, align 8, !tbaa !41
  %1319 = sub i64 0, %1318
  %1320 = getelementptr inbounds i8, ptr %1312, i64 %1319
  %1321 = load ptr, ptr %31, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1321, i32 0, i32 2
  %1323 = getelementptr inbounds %struct.UT_hash_handle, ptr %1322, i32 0, i32 1
  store ptr %1320, ptr %1323, align 8, !tbaa !52
  %1324 = load ptr, ptr %31, align 8, !tbaa !5
  %1325 = load ptr, ptr %25, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1325, i32 0, i32 2
  %1327 = getelementptr inbounds %struct.UT_hash_handle, ptr %1326, i32 0, i32 0
  %1328 = load ptr, ptr %1327, align 8, !tbaa !32
  %1329 = getelementptr inbounds %struct.UT_hash_table, ptr %1328, i32 0, i32 4
  %1330 = load ptr, ptr %1329, align 8, !tbaa !53
  %1331 = getelementptr inbounds %struct.UT_hash_handle, ptr %1330, i32 0, i32 2
  store ptr %1324, ptr %1331, align 8, !tbaa !56
  %1332 = load ptr, ptr %31, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1332, i32 0, i32 2
  %1334 = load ptr, ptr %25, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1334, i32 0, i32 2
  %1336 = getelementptr inbounds %struct.UT_hash_handle, ptr %1335, i32 0, i32 0
  %1337 = load ptr, ptr %1336, align 8, !tbaa !32
  %1338 = getelementptr inbounds %struct.UT_hash_table, ptr %1337, i32 0, i32 4
  store ptr %1333, ptr %1338, align 8, !tbaa !53
  br label %1339

1339:                                             ; preds = %1303
  br label %1340

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340, %1293
  br label %1342

1342:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %1343 = load ptr, ptr %25, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1343, i32 0, i32 2
  %1345 = getelementptr inbounds %struct.UT_hash_handle, ptr %1344, i32 0, i32 0
  %1346 = load ptr, ptr %1345, align 8, !tbaa !32
  %1347 = getelementptr inbounds %struct.UT_hash_table, ptr %1346, i32 0, i32 3
  %1348 = load i32, ptr %1347, align 8, !tbaa !48
  %1349 = add i32 %1348, 1
  store i32 %1349, ptr %1347, align 8, !tbaa !48
  br label %1350

1350:                                             ; preds = %1342
  %1351 = load i32, ptr %38, align 4, !tbaa !9
  %1352 = load ptr, ptr %25, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1352, i32 0, i32 2
  %1354 = getelementptr inbounds %struct.UT_hash_handle, ptr %1353, i32 0, i32 0
  %1355 = load ptr, ptr %1354, align 8, !tbaa !32
  %1356 = getelementptr inbounds %struct.UT_hash_table, ptr %1355, i32 0, i32 1
  %1357 = load i32, ptr %1356, align 8, !tbaa !35
  %1358 = sub i32 %1357, 1
  %1359 = and i32 %1351, %1358
  store i32 %1359, ptr %43, align 4, !tbaa !9
  br label %1360

1360:                                             ; preds = %1350
  br label %1361

1361:                                             ; preds = %1360
  br label %1362

1362:                                             ; preds = %1361
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %1363 = load ptr, ptr %25, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1363, i32 0, i32 2
  %1365 = getelementptr inbounds %struct.UT_hash_handle, ptr %1364, i32 0, i32 0
  %1366 = load ptr, ptr %1365, align 8, !tbaa !32
  %1367 = getelementptr inbounds %struct.UT_hash_table, ptr %1366, i32 0, i32 0
  %1368 = load ptr, ptr %1367, align 8, !tbaa !38
  %1369 = load i32, ptr %43, align 4, !tbaa !9
  %1370 = zext i32 %1369 to i64
  %1371 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1368, i64 %1370
  store ptr %1371, ptr %44, align 8, !tbaa !5
  %1372 = load ptr, ptr %44, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1372, i32 0, i32 1
  %1374 = load i32, ptr %1373, align 8, !tbaa !57
  %1375 = add i32 %1374, 1
  store i32 %1375, ptr %1373, align 8, !tbaa !57
  %1376 = load ptr, ptr %44, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1376, i32 0, i32 0
  %1378 = load ptr, ptr %1377, align 8, !tbaa !39
  %1379 = load ptr, ptr %31, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1379, i32 0, i32 2
  %1381 = getelementptr inbounds %struct.UT_hash_handle, ptr %1380, i32 0, i32 4
  store ptr %1378, ptr %1381, align 8, !tbaa !45
  %1382 = load ptr, ptr %31, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1382, i32 0, i32 2
  %1384 = getelementptr inbounds %struct.UT_hash_handle, ptr %1383, i32 0, i32 3
  store ptr null, ptr %1384, align 8, !tbaa !58
  %1385 = load ptr, ptr %44, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1385, i32 0, i32 0
  %1387 = load ptr, ptr %1386, align 8, !tbaa !39
  %1388 = icmp ne ptr %1387, null
  br i1 %1388, label %1389, label %1396

1389:                                             ; preds = %1362
  %1390 = load ptr, ptr %31, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1390, i32 0, i32 2
  %1392 = load ptr, ptr %44, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1392, i32 0, i32 0
  %1394 = load ptr, ptr %1393, align 8, !tbaa !39
  %1395 = getelementptr inbounds %struct.UT_hash_handle, ptr %1394, i32 0, i32 3
  store ptr %1391, ptr %1395, align 8, !tbaa !59
  br label %1396

1396:                                             ; preds = %1389, %1362
  %1397 = load ptr, ptr %31, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1397, i32 0, i32 2
  %1399 = load ptr, ptr %44, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1399, i32 0, i32 0
  store ptr %1398, ptr %1400, align 8, !tbaa !39
  %1401 = load ptr, ptr %44, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1401, i32 0, i32 1
  %1403 = load i32, ptr %1402, align 8, !tbaa !57
  %1404 = load ptr, ptr %44, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1404, i32 0, i32 2
  %1406 = load i32, ptr %1405, align 4, !tbaa !60
  %1407 = add i32 %1406, 1
  %1408 = mul i32 %1407, 10
  %1409 = icmp uge i32 %1403, %1408
  br i1 %1409, label %1410, label %1666

1410:                                             ; preds = %1396
  %1411 = load ptr, ptr %31, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1411, i32 0, i32 2
  %1413 = getelementptr inbounds %struct.UT_hash_handle, ptr %1412, i32 0, i32 0
  %1414 = load ptr, ptr %1413, align 8, !tbaa !32
  %1415 = getelementptr inbounds %struct.UT_hash_table, ptr %1414, i32 0, i32 9
  %1416 = load i32, ptr %1415, align 4, !tbaa !61
  %1417 = icmp ne i32 %1416, 0
  br i1 %1417, label %1666, label %1418

1418:                                             ; preds = %1410
  br label %1419

1419:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %1420 = load ptr, ptr %31, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1420, i32 0, i32 2
  %1422 = getelementptr inbounds %struct.UT_hash_handle, ptr %1421, i32 0, i32 0
  %1423 = load ptr, ptr %1422, align 8, !tbaa !32
  %1424 = getelementptr inbounds %struct.UT_hash_table, ptr %1423, i32 0, i32 1
  %1425 = load i32, ptr %1424, align 8, !tbaa !35
  %1426 = zext i32 %1425 to i64
  %1427 = mul i64 2, %1426
  %1428 = mul i64 %1427, 16
  %1429 = call noalias ptr @malloc(i64 noundef %1428) #12
  store ptr %1429, ptr %49, align 8, !tbaa !5
  %1430 = load ptr, ptr %49, align 8, !tbaa !5
  %1431 = icmp ne ptr %1430, null
  br i1 %1431, label %1433, label %1432

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

1433:                                             ; preds = %1419
  %1434 = load ptr, ptr %49, align 8, !tbaa !5
  %1435 = load ptr, ptr %31, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1435, i32 0, i32 2
  %1437 = getelementptr inbounds %struct.UT_hash_handle, ptr %1436, i32 0, i32 0
  %1438 = load ptr, ptr %1437, align 8, !tbaa !32
  %1439 = getelementptr inbounds %struct.UT_hash_table, ptr %1438, i32 0, i32 1
  %1440 = load i32, ptr %1439, align 8, !tbaa !35
  %1441 = zext i32 %1440 to i64
  %1442 = mul i64 2, %1441
  %1443 = mul i64 %1442, 16
  call void @llvm.memset.p0.i64(ptr align 8 %1434, i8 0, i64 %1443, i1 false)
  %1444 = load ptr, ptr %31, align 8, !tbaa !5
  %1445 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1444, i32 0, i32 2
  %1446 = getelementptr inbounds %struct.UT_hash_handle, ptr %1445, i32 0, i32 0
  %1447 = load ptr, ptr %1446, align 8, !tbaa !32
  %1448 = getelementptr inbounds %struct.UT_hash_table, ptr %1447, i32 0, i32 3
  %1449 = load i32, ptr %1448, align 8, !tbaa !48
  %1450 = load ptr, ptr %31, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1450, i32 0, i32 2
  %1452 = getelementptr inbounds %struct.UT_hash_handle, ptr %1451, i32 0, i32 0
  %1453 = load ptr, ptr %1452, align 8, !tbaa !32
  %1454 = getelementptr inbounds %struct.UT_hash_table, ptr %1453, i32 0, i32 2
  %1455 = load i32, ptr %1454, align 4, !tbaa !54
  %1456 = add i32 %1455, 1
  %1457 = lshr i32 %1449, %1456
  %1458 = load ptr, ptr %31, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1458, i32 0, i32 2
  %1460 = getelementptr inbounds %struct.UT_hash_handle, ptr %1459, i32 0, i32 0
  %1461 = load ptr, ptr %1460, align 8, !tbaa !32
  %1462 = getelementptr inbounds %struct.UT_hash_table, ptr %1461, i32 0, i32 3
  %1463 = load i32, ptr %1462, align 8, !tbaa !48
  %1464 = load ptr, ptr %31, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1464, i32 0, i32 2
  %1466 = getelementptr inbounds %struct.UT_hash_handle, ptr %1465, i32 0, i32 0
  %1467 = load ptr, ptr %1466, align 8, !tbaa !32
  %1468 = getelementptr inbounds %struct.UT_hash_table, ptr %1467, i32 0, i32 1
  %1469 = load i32, ptr %1468, align 8, !tbaa !35
  %1470 = mul i32 %1469, 2
  %1471 = sub i32 %1470, 1
  %1472 = and i32 %1463, %1471
  %1473 = icmp ne i32 %1472, 0
  %1474 = zext i1 %1473 to i64
  %1475 = select i1 %1473, i32 1, i32 0
  %1476 = add i32 %1457, %1475
  %1477 = load ptr, ptr %31, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1477, i32 0, i32 2
  %1479 = getelementptr inbounds %struct.UT_hash_handle, ptr %1478, i32 0, i32 0
  %1480 = load ptr, ptr %1479, align 8, !tbaa !32
  %1481 = getelementptr inbounds %struct.UT_hash_table, ptr %1480, i32 0, i32 6
  store i32 %1476, ptr %1481, align 8, !tbaa !62
  %1482 = load ptr, ptr %31, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1482, i32 0, i32 2
  %1484 = getelementptr inbounds %struct.UT_hash_handle, ptr %1483, i32 0, i32 0
  %1485 = load ptr, ptr %1484, align 8, !tbaa !32
  %1486 = getelementptr inbounds %struct.UT_hash_table, ptr %1485, i32 0, i32 7
  store i32 0, ptr %1486, align 4, !tbaa !63
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %1487

1487:                                             ; preds = %1589, %1433
  %1488 = load i32, ptr %46, align 4, !tbaa !9
  %1489 = load ptr, ptr %31, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1489, i32 0, i32 2
  %1491 = getelementptr inbounds %struct.UT_hash_handle, ptr %1490, i32 0, i32 0
  %1492 = load ptr, ptr %1491, align 8, !tbaa !32
  %1493 = getelementptr inbounds %struct.UT_hash_table, ptr %1492, i32 0, i32 1
  %1494 = load i32, ptr %1493, align 8, !tbaa !35
  %1495 = icmp ult i32 %1488, %1494
  br i1 %1495, label %1496, label %1592

1496:                                             ; preds = %1487
  %1497 = load ptr, ptr %31, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1497, i32 0, i32 2
  %1499 = getelementptr inbounds %struct.UT_hash_handle, ptr %1498, i32 0, i32 0
  %1500 = load ptr, ptr %1499, align 8, !tbaa !32
  %1501 = getelementptr inbounds %struct.UT_hash_table, ptr %1500, i32 0, i32 0
  %1502 = load ptr, ptr %1501, align 8, !tbaa !38
  %1503 = load i32, ptr %46, align 4, !tbaa !9
  %1504 = zext i32 %1503 to i64
  %1505 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1502, i64 %1504
  %1506 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1505, i32 0, i32 0
  %1507 = load ptr, ptr %1506, align 8, !tbaa !39
  store ptr %1507, ptr %47, align 8, !tbaa !5
  br label %1508

1508:                                             ; preds = %1583, %1496
  %1509 = load ptr, ptr %47, align 8, !tbaa !5
  %1510 = icmp ne ptr %1509, null
  br i1 %1510, label %1511, label %1588

1511:                                             ; preds = %1508
  %1512 = load ptr, ptr %47, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.UT_hash_handle, ptr %1512, i32 0, i32 4
  %1514 = load ptr, ptr %1513, align 8, !tbaa !64
  store ptr %1514, ptr %48, align 8, !tbaa !5
  br label %1515

1515:                                             ; preds = %1511
  %1516 = load ptr, ptr %47, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.UT_hash_handle, ptr %1516, i32 0, i32 7
  %1518 = load i32, ptr %1517, align 4, !tbaa !65
  %1519 = load ptr, ptr %31, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1519, i32 0, i32 2
  %1521 = getelementptr inbounds %struct.UT_hash_handle, ptr %1520, i32 0, i32 0
  %1522 = load ptr, ptr %1521, align 8, !tbaa !32
  %1523 = getelementptr inbounds %struct.UT_hash_table, ptr %1522, i32 0, i32 1
  %1524 = load i32, ptr %1523, align 8, !tbaa !35
  %1525 = mul i32 %1524, 2
  %1526 = sub i32 %1525, 1
  %1527 = and i32 %1518, %1526
  store i32 %1527, ptr %45, align 4, !tbaa !9
  br label %1528

1528:                                             ; preds = %1515
  br label %1529

1529:                                             ; preds = %1528
  %1530 = load ptr, ptr %49, align 8, !tbaa !5
  %1531 = load i32, ptr %45, align 4, !tbaa !9
  %1532 = zext i32 %1531 to i64
  %1533 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1530, i64 %1532
  store ptr %1533, ptr %50, align 8, !tbaa !5
  %1534 = load ptr, ptr %50, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1534, i32 0, i32 1
  %1536 = load i32, ptr %1535, align 8, !tbaa !57
  %1537 = add i32 %1536, 1
  store i32 %1537, ptr %1535, align 8, !tbaa !57
  %1538 = load ptr, ptr %31, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1538, i32 0, i32 2
  %1540 = getelementptr inbounds %struct.UT_hash_handle, ptr %1539, i32 0, i32 0
  %1541 = load ptr, ptr %1540, align 8, !tbaa !32
  %1542 = getelementptr inbounds %struct.UT_hash_table, ptr %1541, i32 0, i32 6
  %1543 = load i32, ptr %1542, align 8, !tbaa !62
  %1544 = icmp ugt i32 %1537, %1543
  br i1 %1544, label %1545, label %1565

1545:                                             ; preds = %1529
  %1546 = load ptr, ptr %31, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1546, i32 0, i32 2
  %1548 = getelementptr inbounds %struct.UT_hash_handle, ptr %1547, i32 0, i32 0
  %1549 = load ptr, ptr %1548, align 8, !tbaa !32
  %1550 = getelementptr inbounds %struct.UT_hash_table, ptr %1549, i32 0, i32 7
  %1551 = load i32, ptr %1550, align 4, !tbaa !63
  %1552 = add i32 %1551, 1
  store i32 %1552, ptr %1550, align 4, !tbaa !63
  %1553 = load ptr, ptr %50, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1553, i32 0, i32 1
  %1555 = load i32, ptr %1554, align 8, !tbaa !57
  %1556 = load ptr, ptr %31, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1556, i32 0, i32 2
  %1558 = getelementptr inbounds %struct.UT_hash_handle, ptr %1557, i32 0, i32 0
  %1559 = load ptr, ptr %1558, align 8, !tbaa !32
  %1560 = getelementptr inbounds %struct.UT_hash_table, ptr %1559, i32 0, i32 6
  %1561 = load i32, ptr %1560, align 8, !tbaa !62
  %1562 = udiv i32 %1555, %1561
  %1563 = load ptr, ptr %50, align 8, !tbaa !5
  %1564 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1563, i32 0, i32 2
  store i32 %1562, ptr %1564, align 4, !tbaa !60
  br label %1565

1565:                                             ; preds = %1545, %1529
  %1566 = load ptr, ptr %47, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.UT_hash_handle, ptr %1566, i32 0, i32 3
  store ptr null, ptr %1567, align 8, !tbaa !59
  %1568 = load ptr, ptr %50, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1568, i32 0, i32 0
  %1570 = load ptr, ptr %1569, align 8, !tbaa !39
  %1571 = load ptr, ptr %47, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.UT_hash_handle, ptr %1571, i32 0, i32 4
  store ptr %1570, ptr %1572, align 8, !tbaa !64
  %1573 = load ptr, ptr %50, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1573, i32 0, i32 0
  %1575 = load ptr, ptr %1574, align 8, !tbaa !39
  %1576 = icmp ne ptr %1575, null
  br i1 %1576, label %1577, label %1583

1577:                                             ; preds = %1565
  %1578 = load ptr, ptr %47, align 8, !tbaa !5
  %1579 = load ptr, ptr %50, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1579, i32 0, i32 0
  %1581 = load ptr, ptr %1580, align 8, !tbaa !39
  %1582 = getelementptr inbounds %struct.UT_hash_handle, ptr %1581, i32 0, i32 3
  store ptr %1578, ptr %1582, align 8, !tbaa !59
  br label %1583

1583:                                             ; preds = %1577, %1565
  %1584 = load ptr, ptr %47, align 8, !tbaa !5
  %1585 = load ptr, ptr %50, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1585, i32 0, i32 0
  store ptr %1584, ptr %1586, align 8, !tbaa !39
  %1587 = load ptr, ptr %48, align 8, !tbaa !5
  store ptr %1587, ptr %47, align 8, !tbaa !5
  br label %1508, !llvm.loop !66

1588:                                             ; preds = %1508
  br label %1589

1589:                                             ; preds = %1588
  %1590 = load i32, ptr %46, align 4, !tbaa !9
  %1591 = add i32 %1590, 1
  store i32 %1591, ptr %46, align 4, !tbaa !9
  br label %1487, !llvm.loop !67

1592:                                             ; preds = %1487
  %1593 = load ptr, ptr %31, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1593, i32 0, i32 2
  %1595 = getelementptr inbounds %struct.UT_hash_handle, ptr %1594, i32 0, i32 0
  %1596 = load ptr, ptr %1595, align 8, !tbaa !32
  %1597 = getelementptr inbounds %struct.UT_hash_table, ptr %1596, i32 0, i32 0
  %1598 = load ptr, ptr %1597, align 8, !tbaa !38
  call void @free(ptr noundef %1598) #10
  %1599 = load ptr, ptr %31, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1599, i32 0, i32 2
  %1601 = getelementptr inbounds %struct.UT_hash_handle, ptr %1600, i32 0, i32 0
  %1602 = load ptr, ptr %1601, align 8, !tbaa !32
  %1603 = getelementptr inbounds %struct.UT_hash_table, ptr %1602, i32 0, i32 1
  %1604 = load i32, ptr %1603, align 8, !tbaa !35
  %1605 = mul i32 %1604, 2
  store i32 %1605, ptr %1603, align 8, !tbaa !35
  %1606 = load ptr, ptr %31, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1606, i32 0, i32 2
  %1608 = getelementptr inbounds %struct.UT_hash_handle, ptr %1607, i32 0, i32 0
  %1609 = load ptr, ptr %1608, align 8, !tbaa !32
  %1610 = getelementptr inbounds %struct.UT_hash_table, ptr %1609, i32 0, i32 2
  %1611 = load i32, ptr %1610, align 4, !tbaa !54
  %1612 = add i32 %1611, 1
  store i32 %1612, ptr %1610, align 4, !tbaa !54
  %1613 = load ptr, ptr %49, align 8, !tbaa !5
  %1614 = load ptr, ptr %31, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1614, i32 0, i32 2
  %1616 = getelementptr inbounds %struct.UT_hash_handle, ptr %1615, i32 0, i32 0
  %1617 = load ptr, ptr %1616, align 8, !tbaa !32
  %1618 = getelementptr inbounds %struct.UT_hash_table, ptr %1617, i32 0, i32 0
  store ptr %1613, ptr %1618, align 8, !tbaa !38
  %1619 = load ptr, ptr %31, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1619, i32 0, i32 2
  %1621 = getelementptr inbounds %struct.UT_hash_handle, ptr %1620, i32 0, i32 0
  %1622 = load ptr, ptr %1621, align 8, !tbaa !32
  %1623 = getelementptr inbounds %struct.UT_hash_table, ptr %1622, i32 0, i32 7
  %1624 = load i32, ptr %1623, align 4, !tbaa !63
  %1625 = load ptr, ptr %31, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1625, i32 0, i32 2
  %1627 = getelementptr inbounds %struct.UT_hash_handle, ptr %1626, i32 0, i32 0
  %1628 = load ptr, ptr %1627, align 8, !tbaa !32
  %1629 = getelementptr inbounds %struct.UT_hash_table, ptr %1628, i32 0, i32 3
  %1630 = load i32, ptr %1629, align 8, !tbaa !48
  %1631 = lshr i32 %1630, 1
  %1632 = icmp ugt i32 %1624, %1631
  br i1 %1632, label %1633, label %1641

1633:                                             ; preds = %1592
  %1634 = load ptr, ptr %31, align 8, !tbaa !5
  %1635 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1634, i32 0, i32 2
  %1636 = getelementptr inbounds %struct.UT_hash_handle, ptr %1635, i32 0, i32 0
  %1637 = load ptr, ptr %1636, align 8, !tbaa !32
  %1638 = getelementptr inbounds %struct.UT_hash_table, ptr %1637, i32 0, i32 8
  %1639 = load i32, ptr %1638, align 8, !tbaa !68
  %1640 = add i32 %1639, 1
  br label %1642

1641:                                             ; preds = %1592
  br label %1642

1642:                                             ; preds = %1641, %1633
  %1643 = phi i32 [ %1640, %1633 ], [ 0, %1641 ]
  %1644 = load ptr, ptr %31, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1644, i32 0, i32 2
  %1646 = getelementptr inbounds %struct.UT_hash_handle, ptr %1645, i32 0, i32 0
  %1647 = load ptr, ptr %1646, align 8, !tbaa !32
  %1648 = getelementptr inbounds %struct.UT_hash_table, ptr %1647, i32 0, i32 8
  store i32 %1643, ptr %1648, align 8, !tbaa !68
  %1649 = load ptr, ptr %31, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1649, i32 0, i32 2
  %1651 = getelementptr inbounds %struct.UT_hash_handle, ptr %1650, i32 0, i32 0
  %1652 = load ptr, ptr %1651, align 8, !tbaa !32
  %1653 = getelementptr inbounds %struct.UT_hash_table, ptr %1652, i32 0, i32 8
  %1654 = load i32, ptr %1653, align 8, !tbaa !68
  %1655 = icmp ugt i32 %1654, 1
  br i1 %1655, label %1656, label %1662

1656:                                             ; preds = %1642
  %1657 = load ptr, ptr %31, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1657, i32 0, i32 2
  %1659 = getelementptr inbounds %struct.UT_hash_handle, ptr %1658, i32 0, i32 0
  %1660 = load ptr, ptr %1659, align 8, !tbaa !32
  %1661 = getelementptr inbounds %struct.UT_hash_table, ptr %1660, i32 0, i32 9
  store i32 1, ptr %1661, align 4, !tbaa !61
  br label %1662

1662:                                             ; preds = %1656, %1642
  br label %1663

1663:                                             ; preds = %1662
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1664

1664:                                             ; preds = %1663
  br label %1665

1665:                                             ; preds = %1664
  br label %1666

1666:                                             ; preds = %1665, %1410, %1396
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %1667

1667:                                             ; preds = %1666
  br label %1668

1668:                                             ; preds = %1667
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %1669

1669:                                             ; preds = %1668
  br label %1670

1670:                                             ; preds = %1669
  br label %1671

1671:                                             ; preds = %1670
  br label %1672

1672:                                             ; preds = %1671
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %1673

1673:                                             ; preds = %1672
  br label %1674

1674:                                             ; preds = %1673
  br label %1675

1675:                                             ; preds = %1674, %809
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  br label %1676

1676:                                             ; preds = %1675
  %1677 = load i16, ptr %29, align 2, !tbaa !11
  %1678 = add i16 %1677, 1
  store i16 %1678, ptr %29, align 2, !tbaa !11
  br label %308, !llvm.loop !69

1679:                                             ; preds = %314
  call void @llvm.lifetime.end.p0(i64 2, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %1680

1680:                                             ; preds = %1679
  %1681 = load i16, ptr %26, align 2, !tbaa !11
  %1682 = add i16 %1681, 1
  store i16 %1682, ptr %26, align 2, !tbaa !11
  br label %281, !llvm.loop !70

1683:                                             ; preds = %287
  %1684 = call ptr @__caryll_allocate_clean(i64 noundef 32, i64 noundef 89)
  %1685 = load ptr, ptr %12, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1685, i32 0, i32 1
  store ptr %1684, ptr %1686, align 8, !tbaa !71
  %1687 = load ptr, ptr %25, align 8, !tbaa !5
  %1688 = icmp ne ptr %1687, null
  br i1 %1688, label %1689, label %1696

1689:                                             ; preds = %1683
  %1690 = load ptr, ptr %25, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1690, i32 0, i32 2
  %1692 = getelementptr inbounds %struct.UT_hash_handle, ptr %1691, i32 0, i32 0
  %1693 = load ptr, ptr %1692, align 8, !tbaa !32
  %1694 = getelementptr inbounds %struct.UT_hash_table, ptr %1693, i32 0, i32 3
  %1695 = load i32, ptr %1694, align 8, !tbaa !48
  br label %1697

1696:                                             ; preds = %1683
  br label %1697

1697:                                             ; preds = %1696, %1689
  %1698 = phi i32 [ %1695, %1689 ], [ 0, %1696 ]
  %1699 = trunc i32 %1698 to i16
  %1700 = load ptr, ptr %12, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1700, i32 0, i32 1
  %1702 = load ptr, ptr %1701, align 8, !tbaa !71
  %1703 = getelementptr inbounds %struct.otl_ClassDef, ptr %1702, i32 0, i32 0
  store i16 %1699, ptr %1703, align 8, !tbaa !21
  %1704 = load ptr, ptr %25, align 8, !tbaa !5
  %1705 = icmp ne ptr %1704, null
  br i1 %1705, label %1706, label %1713

1706:                                             ; preds = %1697
  %1707 = load ptr, ptr %25, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.pair_classifier_hash, ptr %1707, i32 0, i32 2
  %1709 = getelementptr inbounds %struct.UT_hash_handle, ptr %1708, i32 0, i32 0
  %1710 = load ptr, ptr %1709, align 8, !tbaa !32
  %1711 = getelementptr inbounds %struct.UT_hash_table, ptr %1710, i32 0, i32 3
  %1712 = load i32, ptr %1711, align 8, !tbaa !48
  br label %1714

1713:                                             ; preds = %1697
  br label %1714

1714:                                             ; preds = %1713, %1706
  %1715 = phi i32 [ %1712, %1706 ], [ 0, %1713 ]
  %1716 = trunc i32 %1715 to i16
  %1717 = load ptr, ptr %12, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1717, i32 0, i32 1
  %1719 = load ptr, ptr %1718, align 8, !tbaa !71
  %1720 = getelementptr inbounds %struct.otl_ClassDef, ptr %1719, i32 0, i32 2
  store i16 %1716, ptr %1720, align 8, !tbaa !23
  %1721 = load ptr, ptr %12, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1721, i32 0, i32 1
  %1723 = load ptr, ptr %1722, align 8, !tbaa !71
  %1724 = getelementptr inbounds %struct.otl_ClassDef, ptr %1723, i32 0, i32 0
  %1725 = load i16, ptr %1724, align 8, !tbaa !21
  %1726 = zext i16 %1725 to i64
  %1727 = mul i64 2, %1726
  %1728 = call ptr @__caryll_allocate_clean(i64 noundef %1727, i64 noundef 92)
  %1729 = load ptr, ptr %12, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1729, i32 0, i32 1
  %1731 = load ptr, ptr %1730, align 8, !tbaa !71
  %1732 = getelementptr inbounds %struct.otl_ClassDef, ptr %1731, i32 0, i32 4
  store ptr %1728, ptr %1732, align 8, !tbaa !26
  %1733 = load ptr, ptr %12, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1733, i32 0, i32 1
  %1735 = load ptr, ptr %1734, align 8, !tbaa !71
  %1736 = getelementptr inbounds %struct.otl_ClassDef, ptr %1735, i32 0, i32 0
  %1737 = load i16, ptr %1736, align 8, !tbaa !21
  %1738 = zext i16 %1737 to i64
  %1739 = mul i64 16, %1738
  %1740 = call ptr @__caryll_allocate_clean(i64 noundef %1739, i64 noundef 93)
  %1741 = load ptr, ptr %12, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1741, i32 0, i32 1
  %1743 = load ptr, ptr %1742, align 8, !tbaa !71
  %1744 = getelementptr inbounds %struct.otl_ClassDef, ptr %1743, i32 0, i32 3
  store ptr %1740, ptr %1744, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 2, ptr %51) #10
  %1745 = load ptr, ptr %12, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1745, i32 0, i32 1
  %1747 = load ptr, ptr %1746, align 8, !tbaa !71
  %1748 = getelementptr inbounds %struct.otl_ClassDef, ptr %1747, i32 0, i32 2
  %1749 = load i16, ptr %1748, align 8, !tbaa !23
  %1750 = zext i16 %1749 to i32
  %1751 = add nsw i32 %1750, 1
  %1752 = trunc i32 %1751 to i16
  store i16 %1752, ptr %51, align 2, !tbaa !11
  %1753 = load ptr, ptr %12, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1753, i32 0, i32 0
  %1755 = load ptr, ptr %1754, align 8, !tbaa !17
  %1756 = getelementptr inbounds %struct.otl_ClassDef, ptr %1755, i32 0, i32 2
  %1757 = load i16, ptr %1756, align 8, !tbaa !23
  %1758 = zext i16 %1757 to i32
  %1759 = add nsw i32 %1758, 1
  %1760 = sext i32 %1759 to i64
  %1761 = mul i64 8, %1760
  %1762 = call ptr @__caryll_allocate_clean(i64 noundef %1761, i64 noundef 96)
  %1763 = load ptr, ptr %12, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1763, i32 0, i32 2
  store ptr %1762, ptr %1764, align 8, !tbaa !72
  %1765 = load ptr, ptr %12, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1765, i32 0, i32 0
  %1767 = load ptr, ptr %1766, align 8, !tbaa !17
  %1768 = getelementptr inbounds %struct.otl_ClassDef, ptr %1767, i32 0, i32 2
  %1769 = load i16, ptr %1768, align 8, !tbaa !23
  %1770 = zext i16 %1769 to i32
  %1771 = add nsw i32 %1770, 1
  %1772 = sext i32 %1771 to i64
  %1773 = mul i64 8, %1772
  %1774 = call ptr @__caryll_allocate_clean(i64 noundef %1773, i64 noundef 97)
  %1775 = load ptr, ptr %12, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1775, i32 0, i32 3
  store ptr %1774, ptr %1776, align 8, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 2, ptr %52) #10
  store i16 0, ptr %52, align 2, !tbaa !11
  br label %1777

1777:                                             ; preds = %1841, %1714
  %1778 = load i16, ptr %52, align 2, !tbaa !11
  %1779 = zext i16 %1778 to i32
  %1780 = load ptr, ptr %12, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1780, i32 0, i32 0
  %1782 = load ptr, ptr %1781, align 8, !tbaa !17
  %1783 = getelementptr inbounds %struct.otl_ClassDef, ptr %1782, i32 0, i32 2
  %1784 = load i16, ptr %1783, align 8, !tbaa !23
  %1785 = zext i16 %1784 to i32
  %1786 = icmp sle i32 %1779, %1785
  br i1 %1786, label %1788, label %1787

1787:                                             ; preds = %1777
  store i32 74, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %52) #10
  br label %1844

1788:                                             ; preds = %1777
  %1789 = load i16, ptr %51, align 2, !tbaa !11
  %1790 = zext i16 %1789 to i64
  %1791 = mul i64 32, %1790
  %1792 = call ptr @__caryll_allocate_clean(i64 noundef %1791, i64 noundef 99)
  %1793 = load ptr, ptr %12, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1793, i32 0, i32 2
  %1795 = load ptr, ptr %1794, align 8, !tbaa !72
  %1796 = load i16, ptr %52, align 2, !tbaa !11
  %1797 = zext i16 %1796 to i64
  %1798 = getelementptr inbounds ptr, ptr %1795, i64 %1797
  store ptr %1792, ptr %1798, align 8, !tbaa !5
  %1799 = load i16, ptr %51, align 2, !tbaa !11
  %1800 = zext i16 %1799 to i64
  %1801 = mul i64 32, %1800
  %1802 = call ptr @__caryll_allocate_clean(i64 noundef %1801, i64 noundef 100)
  %1803 = load ptr, ptr %12, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1803, i32 0, i32 3
  %1805 = load ptr, ptr %1804, align 8, !tbaa !73
  %1806 = load i16, ptr %52, align 2, !tbaa !11
  %1807 = zext i16 %1806 to i64
  %1808 = getelementptr inbounds ptr, ptr %1805, i64 %1807
  store ptr %1802, ptr %1808, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %53) #10
  store i16 0, ptr %53, align 2, !tbaa !11
  br label %1809

1809:                                             ; preds = %1837, %1788
  %1810 = load i16, ptr %53, align 2, !tbaa !11
  %1811 = zext i16 %1810 to i32
  %1812 = load i16, ptr %51, align 2, !tbaa !11
  %1813 = zext i16 %1812 to i32
  %1814 = icmp slt i32 %1811, %1813
  br i1 %1814, label %1816, label %1815

1815:                                             ; preds = %1809
  store i32 77, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %53) #10
  br label %1840

1816:                                             ; preds = %1809
  %1817 = load ptr, ptr %12, align 8, !tbaa !5
  %1818 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1817, i32 0, i32 2
  %1819 = load ptr, ptr %1818, align 8, !tbaa !72
  %1820 = load i16, ptr %52, align 2, !tbaa !11
  %1821 = zext i16 %1820 to i64
  %1822 = getelementptr inbounds ptr, ptr %1819, i64 %1821
  %1823 = load ptr, ptr %1822, align 8, !tbaa !5
  %1824 = load i16, ptr %53, align 2, !tbaa !11
  %1825 = zext i16 %1824 to i64
  %1826 = getelementptr inbounds %struct.otl_PositionValue, ptr %1823, i64 %1825
  call void @llvm.lifetime.start.p0(i64 32, ptr %54) #10
  call void (ptr, ...) @position_zero(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %54)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1826, ptr align 8 %54, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %54) #10
  %1827 = load ptr, ptr %12, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1827, i32 0, i32 3
  %1829 = load ptr, ptr %1828, align 8, !tbaa !73
  %1830 = load i16, ptr %52, align 2, !tbaa !11
  %1831 = zext i16 %1830 to i64
  %1832 = getelementptr inbounds ptr, ptr %1829, i64 %1831
  %1833 = load ptr, ptr %1832, align 8, !tbaa !5
  %1834 = load i16, ptr %53, align 2, !tbaa !11
  %1835 = zext i16 %1834 to i64
  %1836 = getelementptr inbounds %struct.otl_PositionValue, ptr %1833, i64 %1835
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #10
  call void (ptr, ...) @position_zero(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %55)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1836, ptr align 8 %55, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #10
  br label %1837

1837:                                             ; preds = %1816
  %1838 = load i16, ptr %53, align 2, !tbaa !11
  %1839 = add i16 %1838, 1
  store i16 %1839, ptr %53, align 2, !tbaa !11
  br label %1809, !llvm.loop !77

1840:                                             ; preds = %1815
  br label %1841

1841:                                             ; preds = %1840
  %1842 = load i16, ptr %52, align 2, !tbaa !11
  %1843 = add i16 %1842, 1
  store i16 %1843, ptr %52, align 2, !tbaa !11
  br label %1777, !llvm.loop !78

1844:                                             ; preds = %1787
  call void @llvm.lifetime.start.p0(i64 2, ptr %56) #10
  store i16 0, ptr %56, align 2, !tbaa !11
  br label %1845

1845:                                             ; preds = %2445, %1844
  %1846 = load i16, ptr %56, align 2, !tbaa !11
  %1847 = zext i16 %1846 to i32
  %1848 = load ptr, ptr %12, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %1848, i32 0, i32 0
  %1850 = load ptr, ptr %1849, align 8, !tbaa !17
  %1851 = getelementptr inbounds %struct.otl_ClassDef, ptr %1850, i32 0, i32 2
  %1852 = load i16, ptr %1851, align 8, !tbaa !23
  %1853 = zext i16 %1852 to i32
  %1854 = icmp sle i32 %1847, %1853
  br i1 %1854, label %1856, label %1855

1855:                                             ; preds = %1845
  store i32 80, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %56) #10
  br label %2448

1856:                                             ; preds = %1845
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %1857 = load i32, ptr %9, align 4, !tbaa !9
  %1858 = load ptr, ptr %7, align 8, !tbaa !5
  %1859 = load i32, ptr %9, align 4, !tbaa !9
  %1860 = zext i32 %1859 to i64
  %1861 = getelementptr inbounds i8, ptr %1858, i64 %1860
  %1862 = getelementptr inbounds i8, ptr %1861, i64 10
  %1863 = load i16, ptr %56, align 2, !tbaa !11
  %1864 = zext i16 %1863 to i32
  %1865 = mul nsw i32 2, %1864
  %1866 = sext i32 %1865 to i64
  %1867 = getelementptr inbounds i8, ptr %1862, i64 %1866
  %1868 = call zeroext i16 @read_16u(ptr noundef %1867)
  %1869 = zext i16 %1868 to i32
  %1870 = add i32 %1857, %1869
  store i32 %1870, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %58) #10
  %1871 = load ptr, ptr %7, align 8, !tbaa !5
  %1872 = load i32, ptr %57, align 4, !tbaa !9
  %1873 = zext i32 %1872 to i64
  %1874 = getelementptr inbounds i8, ptr %1871, i64 %1873
  %1875 = call zeroext i16 @read_16u(ptr noundef %1874)
  store i16 %1875, ptr %58, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %59) #10
  store i16 0, ptr %59, align 2, !tbaa !11
  br label %1876

1876:                                             ; preds = %2441, %1856
  %1877 = load i16, ptr %59, align 2, !tbaa !11
  %1878 = zext i16 %1877 to i32
  %1879 = load i16, ptr %58, align 2, !tbaa !11
  %1880 = zext i16 %1879 to i32
  %1881 = icmp slt i32 %1878, %1880
  br i1 %1881, label %1883, label %1882

1882:                                             ; preds = %1876
  store i32 83, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %59) #10
  br label %2444

1883:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %1884 = load ptr, ptr %7, align 8, !tbaa !5
  %1885 = load i32, ptr %57, align 4, !tbaa !9
  %1886 = zext i32 %1885 to i64
  %1887 = getelementptr inbounds i8, ptr %1884, i64 %1886
  %1888 = getelementptr inbounds i8, ptr %1887, i64 2
  %1889 = load i8, ptr %18, align 1, !tbaa !29
  %1890 = zext i8 %1889 to i32
  %1891 = add nsw i32 2, %1890
  %1892 = load i8, ptr %19, align 1, !tbaa !29
  %1893 = zext i8 %1892 to i32
  %1894 = add nsw i32 %1891, %1893
  %1895 = load i16, ptr %59, align 2, !tbaa !11
  %1896 = zext i16 %1895 to i32
  %1897 = mul nsw i32 %1894, %1896
  %1898 = sext i32 %1897 to i64
  %1899 = getelementptr inbounds i8, ptr %1888, i64 %1898
  %1900 = call zeroext i16 @read_16u(ptr noundef %1899)
  %1901 = zext i16 %1900 to i32
  store i32 %1901, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  br label %1902

1902:                                             ; preds = %1883
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  br label %1903

1903:                                             ; preds = %1902
  br label %1904

1904:                                             ; preds = %1903
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  store ptr %60, ptr %66, align 8, !tbaa !5
  store i32 -17973521, ptr %62, align 4, !tbaa !9
  store i32 -1640531527, ptr %64, align 4, !tbaa !9
  store i32 -1640531527, ptr %63, align 4, !tbaa !9
  store i32 4, ptr %65, align 4, !tbaa !9
  br label %1905

1905:                                             ; preds = %2073, %1904
  %1906 = load i32, ptr %65, align 4, !tbaa !9
  %1907 = icmp uge i32 %1906, 12
  br i1 %1907, label %1908, label %2078

1908:                                             ; preds = %1905
  %1909 = load ptr, ptr %66, align 8, !tbaa !5
  %1910 = getelementptr inbounds i8, ptr %1909, i64 0
  %1911 = load i8, ptr %1910, align 1, !tbaa !29
  %1912 = zext i8 %1911 to i32
  %1913 = load ptr, ptr %66, align 8, !tbaa !5
  %1914 = getelementptr inbounds i8, ptr %1913, i64 1
  %1915 = load i8, ptr %1914, align 1, !tbaa !29
  %1916 = zext i8 %1915 to i32
  %1917 = shl i32 %1916, 8
  %1918 = add i32 %1912, %1917
  %1919 = load ptr, ptr %66, align 8, !tbaa !5
  %1920 = getelementptr inbounds i8, ptr %1919, i64 2
  %1921 = load i8, ptr %1920, align 1, !tbaa !29
  %1922 = zext i8 %1921 to i32
  %1923 = shl i32 %1922, 16
  %1924 = add i32 %1918, %1923
  %1925 = load ptr, ptr %66, align 8, !tbaa !5
  %1926 = getelementptr inbounds i8, ptr %1925, i64 3
  %1927 = load i8, ptr %1926, align 1, !tbaa !29
  %1928 = zext i8 %1927 to i32
  %1929 = shl i32 %1928, 24
  %1930 = add i32 %1924, %1929
  %1931 = load i32, ptr %63, align 4, !tbaa !9
  %1932 = add i32 %1931, %1930
  store i32 %1932, ptr %63, align 4, !tbaa !9
  %1933 = load ptr, ptr %66, align 8, !tbaa !5
  %1934 = getelementptr inbounds i8, ptr %1933, i64 4
  %1935 = load i8, ptr %1934, align 1, !tbaa !29
  %1936 = zext i8 %1935 to i32
  %1937 = load ptr, ptr %66, align 8, !tbaa !5
  %1938 = getelementptr inbounds i8, ptr %1937, i64 5
  %1939 = load i8, ptr %1938, align 1, !tbaa !29
  %1940 = zext i8 %1939 to i32
  %1941 = shl i32 %1940, 8
  %1942 = add i32 %1936, %1941
  %1943 = load ptr, ptr %66, align 8, !tbaa !5
  %1944 = getelementptr inbounds i8, ptr %1943, i64 6
  %1945 = load i8, ptr %1944, align 1, !tbaa !29
  %1946 = zext i8 %1945 to i32
  %1947 = shl i32 %1946, 16
  %1948 = add i32 %1942, %1947
  %1949 = load ptr, ptr %66, align 8, !tbaa !5
  %1950 = getelementptr inbounds i8, ptr %1949, i64 7
  %1951 = load i8, ptr %1950, align 1, !tbaa !29
  %1952 = zext i8 %1951 to i32
  %1953 = shl i32 %1952, 24
  %1954 = add i32 %1948, %1953
  %1955 = load i32, ptr %64, align 4, !tbaa !9
  %1956 = add i32 %1955, %1954
  store i32 %1956, ptr %64, align 4, !tbaa !9
  %1957 = load ptr, ptr %66, align 8, !tbaa !5
  %1958 = getelementptr inbounds i8, ptr %1957, i64 8
  %1959 = load i8, ptr %1958, align 1, !tbaa !29
  %1960 = zext i8 %1959 to i32
  %1961 = load ptr, ptr %66, align 8, !tbaa !5
  %1962 = getelementptr inbounds i8, ptr %1961, i64 9
  %1963 = load i8, ptr %1962, align 1, !tbaa !29
  %1964 = zext i8 %1963 to i32
  %1965 = shl i32 %1964, 8
  %1966 = add i32 %1960, %1965
  %1967 = load ptr, ptr %66, align 8, !tbaa !5
  %1968 = getelementptr inbounds i8, ptr %1967, i64 10
  %1969 = load i8, ptr %1968, align 1, !tbaa !29
  %1970 = zext i8 %1969 to i32
  %1971 = shl i32 %1970, 16
  %1972 = add i32 %1966, %1971
  %1973 = load ptr, ptr %66, align 8, !tbaa !5
  %1974 = getelementptr inbounds i8, ptr %1973, i64 11
  %1975 = load i8, ptr %1974, align 1, !tbaa !29
  %1976 = zext i8 %1975 to i32
  %1977 = shl i32 %1976, 24
  %1978 = add i32 %1972, %1977
  %1979 = load i32, ptr %62, align 4, !tbaa !9
  %1980 = add i32 %1979, %1978
  store i32 %1980, ptr %62, align 4, !tbaa !9
  br label %1981

1981:                                             ; preds = %1908
  %1982 = load i32, ptr %64, align 4, !tbaa !9
  %1983 = load i32, ptr %63, align 4, !tbaa !9
  %1984 = sub i32 %1983, %1982
  store i32 %1984, ptr %63, align 4, !tbaa !9
  %1985 = load i32, ptr %62, align 4, !tbaa !9
  %1986 = load i32, ptr %63, align 4, !tbaa !9
  %1987 = sub i32 %1986, %1985
  store i32 %1987, ptr %63, align 4, !tbaa !9
  %1988 = load i32, ptr %62, align 4, !tbaa !9
  %1989 = lshr i32 %1988, 13
  %1990 = load i32, ptr %63, align 4, !tbaa !9
  %1991 = xor i32 %1990, %1989
  store i32 %1991, ptr %63, align 4, !tbaa !9
  %1992 = load i32, ptr %62, align 4, !tbaa !9
  %1993 = load i32, ptr %64, align 4, !tbaa !9
  %1994 = sub i32 %1993, %1992
  store i32 %1994, ptr %64, align 4, !tbaa !9
  %1995 = load i32, ptr %63, align 4, !tbaa !9
  %1996 = load i32, ptr %64, align 4, !tbaa !9
  %1997 = sub i32 %1996, %1995
  store i32 %1997, ptr %64, align 4, !tbaa !9
  %1998 = load i32, ptr %63, align 4, !tbaa !9
  %1999 = shl i32 %1998, 8
  %2000 = load i32, ptr %64, align 4, !tbaa !9
  %2001 = xor i32 %2000, %1999
  store i32 %2001, ptr %64, align 4, !tbaa !9
  %2002 = load i32, ptr %63, align 4, !tbaa !9
  %2003 = load i32, ptr %62, align 4, !tbaa !9
  %2004 = sub i32 %2003, %2002
  store i32 %2004, ptr %62, align 4, !tbaa !9
  %2005 = load i32, ptr %64, align 4, !tbaa !9
  %2006 = load i32, ptr %62, align 4, !tbaa !9
  %2007 = sub i32 %2006, %2005
  store i32 %2007, ptr %62, align 4, !tbaa !9
  %2008 = load i32, ptr %64, align 4, !tbaa !9
  %2009 = lshr i32 %2008, 13
  %2010 = load i32, ptr %62, align 4, !tbaa !9
  %2011 = xor i32 %2010, %2009
  store i32 %2011, ptr %62, align 4, !tbaa !9
  %2012 = load i32, ptr %64, align 4, !tbaa !9
  %2013 = load i32, ptr %63, align 4, !tbaa !9
  %2014 = sub i32 %2013, %2012
  store i32 %2014, ptr %63, align 4, !tbaa !9
  %2015 = load i32, ptr %62, align 4, !tbaa !9
  %2016 = load i32, ptr %63, align 4, !tbaa !9
  %2017 = sub i32 %2016, %2015
  store i32 %2017, ptr %63, align 4, !tbaa !9
  %2018 = load i32, ptr %62, align 4, !tbaa !9
  %2019 = lshr i32 %2018, 12
  %2020 = load i32, ptr %63, align 4, !tbaa !9
  %2021 = xor i32 %2020, %2019
  store i32 %2021, ptr %63, align 4, !tbaa !9
  %2022 = load i32, ptr %62, align 4, !tbaa !9
  %2023 = load i32, ptr %64, align 4, !tbaa !9
  %2024 = sub i32 %2023, %2022
  store i32 %2024, ptr %64, align 4, !tbaa !9
  %2025 = load i32, ptr %63, align 4, !tbaa !9
  %2026 = load i32, ptr %64, align 4, !tbaa !9
  %2027 = sub i32 %2026, %2025
  store i32 %2027, ptr %64, align 4, !tbaa !9
  %2028 = load i32, ptr %63, align 4, !tbaa !9
  %2029 = shl i32 %2028, 16
  %2030 = load i32, ptr %64, align 4, !tbaa !9
  %2031 = xor i32 %2030, %2029
  store i32 %2031, ptr %64, align 4, !tbaa !9
  %2032 = load i32, ptr %63, align 4, !tbaa !9
  %2033 = load i32, ptr %62, align 4, !tbaa !9
  %2034 = sub i32 %2033, %2032
  store i32 %2034, ptr %62, align 4, !tbaa !9
  %2035 = load i32, ptr %64, align 4, !tbaa !9
  %2036 = load i32, ptr %62, align 4, !tbaa !9
  %2037 = sub i32 %2036, %2035
  store i32 %2037, ptr %62, align 4, !tbaa !9
  %2038 = load i32, ptr %64, align 4, !tbaa !9
  %2039 = lshr i32 %2038, 5
  %2040 = load i32, ptr %62, align 4, !tbaa !9
  %2041 = xor i32 %2040, %2039
  store i32 %2041, ptr %62, align 4, !tbaa !9
  %2042 = load i32, ptr %64, align 4, !tbaa !9
  %2043 = load i32, ptr %63, align 4, !tbaa !9
  %2044 = sub i32 %2043, %2042
  store i32 %2044, ptr %63, align 4, !tbaa !9
  %2045 = load i32, ptr %62, align 4, !tbaa !9
  %2046 = load i32, ptr %63, align 4, !tbaa !9
  %2047 = sub i32 %2046, %2045
  store i32 %2047, ptr %63, align 4, !tbaa !9
  %2048 = load i32, ptr %62, align 4, !tbaa !9
  %2049 = lshr i32 %2048, 3
  %2050 = load i32, ptr %63, align 4, !tbaa !9
  %2051 = xor i32 %2050, %2049
  store i32 %2051, ptr %63, align 4, !tbaa !9
  %2052 = load i32, ptr %62, align 4, !tbaa !9
  %2053 = load i32, ptr %64, align 4, !tbaa !9
  %2054 = sub i32 %2053, %2052
  store i32 %2054, ptr %64, align 4, !tbaa !9
  %2055 = load i32, ptr %63, align 4, !tbaa !9
  %2056 = load i32, ptr %64, align 4, !tbaa !9
  %2057 = sub i32 %2056, %2055
  store i32 %2057, ptr %64, align 4, !tbaa !9
  %2058 = load i32, ptr %63, align 4, !tbaa !9
  %2059 = shl i32 %2058, 10
  %2060 = load i32, ptr %64, align 4, !tbaa !9
  %2061 = xor i32 %2060, %2059
  store i32 %2061, ptr %64, align 4, !tbaa !9
  %2062 = load i32, ptr %63, align 4, !tbaa !9
  %2063 = load i32, ptr %62, align 4, !tbaa !9
  %2064 = sub i32 %2063, %2062
  store i32 %2064, ptr %62, align 4, !tbaa !9
  %2065 = load i32, ptr %64, align 4, !tbaa !9
  %2066 = load i32, ptr %62, align 4, !tbaa !9
  %2067 = sub i32 %2066, %2065
  store i32 %2067, ptr %62, align 4, !tbaa !9
  %2068 = load i32, ptr %64, align 4, !tbaa !9
  %2069 = lshr i32 %2068, 15
  %2070 = load i32, ptr %62, align 4, !tbaa !9
  %2071 = xor i32 %2070, %2069
  store i32 %2071, ptr %62, align 4, !tbaa !9
  br label %2072

2072:                                             ; preds = %1981
  br label %2073

2073:                                             ; preds = %2072
  %2074 = load ptr, ptr %66, align 8, !tbaa !5
  %2075 = getelementptr inbounds i8, ptr %2074, i64 12
  store ptr %2075, ptr %66, align 8, !tbaa !5
  %2076 = load i32, ptr %65, align 4, !tbaa !9
  %2077 = sub i32 %2076, 12
  store i32 %2077, ptr %65, align 4, !tbaa !9
  br label %1905, !llvm.loop !79

2078:                                             ; preds = %1905
  %2079 = load i32, ptr %62, align 4, !tbaa !9
  %2080 = add i32 %2079, 4
  store i32 %2080, ptr %62, align 4, !tbaa !9
  %2081 = load i32, ptr %65, align 4, !tbaa !9
  switch i32 %2081, label %2168 [
    i32 11, label %2082
    i32 10, label %2090
    i32 9, label %2098
    i32 8, label %2106
    i32 7, label %2114
    i32 6, label %2122
    i32 5, label %2130
    i32 4, label %2137
    i32 3, label %2145
    i32 2, label %2153
    i32 1, label %2161
  ]

2082:                                             ; preds = %2078
  %2083 = load ptr, ptr %66, align 8, !tbaa !5
  %2084 = getelementptr inbounds i8, ptr %2083, i64 10
  %2085 = load i8, ptr %2084, align 1, !tbaa !29
  %2086 = zext i8 %2085 to i32
  %2087 = shl i32 %2086, 24
  %2088 = load i32, ptr %62, align 4, !tbaa !9
  %2089 = add i32 %2088, %2087
  store i32 %2089, ptr %62, align 4, !tbaa !9
  br label %2090

2090:                                             ; preds = %2082, %2078
  %2091 = load ptr, ptr %66, align 8, !tbaa !5
  %2092 = getelementptr inbounds i8, ptr %2091, i64 9
  %2093 = load i8, ptr %2092, align 1, !tbaa !29
  %2094 = zext i8 %2093 to i32
  %2095 = shl i32 %2094, 16
  %2096 = load i32, ptr %62, align 4, !tbaa !9
  %2097 = add i32 %2096, %2095
  store i32 %2097, ptr %62, align 4, !tbaa !9
  br label %2098

2098:                                             ; preds = %2090, %2078
  %2099 = load ptr, ptr %66, align 8, !tbaa !5
  %2100 = getelementptr inbounds i8, ptr %2099, i64 8
  %2101 = load i8, ptr %2100, align 1, !tbaa !29
  %2102 = zext i8 %2101 to i32
  %2103 = shl i32 %2102, 8
  %2104 = load i32, ptr %62, align 4, !tbaa !9
  %2105 = add i32 %2104, %2103
  store i32 %2105, ptr %62, align 4, !tbaa !9
  br label %2106

2106:                                             ; preds = %2098, %2078
  %2107 = load ptr, ptr %66, align 8, !tbaa !5
  %2108 = getelementptr inbounds i8, ptr %2107, i64 7
  %2109 = load i8, ptr %2108, align 1, !tbaa !29
  %2110 = zext i8 %2109 to i32
  %2111 = shl i32 %2110, 24
  %2112 = load i32, ptr %64, align 4, !tbaa !9
  %2113 = add i32 %2112, %2111
  store i32 %2113, ptr %64, align 4, !tbaa !9
  br label %2114

2114:                                             ; preds = %2106, %2078
  %2115 = load ptr, ptr %66, align 8, !tbaa !5
  %2116 = getelementptr inbounds i8, ptr %2115, i64 6
  %2117 = load i8, ptr %2116, align 1, !tbaa !29
  %2118 = zext i8 %2117 to i32
  %2119 = shl i32 %2118, 16
  %2120 = load i32, ptr %64, align 4, !tbaa !9
  %2121 = add i32 %2120, %2119
  store i32 %2121, ptr %64, align 4, !tbaa !9
  br label %2122

2122:                                             ; preds = %2114, %2078
  %2123 = load ptr, ptr %66, align 8, !tbaa !5
  %2124 = getelementptr inbounds i8, ptr %2123, i64 5
  %2125 = load i8, ptr %2124, align 1, !tbaa !29
  %2126 = zext i8 %2125 to i32
  %2127 = shl i32 %2126, 8
  %2128 = load i32, ptr %64, align 4, !tbaa !9
  %2129 = add i32 %2128, %2127
  store i32 %2129, ptr %64, align 4, !tbaa !9
  br label %2130

2130:                                             ; preds = %2122, %2078
  %2131 = load ptr, ptr %66, align 8, !tbaa !5
  %2132 = getelementptr inbounds i8, ptr %2131, i64 4
  %2133 = load i8, ptr %2132, align 1, !tbaa !29
  %2134 = zext i8 %2133 to i32
  %2135 = load i32, ptr %64, align 4, !tbaa !9
  %2136 = add i32 %2135, %2134
  store i32 %2136, ptr %64, align 4, !tbaa !9
  br label %2137

2137:                                             ; preds = %2130, %2078
  %2138 = load ptr, ptr %66, align 8, !tbaa !5
  %2139 = getelementptr inbounds i8, ptr %2138, i64 3
  %2140 = load i8, ptr %2139, align 1, !tbaa !29
  %2141 = zext i8 %2140 to i32
  %2142 = shl i32 %2141, 24
  %2143 = load i32, ptr %63, align 4, !tbaa !9
  %2144 = add i32 %2143, %2142
  store i32 %2144, ptr %63, align 4, !tbaa !9
  br label %2145

2145:                                             ; preds = %2137, %2078
  %2146 = load ptr, ptr %66, align 8, !tbaa !5
  %2147 = getelementptr inbounds i8, ptr %2146, i64 2
  %2148 = load i8, ptr %2147, align 1, !tbaa !29
  %2149 = zext i8 %2148 to i32
  %2150 = shl i32 %2149, 16
  %2151 = load i32, ptr %63, align 4, !tbaa !9
  %2152 = add i32 %2151, %2150
  store i32 %2152, ptr %63, align 4, !tbaa !9
  br label %2153

2153:                                             ; preds = %2145, %2078
  %2154 = load ptr, ptr %66, align 8, !tbaa !5
  %2155 = getelementptr inbounds i8, ptr %2154, i64 1
  %2156 = load i8, ptr %2155, align 1, !tbaa !29
  %2157 = zext i8 %2156 to i32
  %2158 = shl i32 %2157, 8
  %2159 = load i32, ptr %63, align 4, !tbaa !9
  %2160 = add i32 %2159, %2158
  store i32 %2160, ptr %63, align 4, !tbaa !9
  br label %2161

2161:                                             ; preds = %2153, %2078
  %2162 = load ptr, ptr %66, align 8, !tbaa !5
  %2163 = getelementptr inbounds i8, ptr %2162, i64 0
  %2164 = load i8, ptr %2163, align 1, !tbaa !29
  %2165 = zext i8 %2164 to i32
  %2166 = load i32, ptr %63, align 4, !tbaa !9
  %2167 = add i32 %2166, %2165
  store i32 %2167, ptr %63, align 4, !tbaa !9
  br label %2168

2168:                                             ; preds = %2161, %2078
  br label %2169

2169:                                             ; preds = %2168
  %2170 = load i32, ptr %64, align 4, !tbaa !9
  %2171 = load i32, ptr %63, align 4, !tbaa !9
  %2172 = sub i32 %2171, %2170
  store i32 %2172, ptr %63, align 4, !tbaa !9
  %2173 = load i32, ptr %62, align 4, !tbaa !9
  %2174 = load i32, ptr %63, align 4, !tbaa !9
  %2175 = sub i32 %2174, %2173
  store i32 %2175, ptr %63, align 4, !tbaa !9
  %2176 = load i32, ptr %62, align 4, !tbaa !9
  %2177 = lshr i32 %2176, 13
  %2178 = load i32, ptr %63, align 4, !tbaa !9
  %2179 = xor i32 %2178, %2177
  store i32 %2179, ptr %63, align 4, !tbaa !9
  %2180 = load i32, ptr %62, align 4, !tbaa !9
  %2181 = load i32, ptr %64, align 4, !tbaa !9
  %2182 = sub i32 %2181, %2180
  store i32 %2182, ptr %64, align 4, !tbaa !9
  %2183 = load i32, ptr %63, align 4, !tbaa !9
  %2184 = load i32, ptr %64, align 4, !tbaa !9
  %2185 = sub i32 %2184, %2183
  store i32 %2185, ptr %64, align 4, !tbaa !9
  %2186 = load i32, ptr %63, align 4, !tbaa !9
  %2187 = shl i32 %2186, 8
  %2188 = load i32, ptr %64, align 4, !tbaa !9
  %2189 = xor i32 %2188, %2187
  store i32 %2189, ptr %64, align 4, !tbaa !9
  %2190 = load i32, ptr %63, align 4, !tbaa !9
  %2191 = load i32, ptr %62, align 4, !tbaa !9
  %2192 = sub i32 %2191, %2190
  store i32 %2192, ptr %62, align 4, !tbaa !9
  %2193 = load i32, ptr %64, align 4, !tbaa !9
  %2194 = load i32, ptr %62, align 4, !tbaa !9
  %2195 = sub i32 %2194, %2193
  store i32 %2195, ptr %62, align 4, !tbaa !9
  %2196 = load i32, ptr %64, align 4, !tbaa !9
  %2197 = lshr i32 %2196, 13
  %2198 = load i32, ptr %62, align 4, !tbaa !9
  %2199 = xor i32 %2198, %2197
  store i32 %2199, ptr %62, align 4, !tbaa !9
  %2200 = load i32, ptr %64, align 4, !tbaa !9
  %2201 = load i32, ptr %63, align 4, !tbaa !9
  %2202 = sub i32 %2201, %2200
  store i32 %2202, ptr %63, align 4, !tbaa !9
  %2203 = load i32, ptr %62, align 4, !tbaa !9
  %2204 = load i32, ptr %63, align 4, !tbaa !9
  %2205 = sub i32 %2204, %2203
  store i32 %2205, ptr %63, align 4, !tbaa !9
  %2206 = load i32, ptr %62, align 4, !tbaa !9
  %2207 = lshr i32 %2206, 12
  %2208 = load i32, ptr %63, align 4, !tbaa !9
  %2209 = xor i32 %2208, %2207
  store i32 %2209, ptr %63, align 4, !tbaa !9
  %2210 = load i32, ptr %62, align 4, !tbaa !9
  %2211 = load i32, ptr %64, align 4, !tbaa !9
  %2212 = sub i32 %2211, %2210
  store i32 %2212, ptr %64, align 4, !tbaa !9
  %2213 = load i32, ptr %63, align 4, !tbaa !9
  %2214 = load i32, ptr %64, align 4, !tbaa !9
  %2215 = sub i32 %2214, %2213
  store i32 %2215, ptr %64, align 4, !tbaa !9
  %2216 = load i32, ptr %63, align 4, !tbaa !9
  %2217 = shl i32 %2216, 16
  %2218 = load i32, ptr %64, align 4, !tbaa !9
  %2219 = xor i32 %2218, %2217
  store i32 %2219, ptr %64, align 4, !tbaa !9
  %2220 = load i32, ptr %63, align 4, !tbaa !9
  %2221 = load i32, ptr %62, align 4, !tbaa !9
  %2222 = sub i32 %2221, %2220
  store i32 %2222, ptr %62, align 4, !tbaa !9
  %2223 = load i32, ptr %64, align 4, !tbaa !9
  %2224 = load i32, ptr %62, align 4, !tbaa !9
  %2225 = sub i32 %2224, %2223
  store i32 %2225, ptr %62, align 4, !tbaa !9
  %2226 = load i32, ptr %64, align 4, !tbaa !9
  %2227 = lshr i32 %2226, 5
  %2228 = load i32, ptr %62, align 4, !tbaa !9
  %2229 = xor i32 %2228, %2227
  store i32 %2229, ptr %62, align 4, !tbaa !9
  %2230 = load i32, ptr %64, align 4, !tbaa !9
  %2231 = load i32, ptr %63, align 4, !tbaa !9
  %2232 = sub i32 %2231, %2230
  store i32 %2232, ptr %63, align 4, !tbaa !9
  %2233 = load i32, ptr %62, align 4, !tbaa !9
  %2234 = load i32, ptr %63, align 4, !tbaa !9
  %2235 = sub i32 %2234, %2233
  store i32 %2235, ptr %63, align 4, !tbaa !9
  %2236 = load i32, ptr %62, align 4, !tbaa !9
  %2237 = lshr i32 %2236, 3
  %2238 = load i32, ptr %63, align 4, !tbaa !9
  %2239 = xor i32 %2238, %2237
  store i32 %2239, ptr %63, align 4, !tbaa !9
  %2240 = load i32, ptr %62, align 4, !tbaa !9
  %2241 = load i32, ptr %64, align 4, !tbaa !9
  %2242 = sub i32 %2241, %2240
  store i32 %2242, ptr %64, align 4, !tbaa !9
  %2243 = load i32, ptr %63, align 4, !tbaa !9
  %2244 = load i32, ptr %64, align 4, !tbaa !9
  %2245 = sub i32 %2244, %2243
  store i32 %2245, ptr %64, align 4, !tbaa !9
  %2246 = load i32, ptr %63, align 4, !tbaa !9
  %2247 = shl i32 %2246, 10
  %2248 = load i32, ptr %64, align 4, !tbaa !9
  %2249 = xor i32 %2248, %2247
  store i32 %2249, ptr %64, align 4, !tbaa !9
  %2250 = load i32, ptr %63, align 4, !tbaa !9
  %2251 = load i32, ptr %62, align 4, !tbaa !9
  %2252 = sub i32 %2251, %2250
  store i32 %2252, ptr %62, align 4, !tbaa !9
  %2253 = load i32, ptr %64, align 4, !tbaa !9
  %2254 = load i32, ptr %62, align 4, !tbaa !9
  %2255 = sub i32 %2254, %2253
  store i32 %2255, ptr %62, align 4, !tbaa !9
  %2256 = load i32, ptr %64, align 4, !tbaa !9
  %2257 = lshr i32 %2256, 15
  %2258 = load i32, ptr %62, align 4, !tbaa !9
  %2259 = xor i32 %2258, %2257
  store i32 %2259, ptr %62, align 4, !tbaa !9
  br label %2260

2260:                                             ; preds = %2169
  br label %2261

2261:                                             ; preds = %2260
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %2262

2262:                                             ; preds = %2261
  br label %2263

2263:                                             ; preds = %2262
  br label %2264

2264:                                             ; preds = %2263
  br label %2265

2265:                                             ; preds = %2264
  br label %2266

2266:                                             ; preds = %2265
  store ptr null, ptr %61, align 8, !tbaa !5
  %2267 = load ptr, ptr %25, align 8, !tbaa !5
  %2268 = icmp ne ptr %2267, null
  br i1 %2268, label %2269, label %2373

2269:                                             ; preds = %2266
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  br label %2270

2270:                                             ; preds = %2269
  %2271 = load i32, ptr %62, align 4, !tbaa !9
  %2272 = load ptr, ptr %25, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2272, i32 0, i32 2
  %2274 = getelementptr inbounds %struct.UT_hash_handle, ptr %2273, i32 0, i32 0
  %2275 = load ptr, ptr %2274, align 8, !tbaa !32
  %2276 = getelementptr inbounds %struct.UT_hash_table, ptr %2275, i32 0, i32 1
  %2277 = load i32, ptr %2276, align 8, !tbaa !35
  %2278 = sub i32 %2277, 1
  %2279 = and i32 %2271, %2278
  store i32 %2279, ptr %67, align 4, !tbaa !9
  br label %2280

2280:                                             ; preds = %2270
  br label %2281

2281:                                             ; preds = %2280
  br label %2282

2282:                                             ; preds = %2281
  %2283 = load ptr, ptr %25, align 8, !tbaa !5
  %2284 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2283, i32 0, i32 2
  %2285 = getelementptr inbounds %struct.UT_hash_handle, ptr %2284, i32 0, i32 0
  %2286 = load ptr, ptr %2285, align 8, !tbaa !32
  %2287 = getelementptr inbounds %struct.UT_hash_table, ptr %2286, i32 0, i32 0
  %2288 = load ptr, ptr %2287, align 8, !tbaa !38
  %2289 = load i32, ptr %67, align 4, !tbaa !9
  %2290 = zext i32 %2289 to i64
  %2291 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2288, i64 %2290
  %2292 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2291, i32 0, i32 0
  %2293 = load ptr, ptr %2292, align 8, !tbaa !39
  %2294 = icmp ne ptr %2293, null
  br i1 %2294, label %2295, label %2318

2295:                                             ; preds = %2282
  br label %2296

2296:                                             ; preds = %2295
  %2297 = load ptr, ptr %25, align 8, !tbaa !5
  %2298 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2297, i32 0, i32 2
  %2299 = getelementptr inbounds %struct.UT_hash_handle, ptr %2298, i32 0, i32 0
  %2300 = load ptr, ptr %2299, align 8, !tbaa !32
  %2301 = getelementptr inbounds %struct.UT_hash_table, ptr %2300, i32 0, i32 0
  %2302 = load ptr, ptr %2301, align 8, !tbaa !38
  %2303 = load i32, ptr %67, align 4, !tbaa !9
  %2304 = zext i32 %2303 to i64
  %2305 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2302, i64 %2304
  %2306 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2305, i32 0, i32 0
  %2307 = load ptr, ptr %2306, align 8, !tbaa !39
  %2308 = load ptr, ptr %25, align 8, !tbaa !5
  %2309 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2308, i32 0, i32 2
  %2310 = getelementptr inbounds %struct.UT_hash_handle, ptr %2309, i32 0, i32 0
  %2311 = load ptr, ptr %2310, align 8, !tbaa !32
  %2312 = getelementptr inbounds %struct.UT_hash_table, ptr %2311, i32 0, i32 5
  %2313 = load i64, ptr %2312, align 8, !tbaa !41
  %2314 = sub i64 0, %2313
  %2315 = getelementptr inbounds i8, ptr %2307, i64 %2314
  store ptr %2315, ptr %61, align 8, !tbaa !5
  br label %2316

2316:                                             ; preds = %2296
  br label %2317

2317:                                             ; preds = %2316
  br label %2319

2318:                                             ; preds = %2282
  store ptr null, ptr %61, align 8, !tbaa !5
  br label %2319

2319:                                             ; preds = %2318, %2317
  br label %2320

2320:                                             ; preds = %2369, %2319
  %2321 = load ptr, ptr %61, align 8, !tbaa !5
  %2322 = icmp ne ptr %2321, null
  br i1 %2322, label %2323, label %2370

2323:                                             ; preds = %2320
  %2324 = load ptr, ptr %61, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2324, i32 0, i32 2
  %2326 = getelementptr inbounds %struct.UT_hash_handle, ptr %2325, i32 0, i32 7
  %2327 = load i32, ptr %2326, align 4, !tbaa !42
  %2328 = load i32, ptr %62, align 4, !tbaa !9
  %2329 = icmp eq i32 %2327, %2328
  br i1 %2329, label %2330, label %2346

2330:                                             ; preds = %2323
  %2331 = load ptr, ptr %61, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2331, i32 0, i32 2
  %2333 = getelementptr inbounds %struct.UT_hash_handle, ptr %2332, i32 0, i32 6
  %2334 = load i32, ptr %2333, align 8, !tbaa !43
  %2335 = zext i32 %2334 to i64
  %2336 = icmp eq i64 %2335, 4
  br i1 %2336, label %2337, label %2346

2337:                                             ; preds = %2330
  %2338 = load ptr, ptr %61, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2338, i32 0, i32 2
  %2340 = getelementptr inbounds %struct.UT_hash_handle, ptr %2339, i32 0, i32 5
  %2341 = load ptr, ptr %2340, align 8, !tbaa !44
  %2342 = call i32 @memcmp(ptr noundef %2341, ptr noundef %60, i64 noundef 4) #11
  %2343 = icmp eq i32 %2342, 0
  br i1 %2343, label %2344, label %2345

2344:                                             ; preds = %2337
  br label %2370

2345:                                             ; preds = %2337
  br label %2346

2346:                                             ; preds = %2345, %2330, %2323
  %2347 = load ptr, ptr %61, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2347, i32 0, i32 2
  %2349 = getelementptr inbounds %struct.UT_hash_handle, ptr %2348, i32 0, i32 4
  %2350 = load ptr, ptr %2349, align 8, !tbaa !45
  %2351 = icmp ne ptr %2350, null
  br i1 %2351, label %2352, label %2368

2352:                                             ; preds = %2346
  br label %2353

2353:                                             ; preds = %2352
  %2354 = load ptr, ptr %61, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2354, i32 0, i32 2
  %2356 = getelementptr inbounds %struct.UT_hash_handle, ptr %2355, i32 0, i32 4
  %2357 = load ptr, ptr %2356, align 8, !tbaa !45
  %2358 = load ptr, ptr %25, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2358, i32 0, i32 2
  %2360 = getelementptr inbounds %struct.UT_hash_handle, ptr %2359, i32 0, i32 0
  %2361 = load ptr, ptr %2360, align 8, !tbaa !32
  %2362 = getelementptr inbounds %struct.UT_hash_table, ptr %2361, i32 0, i32 5
  %2363 = load i64, ptr %2362, align 8, !tbaa !41
  %2364 = sub i64 0, %2363
  %2365 = getelementptr inbounds i8, ptr %2357, i64 %2364
  store ptr %2365, ptr %61, align 8, !tbaa !5
  br label %2366

2366:                                             ; preds = %2353
  br label %2367

2367:                                             ; preds = %2366
  br label %2369

2368:                                             ; preds = %2346
  store ptr null, ptr %61, align 8, !tbaa !5
  br label %2369

2369:                                             ; preds = %2368, %2367
  br label %2320, !llvm.loop !80

2370:                                             ; preds = %2344, %2320
  br label %2371

2371:                                             ; preds = %2370
  br label %2372

2372:                                             ; preds = %2371
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %2373

2373:                                             ; preds = %2372, %2266
  br label %2374

2374:                                             ; preds = %2373
  br label %2375

2375:                                             ; preds = %2374
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %2376

2376:                                             ; preds = %2375
  br label %2377

2377:                                             ; preds = %2376
  %2378 = load ptr, ptr %61, align 8, !tbaa !5
  %2379 = icmp ne ptr %2378, null
  br i1 %2379, label %2380, label %2440

2380:                                             ; preds = %2377
  %2381 = load ptr, ptr %12, align 8, !tbaa !5
  %2382 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2381, i32 0, i32 2
  %2383 = load ptr, ptr %2382, align 8, !tbaa !72
  %2384 = load i16, ptr %56, align 2, !tbaa !11
  %2385 = zext i16 %2384 to i64
  %2386 = getelementptr inbounds ptr, ptr %2383, i64 %2385
  %2387 = load ptr, ptr %2386, align 8, !tbaa !5
  %2388 = load ptr, ptr %61, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2388, i32 0, i32 1
  %2390 = load i32, ptr %2389, align 4, !tbaa !49
  %2391 = sext i32 %2390 to i64
  %2392 = getelementptr inbounds %struct.otl_PositionValue, ptr %2387, i64 %2391
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #10
  %2393 = load ptr, ptr %7, align 8, !tbaa !5
  %2394 = load i32, ptr %8, align 4, !tbaa !9
  %2395 = load i32, ptr %57, align 4, !tbaa !9
  %2396 = add i32 %2395, 2
  %2397 = load i8, ptr %18, align 1, !tbaa !29
  %2398 = zext i8 %2397 to i32
  %2399 = add nsw i32 2, %2398
  %2400 = load i8, ptr %19, align 1, !tbaa !29
  %2401 = zext i8 %2400 to i32
  %2402 = add nsw i32 %2399, %2401
  %2403 = load i16, ptr %59, align 2, !tbaa !11
  %2404 = zext i16 %2403 to i32
  %2405 = mul nsw i32 %2402, %2404
  %2406 = add i32 %2396, %2405
  %2407 = add i32 %2406, 2
  %2408 = load i16, ptr %16, align 2, !tbaa !11
  call void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %68, ptr noundef %2393, i32 noundef %2394, i32 noundef %2407, i16 noundef zeroext %2408)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2392, ptr align 8 %68, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #10
  %2409 = load ptr, ptr %12, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2409, i32 0, i32 3
  %2411 = load ptr, ptr %2410, align 8, !tbaa !73
  %2412 = load i16, ptr %56, align 2, !tbaa !11
  %2413 = zext i16 %2412 to i64
  %2414 = getelementptr inbounds ptr, ptr %2411, i64 %2413
  %2415 = load ptr, ptr %2414, align 8, !tbaa !5
  %2416 = load ptr, ptr %61, align 8, !tbaa !5
  %2417 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2416, i32 0, i32 1
  %2418 = load i32, ptr %2417, align 4, !tbaa !49
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds %struct.otl_PositionValue, ptr %2415, i64 %2419
  call void @llvm.lifetime.start.p0(i64 32, ptr %69) #10
  %2421 = load ptr, ptr %7, align 8, !tbaa !5
  %2422 = load i32, ptr %8, align 4, !tbaa !9
  %2423 = load i32, ptr %57, align 4, !tbaa !9
  %2424 = add i32 %2423, 2
  %2425 = load i8, ptr %18, align 1, !tbaa !29
  %2426 = zext i8 %2425 to i32
  %2427 = add nsw i32 2, %2426
  %2428 = load i8, ptr %19, align 1, !tbaa !29
  %2429 = zext i8 %2428 to i32
  %2430 = add nsw i32 %2427, %2429
  %2431 = load i16, ptr %59, align 2, !tbaa !11
  %2432 = zext i16 %2431 to i32
  %2433 = mul nsw i32 %2430, %2432
  %2434 = add i32 %2424, %2433
  %2435 = add i32 %2434, 2
  %2436 = load i8, ptr %18, align 1, !tbaa !29
  %2437 = zext i8 %2436 to i32
  %2438 = add i32 %2435, %2437
  %2439 = load i16, ptr %17, align 2, !tbaa !11
  call void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %69, ptr noundef %2421, i32 noundef %2422, i32 noundef %2438, i16 noundef zeroext %2439)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2420, ptr align 8 %69, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %69) #10
  br label %2440

2440:                                             ; preds = %2380, %2377
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %2441

2441:                                             ; preds = %2440
  %2442 = load i16, ptr %59, align 2, !tbaa !11
  %2443 = add i16 %2442, 1
  store i16 %2443, ptr %59, align 2, !tbaa !11
  br label %1876, !llvm.loop !81

2444:                                             ; preds = %1882
  call void @llvm.lifetime.end.p0(i64 2, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %2445

2445:                                             ; preds = %2444
  %2446 = load i16, ptr %56, align 2, !tbaa !11
  %2447 = add i16 %2446, 1
  store i16 %2447, ptr %56, align 2, !tbaa !11
  br label %1845, !llvm.loop !82

2448:                                             ; preds = %1855
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #10
  store i16 0, ptr %72, align 2, !tbaa !11
  %2449 = load ptr, ptr %25, align 8, !tbaa !5
  store ptr %2449, ptr %70, align 8, !tbaa !5
  %2450 = load ptr, ptr %25, align 8, !tbaa !5
  %2451 = icmp ne ptr %2450, null
  br i1 %2451, label %2452, label %2457

2452:                                             ; preds = %2448
  %2453 = load ptr, ptr %25, align 8, !tbaa !5
  %2454 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2453, i32 0, i32 2
  %2455 = getelementptr inbounds %struct.UT_hash_handle, ptr %2454, i32 0, i32 2
  %2456 = load ptr, ptr %2455, align 8, !tbaa !51
  br label %2458

2457:                                             ; preds = %2448
  br label %2458

2458:                                             ; preds = %2457, %2452
  %2459 = phi ptr [ %2456, %2452 ], [ null, %2457 ]
  store ptr %2459, ptr %71, align 8, !tbaa !5
  br label %2460

2460:                                             ; preds = %2681, %2458
  %2461 = load ptr, ptr %70, align 8, !tbaa !5
  %2462 = icmp ne ptr %2461, null
  br i1 %2462, label %2463, label %2683

2463:                                             ; preds = %2460
  %2464 = load ptr, ptr %12, align 8, !tbaa !5
  %2465 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2464, i32 0, i32 1
  %2466 = load ptr, ptr %2465, align 8, !tbaa !71
  %2467 = getelementptr inbounds %struct.otl_ClassDef, ptr %2466, i32 0, i32 3
  %2468 = load ptr, ptr %2467, align 8, !tbaa !25
  %2469 = load i16, ptr %72, align 2, !tbaa !11
  %2470 = zext i16 %2469 to i64
  %2471 = getelementptr inbounds %struct.otfcc_Handle, ptr %2468, i64 %2470
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #10
  %2472 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 8), align 8, !tbaa !83
  %2473 = load ptr, ptr %70, align 8, !tbaa !5
  %2474 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2473, i32 0, i32 0
  %2475 = load i32, ptr %2474, align 8, !tbaa !47
  %2476 = trunc i32 %2475 to i16
  %2477 = call { i64, ptr } %2472(i16 noundef zeroext %2476)
  %2478 = getelementptr inbounds { i64, ptr }, ptr %73, i32 0, i32 0
  %2479 = extractvalue { i64, ptr } %2477, 0
  store i64 %2479, ptr %2478, align 8
  %2480 = getelementptr inbounds { i64, ptr }, ptr %73, i32 0, i32 1
  %2481 = extractvalue { i64, ptr } %2477, 1
  store ptr %2481, ptr %2480, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2471, ptr align 8 %73, i64 16, i1 false), !tbaa.struct !85
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #10
  %2482 = load ptr, ptr %70, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2482, i32 0, i32 1
  %2484 = load i32, ptr %2483, align 4, !tbaa !49
  %2485 = trunc i32 %2484 to i16
  %2486 = load ptr, ptr %12, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2486, i32 0, i32 1
  %2488 = load ptr, ptr %2487, align 8, !tbaa !71
  %2489 = getelementptr inbounds %struct.otl_ClassDef, ptr %2488, i32 0, i32 4
  %2490 = load ptr, ptr %2489, align 8, !tbaa !26
  %2491 = load i16, ptr %72, align 2, !tbaa !11
  %2492 = zext i16 %2491 to i64
  %2493 = getelementptr inbounds i16, ptr %2490, i64 %2492
  store i16 %2485, ptr %2493, align 2, !tbaa !11
  %2494 = load i16, ptr %72, align 2, !tbaa !11
  %2495 = add i16 %2494, 1
  store i16 %2495, ptr %72, align 2, !tbaa !11
  br label %2496

2496:                                             ; preds = %2463
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %2497 = load ptr, ptr %70, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2497, i32 0, i32 2
  store ptr %2498, ptr %74, align 8, !tbaa !5
  %2499 = load ptr, ptr %74, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.UT_hash_handle, ptr %2499, i32 0, i32 1
  %2501 = load ptr, ptr %2500, align 8, !tbaa !86
  %2502 = icmp eq ptr %2501, null
  br i1 %2502, label %2503, label %2519

2503:                                             ; preds = %2496
  %2504 = load ptr, ptr %74, align 8, !tbaa !5
  %2505 = getelementptr inbounds %struct.UT_hash_handle, ptr %2504, i32 0, i32 2
  %2506 = load ptr, ptr %2505, align 8, !tbaa !56
  %2507 = icmp eq ptr %2506, null
  br i1 %2507, label %2508, label %2519

2508:                                             ; preds = %2503
  %2509 = load ptr, ptr %25, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2509, i32 0, i32 2
  %2511 = getelementptr inbounds %struct.UT_hash_handle, ptr %2510, i32 0, i32 0
  %2512 = load ptr, ptr %2511, align 8, !tbaa !32
  %2513 = getelementptr inbounds %struct.UT_hash_table, ptr %2512, i32 0, i32 0
  %2514 = load ptr, ptr %2513, align 8, !tbaa !38
  call void @free(ptr noundef %2514) #10
  %2515 = load ptr, ptr %25, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2515, i32 0, i32 2
  %2517 = getelementptr inbounds %struct.UT_hash_handle, ptr %2516, i32 0, i32 0
  %2518 = load ptr, ptr %2517, align 8, !tbaa !32
  call void @free(ptr noundef %2518) #10
  store ptr null, ptr %25, align 8, !tbaa !5
  br label %2667

2519:                                             ; preds = %2503, %2496
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #10
  %2520 = load ptr, ptr %74, align 8, !tbaa !5
  %2521 = load ptr, ptr %25, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2521, i32 0, i32 2
  %2523 = getelementptr inbounds %struct.UT_hash_handle, ptr %2522, i32 0, i32 0
  %2524 = load ptr, ptr %2523, align 8, !tbaa !32
  %2525 = getelementptr inbounds %struct.UT_hash_table, ptr %2524, i32 0, i32 4
  %2526 = load ptr, ptr %2525, align 8, !tbaa !53
  %2527 = icmp eq ptr %2520, %2526
  br i1 %2527, label %2528, label %2544

2528:                                             ; preds = %2519
  %2529 = load ptr, ptr %74, align 8, !tbaa !5
  %2530 = getelementptr inbounds %struct.UT_hash_handle, ptr %2529, i32 0, i32 1
  %2531 = load ptr, ptr %2530, align 8, !tbaa !86
  %2532 = load ptr, ptr %25, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2532, i32 0, i32 2
  %2534 = getelementptr inbounds %struct.UT_hash_handle, ptr %2533, i32 0, i32 0
  %2535 = load ptr, ptr %2534, align 8, !tbaa !32
  %2536 = getelementptr inbounds %struct.UT_hash_table, ptr %2535, i32 0, i32 5
  %2537 = load i64, ptr %2536, align 8, !tbaa !41
  %2538 = getelementptr inbounds i8, ptr %2531, i64 %2537
  %2539 = load ptr, ptr %25, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2539, i32 0, i32 2
  %2541 = getelementptr inbounds %struct.UT_hash_handle, ptr %2540, i32 0, i32 0
  %2542 = load ptr, ptr %2541, align 8, !tbaa !32
  %2543 = getelementptr inbounds %struct.UT_hash_table, ptr %2542, i32 0, i32 4
  store ptr %2538, ptr %2543, align 8, !tbaa !53
  br label %2544

2544:                                             ; preds = %2528, %2519
  %2545 = load ptr, ptr %74, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.UT_hash_handle, ptr %2545, i32 0, i32 1
  %2547 = load ptr, ptr %2546, align 8, !tbaa !86
  %2548 = icmp ne ptr %2547, null
  br i1 %2548, label %2549, label %2564

2549:                                             ; preds = %2544
  %2550 = load ptr, ptr %74, align 8, !tbaa !5
  %2551 = getelementptr inbounds %struct.UT_hash_handle, ptr %2550, i32 0, i32 2
  %2552 = load ptr, ptr %2551, align 8, !tbaa !56
  %2553 = load ptr, ptr %74, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.UT_hash_handle, ptr %2553, i32 0, i32 1
  %2555 = load ptr, ptr %2554, align 8, !tbaa !86
  %2556 = load ptr, ptr %25, align 8, !tbaa !5
  %2557 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2556, i32 0, i32 2
  %2558 = getelementptr inbounds %struct.UT_hash_handle, ptr %2557, i32 0, i32 0
  %2559 = load ptr, ptr %2558, align 8, !tbaa !32
  %2560 = getelementptr inbounds %struct.UT_hash_table, ptr %2559, i32 0, i32 5
  %2561 = load i64, ptr %2560, align 8, !tbaa !41
  %2562 = getelementptr inbounds i8, ptr %2555, i64 %2561
  %2563 = getelementptr inbounds %struct.UT_hash_handle, ptr %2562, i32 0, i32 2
  store ptr %2552, ptr %2563, align 8, !tbaa !56
  br label %2571

2564:                                             ; preds = %2544
  br label %2565

2565:                                             ; preds = %2564
  %2566 = load ptr, ptr %74, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.UT_hash_handle, ptr %2566, i32 0, i32 2
  %2568 = load ptr, ptr %2567, align 8, !tbaa !56
  store ptr %2568, ptr %25, align 8, !tbaa !5
  br label %2569

2569:                                             ; preds = %2565
  br label %2570

2570:                                             ; preds = %2569
  br label %2571

2571:                                             ; preds = %2570, %2549
  %2572 = load ptr, ptr %74, align 8, !tbaa !5
  %2573 = getelementptr inbounds %struct.UT_hash_handle, ptr %2572, i32 0, i32 2
  %2574 = load ptr, ptr %2573, align 8, !tbaa !56
  %2575 = icmp ne ptr %2574, null
  br i1 %2575, label %2576, label %2591

2576:                                             ; preds = %2571
  %2577 = load ptr, ptr %74, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.UT_hash_handle, ptr %2577, i32 0, i32 1
  %2579 = load ptr, ptr %2578, align 8, !tbaa !86
  %2580 = load ptr, ptr %74, align 8, !tbaa !5
  %2581 = getelementptr inbounds %struct.UT_hash_handle, ptr %2580, i32 0, i32 2
  %2582 = load ptr, ptr %2581, align 8, !tbaa !56
  %2583 = load ptr, ptr %25, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2583, i32 0, i32 2
  %2585 = getelementptr inbounds %struct.UT_hash_handle, ptr %2584, i32 0, i32 0
  %2586 = load ptr, ptr %2585, align 8, !tbaa !32
  %2587 = getelementptr inbounds %struct.UT_hash_table, ptr %2586, i32 0, i32 5
  %2588 = load i64, ptr %2587, align 8, !tbaa !41
  %2589 = getelementptr inbounds i8, ptr %2582, i64 %2588
  %2590 = getelementptr inbounds %struct.UT_hash_handle, ptr %2589, i32 0, i32 1
  store ptr %2579, ptr %2590, align 8, !tbaa !86
  br label %2591

2591:                                             ; preds = %2576, %2571
  br label %2592

2592:                                             ; preds = %2591
  %2593 = load ptr, ptr %74, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.UT_hash_handle, ptr %2593, i32 0, i32 7
  %2595 = load i32, ptr %2594, align 4, !tbaa !65
  %2596 = load ptr, ptr %25, align 8, !tbaa !5
  %2597 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2596, i32 0, i32 2
  %2598 = getelementptr inbounds %struct.UT_hash_handle, ptr %2597, i32 0, i32 0
  %2599 = load ptr, ptr %2598, align 8, !tbaa !32
  %2600 = getelementptr inbounds %struct.UT_hash_table, ptr %2599, i32 0, i32 1
  %2601 = load i32, ptr %2600, align 8, !tbaa !35
  %2602 = sub i32 %2601, 1
  %2603 = and i32 %2595, %2602
  store i32 %2603, ptr %75, align 4, !tbaa !9
  br label %2604

2604:                                             ; preds = %2592
  br label %2605

2605:                                             ; preds = %2604
  br label %2606

2606:                                             ; preds = %2605
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %2607 = load ptr, ptr %25, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2607, i32 0, i32 2
  %2609 = getelementptr inbounds %struct.UT_hash_handle, ptr %2608, i32 0, i32 0
  %2610 = load ptr, ptr %2609, align 8, !tbaa !32
  %2611 = getelementptr inbounds %struct.UT_hash_table, ptr %2610, i32 0, i32 0
  %2612 = load ptr, ptr %2611, align 8, !tbaa !38
  %2613 = load i32, ptr %75, align 4, !tbaa !9
  %2614 = zext i32 %2613 to i64
  %2615 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2612, i64 %2614
  store ptr %2615, ptr %76, align 8, !tbaa !5
  %2616 = load ptr, ptr %76, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2616, i32 0, i32 1
  %2618 = load i32, ptr %2617, align 8, !tbaa !57
  %2619 = add i32 %2618, -1
  store i32 %2619, ptr %2617, align 8, !tbaa !57
  %2620 = load ptr, ptr %76, align 8, !tbaa !5
  %2621 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2620, i32 0, i32 0
  %2622 = load ptr, ptr %2621, align 8, !tbaa !39
  %2623 = load ptr, ptr %74, align 8, !tbaa !5
  %2624 = icmp eq ptr %2622, %2623
  br i1 %2624, label %2625, label %2631

2625:                                             ; preds = %2606
  %2626 = load ptr, ptr %74, align 8, !tbaa !5
  %2627 = getelementptr inbounds %struct.UT_hash_handle, ptr %2626, i32 0, i32 4
  %2628 = load ptr, ptr %2627, align 8, !tbaa !64
  %2629 = load ptr, ptr %76, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2629, i32 0, i32 0
  store ptr %2628, ptr %2630, align 8, !tbaa !39
  br label %2631

2631:                                             ; preds = %2625, %2606
  %2632 = load ptr, ptr %74, align 8, !tbaa !5
  %2633 = getelementptr inbounds %struct.UT_hash_handle, ptr %2632, i32 0, i32 3
  %2634 = load ptr, ptr %2633, align 8, !tbaa !59
  %2635 = icmp ne ptr %2634, null
  br i1 %2635, label %2636, label %2644

2636:                                             ; preds = %2631
  %2637 = load ptr, ptr %74, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.UT_hash_handle, ptr %2637, i32 0, i32 4
  %2639 = load ptr, ptr %2638, align 8, !tbaa !64
  %2640 = load ptr, ptr %74, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.UT_hash_handle, ptr %2640, i32 0, i32 3
  %2642 = load ptr, ptr %2641, align 8, !tbaa !59
  %2643 = getelementptr inbounds %struct.UT_hash_handle, ptr %2642, i32 0, i32 4
  store ptr %2639, ptr %2643, align 8, !tbaa !64
  br label %2644

2644:                                             ; preds = %2636, %2631
  %2645 = load ptr, ptr %74, align 8, !tbaa !5
  %2646 = getelementptr inbounds %struct.UT_hash_handle, ptr %2645, i32 0, i32 4
  %2647 = load ptr, ptr %2646, align 8, !tbaa !64
  %2648 = icmp ne ptr %2647, null
  br i1 %2648, label %2649, label %2657

2649:                                             ; preds = %2644
  %2650 = load ptr, ptr %74, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.UT_hash_handle, ptr %2650, i32 0, i32 3
  %2652 = load ptr, ptr %2651, align 8, !tbaa !59
  %2653 = load ptr, ptr %74, align 8, !tbaa !5
  %2654 = getelementptr inbounds %struct.UT_hash_handle, ptr %2653, i32 0, i32 4
  %2655 = load ptr, ptr %2654, align 8, !tbaa !64
  %2656 = getelementptr inbounds %struct.UT_hash_handle, ptr %2655, i32 0, i32 3
  store ptr %2652, ptr %2656, align 8, !tbaa !59
  br label %2657

2657:                                             ; preds = %2649, %2644
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %2658

2658:                                             ; preds = %2657
  br label %2659

2659:                                             ; preds = %2658
  %2660 = load ptr, ptr %25, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2660, i32 0, i32 2
  %2662 = getelementptr inbounds %struct.UT_hash_handle, ptr %2661, i32 0, i32 0
  %2663 = load ptr, ptr %2662, align 8, !tbaa !32
  %2664 = getelementptr inbounds %struct.UT_hash_table, ptr %2663, i32 0, i32 3
  %2665 = load i32, ptr %2664, align 8, !tbaa !48
  %2666 = add i32 %2665, -1
  store i32 %2666, ptr %2664, align 8, !tbaa !48
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #10
  br label %2667

2667:                                             ; preds = %2659, %2508
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  br label %2668

2668:                                             ; preds = %2667
  br label %2669

2669:                                             ; preds = %2668
  %2670 = load ptr, ptr %70, align 8, !tbaa !5
  call void @free(ptr noundef %2670) #10
  store ptr null, ptr %70, align 8, !tbaa !5
  br label %2671

2671:                                             ; preds = %2669
  %2672 = load ptr, ptr %71, align 8, !tbaa !5
  store ptr %2672, ptr %70, align 8, !tbaa !5
  %2673 = load ptr, ptr %71, align 8, !tbaa !5
  %2674 = icmp ne ptr %2673, null
  br i1 %2674, label %2675, label %2680

2675:                                             ; preds = %2671
  %2676 = load ptr, ptr %71, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.pair_classifier_hash, ptr %2676, i32 0, i32 2
  %2678 = getelementptr inbounds %struct.UT_hash_handle, ptr %2677, i32 0, i32 2
  %2679 = load ptr, ptr %2678, align 8, !tbaa !51
  br label %2681

2680:                                             ; preds = %2671
  br label %2681

2681:                                             ; preds = %2680, %2675
  %2682 = phi ptr [ %2679, %2675 ], [ null, %2680 ]
  store ptr %2682, ptr %71, align 8, !tbaa !5
  br label %2460, !llvm.loop !87

2683:                                             ; preds = %2460
  %2684 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %2684, ptr %6, align 8
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  br label %2685

2685:                                             ; preds = %2683, %278, %220, %210
  call void @llvm.lifetime.end.p0(i64 2, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  %2686 = load i32, ptr %22, align 4
  switch i32 %2686, label %2960 [
    i32 2, label %2957
  ]

2687:                                             ; preds = %95
  %2688 = load i16, ptr %13, align 2, !tbaa !11
  %2689 = zext i16 %2688 to i32
  %2690 = icmp eq i32 %2689, 2
  br i1 %2690, label %2691, label %2955

2691:                                             ; preds = %2687
  %2692 = load i32, ptr %8, align 4, !tbaa !9
  %2693 = load i32, ptr %9, align 4, !tbaa !9
  %2694 = add i32 %2693, 16
  %2695 = icmp ult i32 %2692, %2694
  br i1 %2695, label %2696, label %2697

2696:                                             ; preds = %2691
  br label %2957

2697:                                             ; preds = %2691
  call void @llvm.lifetime.start.p0(i64 2, ptr %77) #10
  %2698 = load ptr, ptr %7, align 8, !tbaa !5
  %2699 = load i32, ptr %9, align 4, !tbaa !9
  %2700 = zext i32 %2699 to i64
  %2701 = getelementptr inbounds i8, ptr %2698, i64 %2700
  %2702 = getelementptr inbounds i8, ptr %2701, i64 4
  %2703 = call zeroext i16 @read_16u(ptr noundef %2702)
  store i16 %2703, ptr %77, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %78) #10
  %2704 = load ptr, ptr %7, align 8, !tbaa !5
  %2705 = load i32, ptr %9, align 4, !tbaa !9
  %2706 = zext i32 %2705 to i64
  %2707 = getelementptr inbounds i8, ptr %2704, i64 %2706
  %2708 = getelementptr inbounds i8, ptr %2707, i64 6
  %2709 = call zeroext i16 @read_16u(ptr noundef %2708)
  store i16 %2709, ptr %78, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  %2710 = load i16, ptr %77, align 2, !tbaa !11
  %2711 = call zeroext i8 @position_format_length(i16 noundef zeroext %2710)
  store i8 %2711, ptr %79, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #10
  %2712 = load i16, ptr %78, align 2, !tbaa !11
  %2713 = call zeroext i8 @position_format_length(i16 noundef zeroext %2712)
  store i8 %2713, ptr %80, align 1, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %2714 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 9), align 8, !tbaa !15
  %2715 = load ptr, ptr %7, align 8, !tbaa !5
  %2716 = load i32, ptr %8, align 4, !tbaa !9
  %2717 = load i32, ptr %9, align 4, !tbaa !9
  %2718 = load ptr, ptr %7, align 8, !tbaa !5
  %2719 = load i32, ptr %9, align 4, !tbaa !9
  %2720 = zext i32 %2719 to i64
  %2721 = getelementptr inbounds i8, ptr %2718, i64 %2720
  %2722 = getelementptr inbounds i8, ptr %2721, i64 2
  %2723 = call zeroext i16 @read_16u(ptr noundef %2722)
  %2724 = zext i16 %2723 to i32
  %2725 = add i32 %2717, %2724
  %2726 = call ptr %2714(ptr noundef %2715, i32 noundef %2716, i32 noundef %2725)
  store ptr %2726, ptr %81, align 8, !tbaa !5
  %2727 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 9), align 8, !tbaa !88
  %2728 = load ptr, ptr %7, align 8, !tbaa !5
  %2729 = load i32, ptr %8, align 4, !tbaa !9
  %2730 = load i32, ptr %9, align 4, !tbaa !9
  %2731 = load ptr, ptr %7, align 8, !tbaa !5
  %2732 = load i32, ptr %9, align 4, !tbaa !9
  %2733 = zext i32 %2732 to i64
  %2734 = getelementptr inbounds i8, ptr %2731, i64 %2733
  %2735 = getelementptr inbounds i8, ptr %2734, i64 8
  %2736 = call zeroext i16 @read_16u(ptr noundef %2735)
  %2737 = zext i16 %2736 to i32
  %2738 = add i32 %2730, %2737
  %2739 = call ptr %2727(ptr noundef %2728, i32 noundef %2729, i32 noundef %2738)
  %2740 = load ptr, ptr %12, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2740, i32 0, i32 0
  store ptr %2739, ptr %2741, align 8, !tbaa !17
  %2742 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 10), align 8, !tbaa !90
  %2743 = load ptr, ptr %81, align 8, !tbaa !5
  %2744 = load ptr, ptr %12, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2744, i32 0, i32 0
  %2746 = load ptr, ptr %2745, align 8, !tbaa !17
  %2747 = call ptr %2742(ptr noundef %2743, ptr noundef %2746)
  %2748 = load ptr, ptr %12, align 8, !tbaa !5
  %2749 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2748, i32 0, i32 0
  store ptr %2747, ptr %2749, align 8, !tbaa !17
  %2750 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 7), align 8, !tbaa !91
  %2751 = load ptr, ptr %81, align 8, !tbaa !5
  call void %2750(ptr noundef %2751)
  store ptr null, ptr %81, align 8, !tbaa !5
  %2752 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 9), align 8, !tbaa !88
  %2753 = load ptr, ptr %7, align 8, !tbaa !5
  %2754 = load i32, ptr %8, align 4, !tbaa !9
  %2755 = load i32, ptr %9, align 4, !tbaa !9
  %2756 = load ptr, ptr %7, align 8, !tbaa !5
  %2757 = load i32, ptr %9, align 4, !tbaa !9
  %2758 = zext i32 %2757 to i64
  %2759 = getelementptr inbounds i8, ptr %2756, i64 %2758
  %2760 = getelementptr inbounds i8, ptr %2759, i64 10
  %2761 = call zeroext i16 @read_16u(ptr noundef %2760)
  %2762 = zext i16 %2761 to i32
  %2763 = add i32 %2755, %2762
  %2764 = call ptr %2752(ptr noundef %2753, i32 noundef %2754, i32 noundef %2763)
  %2765 = load ptr, ptr %12, align 8, !tbaa !5
  %2766 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2765, i32 0, i32 1
  store ptr %2764, ptr %2766, align 8, !tbaa !71
  %2767 = load ptr, ptr %12, align 8, !tbaa !5
  %2768 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2767, i32 0, i32 0
  %2769 = load ptr, ptr %2768, align 8, !tbaa !17
  %2770 = icmp ne ptr %2769, null
  br i1 %2770, label %2771, label %2776

2771:                                             ; preds = %2697
  %2772 = load ptr, ptr %12, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2772, i32 0, i32 1
  %2774 = load ptr, ptr %2773, align 8, !tbaa !71
  %2775 = icmp ne ptr %2774, null
  br i1 %2775, label %2777, label %2776

2776:                                             ; preds = %2771, %2697
  store i32 2, ptr %22, align 4
  br label %2953

2777:                                             ; preds = %2771
  call void @llvm.lifetime.start.p0(i64 2, ptr %82) #10
  %2778 = load ptr, ptr %7, align 8, !tbaa !5
  %2779 = load i32, ptr %9, align 4, !tbaa !9
  %2780 = zext i32 %2779 to i64
  %2781 = getelementptr inbounds i8, ptr %2778, i64 %2780
  %2782 = getelementptr inbounds i8, ptr %2781, i64 12
  %2783 = call zeroext i16 @read_16u(ptr noundef %2782)
  store i16 %2783, ptr %82, align 2, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 2, ptr %83) #10
  %2784 = load ptr, ptr %7, align 8, !tbaa !5
  %2785 = load i32, ptr %9, align 4, !tbaa !9
  %2786 = zext i32 %2785 to i64
  %2787 = getelementptr inbounds i8, ptr %2784, i64 %2786
  %2788 = getelementptr inbounds i8, ptr %2787, i64 14
  %2789 = call zeroext i16 @read_16u(ptr noundef %2788)
  store i16 %2789, ptr %83, align 2, !tbaa !11
  %2790 = load ptr, ptr %12, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2790, i32 0, i32 0
  %2792 = load ptr, ptr %2791, align 8, !tbaa !17
  %2793 = getelementptr inbounds %struct.otl_ClassDef, ptr %2792, i32 0, i32 2
  %2794 = load i16, ptr %2793, align 8, !tbaa !23
  %2795 = zext i16 %2794 to i32
  %2796 = add nsw i32 %2795, 1
  %2797 = load i16, ptr %82, align 2, !tbaa !11
  %2798 = zext i16 %2797 to i32
  %2799 = icmp ne i32 %2796, %2798
  br i1 %2799, label %2800, label %2801

2800:                                             ; preds = %2777
  store i32 2, ptr %22, align 4
  br label %2952

2801:                                             ; preds = %2777
  %2802 = load ptr, ptr %12, align 8, !tbaa !5
  %2803 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2802, i32 0, i32 1
  %2804 = load ptr, ptr %2803, align 8, !tbaa !71
  %2805 = getelementptr inbounds %struct.otl_ClassDef, ptr %2804, i32 0, i32 2
  %2806 = load i16, ptr %2805, align 8, !tbaa !23
  %2807 = zext i16 %2806 to i32
  %2808 = add nsw i32 %2807, 1
  %2809 = load i16, ptr %83, align 2, !tbaa !11
  %2810 = zext i16 %2809 to i32
  %2811 = icmp ne i32 %2808, %2810
  br i1 %2811, label %2812, label %2813

2812:                                             ; preds = %2801
  store i32 2, ptr %22, align 4
  br label %2952

2813:                                             ; preds = %2801
  %2814 = load i32, ptr %8, align 4, !tbaa !9
  %2815 = load i32, ptr %9, align 4, !tbaa !9
  %2816 = add i32 %2815, 16
  %2817 = load i16, ptr %82, align 2, !tbaa !11
  %2818 = zext i16 %2817 to i32
  %2819 = load i16, ptr %83, align 2, !tbaa !11
  %2820 = zext i16 %2819 to i32
  %2821 = mul nsw i32 %2818, %2820
  %2822 = load i8, ptr %79, align 1, !tbaa !29
  %2823 = zext i8 %2822 to i32
  %2824 = load i8, ptr %80, align 1, !tbaa !29
  %2825 = zext i8 %2824 to i32
  %2826 = add nsw i32 %2823, %2825
  %2827 = mul nsw i32 %2821, %2826
  %2828 = add i32 %2816, %2827
  %2829 = icmp ult i32 %2814, %2828
  br i1 %2829, label %2830, label %2831

2830:                                             ; preds = %2813
  store i32 2, ptr %22, align 4
  br label %2952

2831:                                             ; preds = %2813
  %2832 = load i16, ptr %82, align 2, !tbaa !11
  %2833 = zext i16 %2832 to i64
  %2834 = mul i64 8, %2833
  %2835 = call ptr @__caryll_allocate_clean(i64 noundef %2834, i64 noundef 153)
  %2836 = load ptr, ptr %12, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2836, i32 0, i32 2
  store ptr %2835, ptr %2837, align 8, !tbaa !72
  %2838 = load i16, ptr %82, align 2, !tbaa !11
  %2839 = zext i16 %2838 to i64
  %2840 = mul i64 8, %2839
  %2841 = call ptr @__caryll_allocate_clean(i64 noundef %2840, i64 noundef 154)
  %2842 = load ptr, ptr %12, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2842, i32 0, i32 3
  store ptr %2841, ptr %2843, align 8, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 2, ptr %84) #10
  store i16 0, ptr %84, align 2, !tbaa !11
  br label %2844

2844:                                             ; preds = %2947, %2831
  %2845 = load i16, ptr %84, align 2, !tbaa !11
  %2846 = zext i16 %2845 to i32
  %2847 = load i16, ptr %82, align 2, !tbaa !11
  %2848 = zext i16 %2847 to i32
  %2849 = icmp slt i32 %2846, %2848
  br i1 %2849, label %2851, label %2850

2850:                                             ; preds = %2844
  store i32 122, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %84) #10
  br label %2950

2851:                                             ; preds = %2844
  %2852 = load i16, ptr %83, align 2, !tbaa !11
  %2853 = zext i16 %2852 to i64
  %2854 = mul i64 32, %2853
  %2855 = call ptr @__caryll_allocate_clean(i64 noundef %2854, i64 noundef 157)
  %2856 = load ptr, ptr %12, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2856, i32 0, i32 2
  %2858 = load ptr, ptr %2857, align 8, !tbaa !72
  %2859 = load i16, ptr %84, align 2, !tbaa !11
  %2860 = zext i16 %2859 to i64
  %2861 = getelementptr inbounds ptr, ptr %2858, i64 %2860
  store ptr %2855, ptr %2861, align 8, !tbaa !5
  %2862 = load i16, ptr %83, align 2, !tbaa !11
  %2863 = zext i16 %2862 to i64
  %2864 = mul i64 32, %2863
  %2865 = call ptr @__caryll_allocate_clean(i64 noundef %2864, i64 noundef 158)
  %2866 = load ptr, ptr %12, align 8, !tbaa !5
  %2867 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2866, i32 0, i32 3
  %2868 = load ptr, ptr %2867, align 8, !tbaa !73
  %2869 = load i16, ptr %84, align 2, !tbaa !11
  %2870 = zext i16 %2869 to i64
  %2871 = getelementptr inbounds ptr, ptr %2868, i64 %2870
  store ptr %2865, ptr %2871, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %85) #10
  store i16 0, ptr %85, align 2, !tbaa !11
  br label %2872

2872:                                             ; preds = %2943, %2851
  %2873 = load i16, ptr %85, align 2, !tbaa !11
  %2874 = zext i16 %2873 to i32
  %2875 = load i16, ptr %83, align 2, !tbaa !11
  %2876 = zext i16 %2875 to i32
  %2877 = icmp slt i32 %2874, %2876
  br i1 %2877, label %2879, label %2878

2878:                                             ; preds = %2872
  store i32 125, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %85) #10
  br label %2946

2879:                                             ; preds = %2872
  %2880 = load ptr, ptr %12, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2880, i32 0, i32 2
  %2882 = load ptr, ptr %2881, align 8, !tbaa !72
  %2883 = load i16, ptr %84, align 2, !tbaa !11
  %2884 = zext i16 %2883 to i64
  %2885 = getelementptr inbounds ptr, ptr %2882, i64 %2884
  %2886 = load ptr, ptr %2885, align 8, !tbaa !5
  %2887 = load i16, ptr %85, align 2, !tbaa !11
  %2888 = zext i16 %2887 to i64
  %2889 = getelementptr inbounds %struct.otl_PositionValue, ptr %2886, i64 %2888
  call void @llvm.lifetime.start.p0(i64 32, ptr %86) #10
  %2890 = load ptr, ptr %7, align 8, !tbaa !5
  %2891 = load i32, ptr %8, align 4, !tbaa !9
  %2892 = load i32, ptr %9, align 4, !tbaa !9
  %2893 = add i32 %2892, 16
  %2894 = load i16, ptr %84, align 2, !tbaa !11
  %2895 = zext i16 %2894 to i32
  %2896 = load i16, ptr %83, align 2, !tbaa !11
  %2897 = zext i16 %2896 to i32
  %2898 = mul nsw i32 %2895, %2897
  %2899 = load i16, ptr %85, align 2, !tbaa !11
  %2900 = zext i16 %2899 to i32
  %2901 = add nsw i32 %2898, %2900
  %2902 = load i8, ptr %79, align 1, !tbaa !29
  %2903 = zext i8 %2902 to i32
  %2904 = load i8, ptr %80, align 1, !tbaa !29
  %2905 = zext i8 %2904 to i32
  %2906 = add nsw i32 %2903, %2905
  %2907 = mul nsw i32 %2901, %2906
  %2908 = add i32 %2893, %2907
  %2909 = load i16, ptr %77, align 2, !tbaa !11
  call void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %86, ptr noundef %2890, i32 noundef %2891, i32 noundef %2908, i16 noundef zeroext %2909)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2889, ptr align 8 %86, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %86) #10
  %2910 = load ptr, ptr %12, align 8, !tbaa !5
  %2911 = getelementptr inbounds %struct.subtable_gpos_pair, ptr %2910, i32 0, i32 3
  %2912 = load ptr, ptr %2911, align 8, !tbaa !73
  %2913 = load i16, ptr %84, align 2, !tbaa !11
  %2914 = zext i16 %2913 to i64
  %2915 = getelementptr inbounds ptr, ptr %2912, i64 %2914
  %2916 = load ptr, ptr %2915, align 8, !tbaa !5
  %2917 = load i16, ptr %85, align 2, !tbaa !11
  %2918 = zext i16 %2917 to i64
  %2919 = getelementptr inbounds %struct.otl_PositionValue, ptr %2916, i64 %2918
  call void @llvm.lifetime.start.p0(i64 32, ptr %87) #10
  %2920 = load ptr, ptr %7, align 8, !tbaa !5
  %2921 = load i32, ptr %8, align 4, !tbaa !9
  %2922 = load i32, ptr %9, align 4, !tbaa !9
  %2923 = add i32 %2922, 16
  %2924 = load i16, ptr %84, align 2, !tbaa !11
  %2925 = zext i16 %2924 to i32
  %2926 = load i16, ptr %83, align 2, !tbaa !11
  %2927 = zext i16 %2926 to i32
  %2928 = mul nsw i32 %2925, %2927
  %2929 = load i16, ptr %85, align 2, !tbaa !11
  %2930 = zext i16 %2929 to i32
  %2931 = add nsw i32 %2928, %2930
  %2932 = load i8, ptr %79, align 1, !tbaa !29
  %2933 = zext i8 %2932 to i32
  %2934 = load i8, ptr %80, align 1, !tbaa !29
  %2935 = zext i8 %2934 to i32
  %2936 = add nsw i32 %2933, %2935
  %2937 = mul nsw i32 %2931, %2936
  %2938 = add i32 %2923, %2937
  %2939 = load i8, ptr %79, align 1, !tbaa !29
  %2940 = zext i8 %2939 to i32
  %2941 = add i32 %2938, %2940
  %2942 = load i16, ptr %78, align 2, !tbaa !11
  call void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8 %87, ptr noundef %2920, i32 noundef %2921, i32 noundef %2941, i16 noundef zeroext %2942)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2919, ptr align 8 %87, i64 32, i1 false), !tbaa.struct !74
  call void @llvm.lifetime.end.p0(i64 32, ptr %87) #10
  br label %2943

2943:                                             ; preds = %2879
  %2944 = load i16, ptr %85, align 2, !tbaa !11
  %2945 = add i16 %2944, 1
  store i16 %2945, ptr %85, align 2, !tbaa !11
  br label %2872, !llvm.loop !92

2946:                                             ; preds = %2878
  br label %2947

2947:                                             ; preds = %2946
  %2948 = load i16, ptr %84, align 2, !tbaa !11
  %2949 = add i16 %2948, 1
  store i16 %2949, ptr %84, align 2, !tbaa !11
  br label %2844, !llvm.loop !93

2950:                                             ; preds = %2850
  %2951 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %2951, ptr %6, align 8
  store i32 1, ptr %22, align 4
  br label %2952

2952:                                             ; preds = %2950, %2830, %2812, %2800
  call void @llvm.lifetime.end.p0(i64 2, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %82) #10
  br label %2953

2953:                                             ; preds = %2952, %2776
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 2, ptr %77) #10
  %2954 = load i32, ptr %22, align 4
  switch i32 %2954, label %2960 [
    i32 2, label %2957
  ]

2955:                                             ; preds = %2687
  br label %2956

2956:                                             ; preds = %2955
  br label %2957

2957:                                             ; preds = %2956, %2953, %2696, %2685, %94
  %2958 = load ptr, ptr getelementptr inbounds (%struct.__caryll_elementinterface_subtable_gpos_pair, ptr @iSubtable_gpos_pair, i32 0, i32 7), align 8, !tbaa !94
  %2959 = load ptr, ptr %12, align 8, !tbaa !5
  call void %2958(ptr noundef %2959)
  store ptr null, ptr %6, align 8
  store i32 1, ptr %22, align 4
  br label %2960

2960:                                             ; preds = %2957, %2953, %2685
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  %2961 = load ptr, ptr %6, align 8
  ret ptr %2961
}

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i16 @read_16u(ptr noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @__caryll_allocate_clean(i64 noundef, i64 noundef) #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
declare void @free(ptr noundef) #3

declare zeroext i8 @position_format_length(i16 noundef zeroext) #4

; Function Attrs: nounwind willreturn memory(read)
declare i32 @memcmp(ptr noundef, ptr noundef, i64 noundef) #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

declare void @position_zero(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8, ...) #4

; 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) #9

declare void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8, ptr noundef, i32 noundef, i32 noundef, i16 noundef zeroext) #4

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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"short", !7, i64 0}
!13 = !{!14, !6, i64 48}
!14 = !{!"__caryll_elementinterface_subtable_gpos_pair", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!15 = !{!16, !6, i64 72}
!16 = !{!"__otfcc_ICoverage", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!17 = !{!18, !6, i64 0}
!18 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!20, !12, i64 0}
!20 = !{!"", !12, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!22, !12, i64 0}
!22 = !{!"", !12, i64 0, !10, i64 4, !12, i64 8, !6, i64 16, !6, i64 24}
!23 = !{!22, !12, i64 8}
!24 = !{!20, !6, i64 8}
!25 = !{!22, !6, i64 16}
!26 = !{!22, !6, i64 24}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!7, !7, i64 0}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !28}
!32 = !{!33, !6, i64 8}
!33 = !{!"", !10, i64 0, !10, i64 4, !34, i64 8}
!34 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52}
!35 = !{!36, !10, i64 8}
!36 = !{!"UT_hash_table", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !37, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!37 = !{!"long", !7, i64 0}
!38 = !{!36, !6, i64 0}
!39 = !{!40, !6, i64 0}
!40 = !{!"UT_hash_bucket", !6, i64 0, !10, i64 8, !10, i64 12}
!41 = !{!36, !37, i64 32}
!42 = !{!33, !10, i64 60}
!43 = !{!33, !10, i64 56}
!44 = !{!33, !6, i64 48}
!45 = !{!33, !6, i64 40}
!46 = distinct !{!46, !28}
!47 = !{!33, !10, i64 0}
!48 = !{!36, !10, i64 16}
!49 = !{!33, !10, i64 4}
!50 = distinct !{!50, !28}
!51 = !{!33, !6, i64 24}
!52 = !{!33, !6, i64 16}
!53 = !{!36, !6, i64 24}
!54 = !{!36, !10, i64 12}
!55 = !{!36, !10, i64 56}
!56 = !{!34, !6, i64 16}
!57 = !{!40, !10, i64 8}
!58 = !{!33, !6, i64 32}
!59 = !{!34, !6, i64 24}
!60 = !{!40, !10, i64 12}
!61 = !{!36, !10, i64 52}
!62 = !{!36, !10, i64 40}
!63 = !{!36, !10, i64 44}
!64 = !{!34, !6, i64 32}
!65 = !{!34, !10, i64 52}
!66 = distinct !{!66, !28}
!67 = distinct !{!67, !28}
!68 = !{!36, !10, i64 48}
!69 = distinct !{!69, !28}
!70 = distinct !{!70, !28}
!71 = !{!18, !6, i64 8}
!72 = !{!18, !6, i64 16}
!73 = !{!18, !6, i64 24}
!74 = !{i64 0, i64 8, !75, i64 8, i64 8, !75, i64 16, i64 8, !75, i64 24, i64 8, !75}
!75 = !{!76, !76, i64 0}
!76 = !{!"double", !7, i64 0}
!77 = distinct !{!77, !28}
!78 = distinct !{!78, !28}
!79 = distinct !{!79, !28}
!80 = distinct !{!80, !28}
!81 = distinct !{!81, !28}
!82 = distinct !{!82, !28}
!83 = !{!84, !6, i64 64}
!84 = !{!"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}
!85 = !{i64 0, i64 4, !9, i64 4, i64 2, !11, i64 8, i64 8, !5}
!86 = !{!34, !6, i64 8}
!87 = distinct !{!87, !28}
!88 = !{!89, !6, i64 72}
!89 = !{!"__otfcc_IClassDef", !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}
!90 = !{!89, !6, i64 80}
!91 = !{!16, !6, i64 56}
!92 = distinct !{!92, !28}
!93 = distinct !{!93, !28}
!94 = !{!14, !6, i64 56}


; 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.__caryll_elementinterface_subtable_gpos_pair = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_IClassDef = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_PositionValue = type { double, double, double, double }
%struct.UT_hash_bucket = type { ptr, i32, i32 }
%struct.otfcc_Handle = type { i32, i16, ptr }

@iSubtable_gpos_pair = external dso_local local_unnamed_addr constant %struct.__caryll_elementinterface_subtable_gpos_pair, align 8
@otl_iCoverage = external local_unnamed_addr constant %struct.__otfcc_ICoverage, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8
@otl_iClassDef = external local_unnamed_addr constant %struct.__otfcc_IClassDef, align 8

; Function Attrs: nounwind uwtable
define dso_local ptr @otl_read_gpos_pair(ptr noundef %0, i32 noundef %1, i32 noundef %2, i16 noundef zeroext %3, ptr nocapture noundef readnone %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca %struct.otl_PositionValue, align 8
  %8 = alloca %struct.otl_PositionValue, align 8
  %9 = alloca i32, align 4
  %10 = alloca %struct.otl_PositionValue, align 8
  %11 = alloca %struct.otl_PositionValue, align 8
  %12 = alloca %struct.otl_PositionValue, align 8
  %13 = alloca %struct.otl_PositionValue, align 8
  %14 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gpos_pair, i64 48), align 8, !tbaa !5
  %15 = tail call ptr (...) %14() #11
  %16 = add i32 %2, 2
  %17 = icmp ugt i32 %16, %1
  br i1 %17, label %.critedge1050, label %18

18:                                               ; preds = %5
  %19 = zext i32 %2 to i64
  %20 = getelementptr inbounds i8, ptr %0, i64 %19
  %21 = tail call zeroext i16 @read_16u(ptr noundef %20)
  switch i16 %21, label %.critedge1050 [
    i16 1, label %22
    i16 2, label %634
  ]

22:                                               ; preds = %18
  %23 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 72), align 8, !tbaa !10
  %24 = getelementptr inbounds i8, ptr %20, i64 2
  %25 = tail call zeroext i16 @read_16u(ptr noundef nonnull %24)
  %26 = zext i16 %25 to i32
  %27 = add i32 %26, %2
  %28 = tail call ptr %23(ptr noundef %0, i32 noundef %1, i32 noundef %27) #11
  %29 = tail call ptr @__caryll_allocate_clean(i64 noundef 32, i64 noundef 45)
  store ptr %29, ptr %15, align 8, !tbaa !12
  %30 = load i16, ptr %28, align 8, !tbaa !14
  store i16 %30, ptr %29, align 8, !tbaa !18
  %31 = add i16 %30, -1
  %32 = getelementptr inbounds i8, ptr %29, i64 8
  store i16 %31, ptr %32, align 8, !tbaa !20
  %33 = getelementptr inbounds i8, ptr %28, i64 8
  %34 = load ptr, ptr %33, align 8, !tbaa !21
  %35 = getelementptr inbounds i8, ptr %29, i64 16
  store ptr %34, ptr %35, align 8, !tbaa !22
  %36 = zext i16 %30 to i64
  %37 = shl nuw nsw i64 %36, 1
  %38 = tail call ptr @__caryll_allocate_clean(i64 noundef %37, i64 noundef 49)
  %39 = load ptr, ptr %15, align 8, !tbaa !12
  %40 = getelementptr inbounds i8, ptr %39, i64 24
  store ptr %38, ptr %40, align 8, !tbaa !23
  %41 = load i16, ptr %28, align 8, !tbaa !14
  %.not1183 = icmp eq i16 %41, 0
  br i1 %.not1183, label %._crit_edge1132, label %.lr.ph1131

._crit_edge1132:                                  ; preds = %.lr.ph1131, %22
  tail call void @free(ptr noundef nonnull %28) #11
  %42 = getelementptr inbounds i8, ptr %20, i64 4
  %43 = tail call zeroext i16 @read_16u(ptr noundef nonnull %42)
  %44 = getelementptr inbounds i8, ptr %20, i64 6
  %45 = tail call zeroext i16 @read_16u(ptr noundef nonnull %44)
  %46 = tail call zeroext i8 @position_format_length(i16 noundef zeroext %43) #11
  %47 = tail call zeroext i8 @position_format_length(i16 noundef zeroext %45) #11
  %48 = getelementptr inbounds i8, ptr %20, i64 8
  %49 = tail call zeroext i16 @read_16u(ptr noundef nonnull %48)
  %50 = load ptr, ptr %15, align 8, !tbaa !12
  %51 = load i16, ptr %50, align 8, !tbaa !18
  %.not1020 = icmp eq i16 %49, %51
  br i1 %.not1020, label %57, label %.critedge1050

.lr.ph1131:                                       ; preds = %22, %.lr.ph1131
  %indvars.iv1197 = phi i64 [ %indvars.iv.next1198, %.lr.ph1131 ], [ 0, %22 ]
  %52 = getelementptr inbounds i16, ptr %38, i64 %indvars.iv1197
  %53 = trunc nuw i64 %indvars.iv1197 to i16
  store i16 %53, ptr %52, align 2, !tbaa !24
  %indvars.iv.next1198 = add nuw nsw i64 %indvars.iv1197, 1
  %54 = load i16, ptr %28, align 8, !tbaa !14
  %55 = zext i16 %54 to i64
  %56 = icmp ult i64 %indvars.iv.next1198, %55
  br i1 %56, label %.lr.ph1131, label %._crit_edge1132, !llvm.loop !25

57:                                               ; preds = %._crit_edge1132
  %58 = zext i16 %49 to i32
  %59 = add i32 %2, 10
  %60 = shl nuw nsw i32 %58, 1
  %61 = add i32 %59, %60
  %62 = icmp ugt i32 %61, %1
  br i1 %62, label %.critedge1050, label %.preheader1116

.preheader1116:                                   ; preds = %57
  %.not1184 = icmp eq i16 %49, 0
  br i1 %.not1184, label %._crit_edge1158.thread, label %.lr.ph1134

.lr.ph1134:                                       ; preds = %.preheader1116
  %63 = getelementptr inbounds i8, ptr %20, i64 10
  %64 = zext i8 %46 to i32
  %65 = add nuw nsw i32 %64, 2
  %66 = zext i8 %47 to i32
  %67 = add nuw nsw i32 %65, %66
  %wide.trip.count1203 = zext i16 %49 to i64
  br label %74

68:                                               ; preds = %82
  %indvars.iv.next1201 = add nuw nsw i64 %indvars.iv1200, 1
  %exitcond1204.not = icmp eq i64 %indvars.iv.next1201, %wide.trip.count1203
  br i1 %exitcond1204.not, label %.preheader1115, label %74, !llvm.loop !27

.preheader1115:                                   ; preds = %68
  br i1 %.not1184, label %._crit_edge1158.thread, label %.lr.ph1157

.lr.ph1157:                                       ; preds = %.preheader1115
  %69 = getelementptr inbounds i8, ptr %20, i64 10
  %70 = zext i8 %46 to i64
  %71 = add nuw nsw i64 %70, 2
  %72 = zext i8 %47 to i64
  %73 = add nuw nsw i64 %71, %72
  %wide.trip.count1218 = zext i16 %49 to i64
  br label %94

74:                                               ; preds = %.lr.ph1134, %68
  %indvars.iv1200 = phi i64 [ 0, %.lr.ph1134 ], [ %indvars.iv.next1201, %68 ]
  %75 = shl nuw nsw i64 %indvars.iv1200, 1
  %76 = getelementptr inbounds i8, ptr %63, i64 %75
  %77 = tail call zeroext i16 @read_16u(ptr noundef nonnull %76)
  %78 = zext i16 %77 to i32
  %79 = add i32 %78, %2
  %80 = add i32 %79, 2
  %81 = icmp ugt i32 %80, %1
  br i1 %81, label %.critedge1050, label %82

82:                                               ; preds = %74
  %83 = zext i32 %79 to i64
  %84 = getelementptr inbounds i8, ptr %0, i64 %83
  %85 = tail call zeroext i16 @read_16u(ptr noundef %84)
  %86 = zext i16 %85 to i32
  %87 = mul nuw nsw i32 %67, %86
  %88 = add i32 %87, %80
  %89 = icmp ugt i32 %88, %1
  br i1 %89, label %.critedge1050, label %68

._crit_edge1158.thread:                           ; preds = %.preheader1115, %.preheader1116
  %90 = tail call ptr @__caryll_allocate_clean(i64 noundef 32, i64 noundef 89)
  %91 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %90, ptr %91, align 8, !tbaa !28
  br label %.critedge

._crit_edge1158:                                  ; preds = %._crit_edge1154
  %92 = tail call ptr @__caryll_allocate_clean(i64 noundef 32, i64 noundef 89)
  %93 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %92, ptr %93, align 8, !tbaa !28
  %.not1021 = icmp eq ptr %.1886.lcssa, null
  br i1 %.not1021, label %.critedge, label %367

94:                                               ; preds = %.lr.ph1157, %._crit_edge1154
  %indvars.iv1215 = phi i64 [ 0, %.lr.ph1157 ], [ %indvars.iv.next1216, %._crit_edge1154 ]
  %.08851156 = phi ptr [ null, %.lr.ph1157 ], [ %.1886.lcssa, %._crit_edge1154 ]
  %95 = shl nuw nsw i64 %indvars.iv1215, 1
  %96 = getelementptr inbounds i8, ptr %69, i64 %95
  %97 = tail call zeroext i16 @read_16u(ptr noundef nonnull %96)
  %98 = zext i16 %97 to i32
  %99 = add i32 %98, %2
  %100 = zext i32 %99 to i64
  %101 = getelementptr inbounds i8, ptr %0, i64 %100
  %102 = tail call zeroext i16 @read_16u(ptr noundef %101)
  %.not1186 = icmp eq i16 %102, 0
  br i1 %.not1186, label %._crit_edge1154, label %.lr.ph1153

.lr.ph1153:                                       ; preds = %94
  %103 = getelementptr inbounds i8, ptr %101, i64 2
  %wide.trip.count1213 = zext i16 %102 to i64
  br label %104

._crit_edge1154:                                  ; preds = %.loopexit1114, %94
  %.1886.lcssa = phi ptr [ %.08851156, %94 ], [ %.3888, %.loopexit1114 ]
  %indvars.iv.next1216 = add nuw nsw i64 %indvars.iv1215, 1
  %exitcond1219.not = icmp eq i64 %indvars.iv.next1216, %wide.trip.count1218
  br i1 %exitcond1219.not, label %._crit_edge1158, label %94, !llvm.loop !29

104:                                              ; preds = %.lr.ph1153, %.loopexit1114
  %indvars.iv1210 = phi i64 [ 0, %.lr.ph1153 ], [ %indvars.iv.next1211, %.loopexit1114 ]
  %.18861150 = phi ptr [ %.08851156, %.lr.ph1153 ], [ %.3888, %.loopexit1114 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  %105 = mul nuw nsw i64 %73, %indvars.iv1210
  %106 = getelementptr inbounds i8, ptr %103, i64 %105
  %107 = tail call zeroext i16 @read_16u(ptr noundef nonnull %106)
  %108 = zext i16 %107 to i32
  store i32 %108, ptr %6, align 4, !tbaa !30
  %109 = and i16 %107, -256
  %110 = zext i16 %109 to i32
  %111 = and i16 %107, 255
  %112 = zext nneg i16 %111 to i32
  %113 = add nuw nsw i32 %110, 17973517
  %114 = add nuw nsw i32 %113, %112
  %115 = xor i32 %114, 522093
  %116 = sub nuw nsw i32 -1622558010, %115
  %117 = shl i32 %115, 8
  %118 = xor i32 %116, %117
  %119 = add nuw nsw i32 %115, %118
  %120 = sub nuw nsw i32 -17973517, %119
  %121 = lshr i32 %118, 13
  %122 = xor i32 %120, %121
  %123 = add nuw nsw i32 %118, %122
  %124 = sub nsw i32 %115, %123
  %125 = lshr i32 %122, 12
  %126 = xor i32 %124, %125
  %127 = add nuw nsw i32 %122, %126
  %128 = sub nuw i32 %118, %127
  %129 = shl i32 %126, 16
  %130 = xor i32 %128, %129
  %131 = add i32 %126, %130
  %132 = sub i32 %122, %131
  %133 = lshr i32 %130, 5
  %134 = xor i32 %132, %133
  %135 = add i32 %130, %134
  %136 = sub i32 %126, %135
  %137 = lshr i32 %134, 3
  %138 = xor i32 %136, %137
  %139 = add i32 %134, %138
  %140 = sub i32 %130, %139
  %141 = shl i32 %138, 10
  %142 = xor i32 %140, %141
  %143 = add i32 %138, %142
  %144 = sub i32 %134, %143
  %145 = lshr i32 %142, 15
  %146 = xor i32 %144, %145
  %.not1034 = icmp eq ptr %.18861150, null
  br i1 %.not1034, label %.thread1060, label %148

.thread1060:                                      ; preds = %104
  %147 = tail call ptr @__caryll_allocate_clean(i64 noundef 64, i64 noundef 81)
  store i32 %108, ptr %147, align 8, !tbaa !31
  br label %187

148:                                              ; preds = %104
  %149 = getelementptr inbounds i8, ptr %.18861150, i64 8
  %150 = load ptr, ptr %149, align 8, !tbaa !34
  %151 = getelementptr inbounds i8, ptr %150, i64 8
  %152 = load i32, ptr %151, align 8, !tbaa !35
  %153 = add i32 %152, -1
  %154 = and i32 %153, %146
  %155 = load ptr, ptr %150, align 8, !tbaa !38
  %156 = zext i32 %154 to i64
  %157 = getelementptr inbounds %struct.UT_hash_bucket, ptr %155, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !39
  %.not1035 = icmp eq ptr %158, null
  br i1 %.not1035, label %._crit_edge1139, label %.lr.ph1138

.lr.ph1138:                                       ; preds = %148
  %159 = getelementptr inbounds i8, ptr %150, i64 32
  %160 = load i64, ptr %159, align 8, !tbaa !41
  %161 = sub i64 0, %160
  %162 = getelementptr inbounds i8, ptr %158, i64 %161
  %163 = getelementptr inbounds i8, ptr %150, i64 32
  br label %164

164:                                              ; preds = %179, %.lr.ph1138
  %.18941136 = phi ptr [ %162, %.lr.ph1138 ], [ %182, %179 ]
  %165 = getelementptr inbounds i8, ptr %.18941136, i64 60
  %166 = load i32, ptr %165, align 4, !tbaa !42
  %167 = icmp eq i32 %166, %146
  br i1 %167, label %168, label %176

168:                                              ; preds = %164
  %169 = getelementptr inbounds i8, ptr %.18941136, i64 56
  %170 = load i32, ptr %169, align 8, !tbaa !43
  %171 = icmp eq i32 %170, 4
  br i1 %171, label %172, label %176

172:                                              ; preds = %168
  %173 = getelementptr inbounds i8, ptr %.18941136, i64 48
  %174 = load ptr, ptr %173, align 8, !tbaa !44
  %bcmp1037 = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %174, ptr noundef nonnull dereferenceable(4) %6, i64 4)
  %175 = icmp eq i32 %bcmp1037, 0
  br i1 %175, label %.loopexit1114, label %176

176:                                              ; preds = %172, %168, %164
  %177 = getelementptr inbounds i8, ptr %.18941136, i64 40
  %178 = load ptr, ptr %177, align 8, !tbaa !45
  %.not1038 = icmp eq ptr %178, null
  br i1 %.not1038, label %._crit_edge1139, label %179

179:                                              ; preds = %176
  %180 = load i64, ptr %163, align 8, !tbaa !41
  %181 = sub i64 0, %180
  %182 = getelementptr inbounds i8, ptr %178, i64 %181
  br label %164, !llvm.loop !46

._crit_edge1139:                                  ; preds = %176, %148
  %183 = tail call ptr @__caryll_allocate_clean(i64 noundef 64, i64 noundef 81)
  store i32 %108, ptr %183, align 8, !tbaa !31
  %184 = load ptr, ptr %149, align 8, !tbaa !34
  %185 = getelementptr inbounds i8, ptr %184, i64 16
  %186 = load i32, ptr %185, align 8, !tbaa !47
  br label %187

187:                                              ; preds = %.thread1060, %._crit_edge1139
  %188 = phi ptr [ %183, %._crit_edge1139 ], [ %147, %.thread1060 ]
  %189 = phi i32 [ %186, %._crit_edge1139 ], [ 0, %.thread1060 ]
  %190 = add i32 %189, 1
  %191 = getelementptr inbounds i8, ptr %188, i64 4
  store i32 %190, ptr %191, align 4, !tbaa !48
  %192 = getelementptr inbounds i8, ptr %188, i64 3
  %193 = load i8, ptr %192, align 1, !tbaa !49
  %194 = zext i8 %193 to i32
  %195 = shl nuw i32 %194, 24
  %196 = getelementptr inbounds i8, ptr %188, i64 2
  %197 = load i8, ptr %196, align 1, !tbaa !49
  %198 = zext i8 %197 to i32
  %199 = shl nuw nsw i32 %198, 16
  %200 = getelementptr inbounds i8, ptr %188, i64 1
  %201 = load i8, ptr %200, align 1, !tbaa !49
  %202 = zext i8 %201 to i32
  %203 = shl nuw nsw i32 %202, 8
  %204 = add i32 %195, 17973517
  %205 = add i32 %204, %199
  %206 = add i32 %205, %203
  %207 = add i32 %206, %112
  %208 = xor i32 %207, 522093
  %209 = sub i32 -1622558010, %208
  %210 = shl i32 %208, 8
  %211 = xor i32 %209, %210
  %212 = add i32 %208, %211
  %213 = sub i32 -17973517, %212
  %214 = lshr i32 %211, 13
  %215 = xor i32 %213, %214
  %216 = add i32 %211, %215
  %217 = sub i32 %208, %216
  %218 = lshr i32 %215, 12
  %219 = xor i32 %217, %218
  %220 = add i32 %215, %219
  %221 = sub i32 %211, %220
  %222 = shl i32 %219, 16
  %223 = xor i32 %221, %222
  %224 = add i32 %219, %223
  %225 = sub i32 %215, %224
  %226 = lshr i32 %223, 5
  %227 = xor i32 %225, %226
  %228 = add i32 %223, %227
  %229 = sub i32 %219, %228
  %230 = lshr i32 %227, 3
  %231 = xor i32 %229, %230
  %232 = add i32 %227, %231
  %233 = sub i32 %223, %232
  %234 = shl i32 %231, 10
  %235 = xor i32 %233, %234
  %236 = add i32 %231, %235
  %237 = sub i32 %227, %236
  %238 = lshr i32 %235, 15
  %239 = xor i32 %237, %238
  %240 = getelementptr inbounds i8, ptr %188, i64 8
  %241 = getelementptr inbounds i8, ptr %188, i64 60
  store i32 %239, ptr %241, align 4, !tbaa !42
  %242 = getelementptr inbounds i8, ptr %188, i64 48
  store ptr %188, ptr %242, align 8, !tbaa !44
  %243 = getelementptr inbounds i8, ptr %188, i64 56
  store i32 4, ptr %243, align 8, !tbaa !43
  br i1 %.not1034, label %244, label %258

244:                                              ; preds = %187
  %245 = getelementptr inbounds i8, ptr %188, i64 16
  %246 = 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) %245, i8 0, i64 16, i1 false)
  store ptr %246, ptr %240, align 8, !tbaa !34
  %.not1040 = icmp eq ptr %246, null
  br i1 %.not1040, label %247, label %248

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

248:                                              ; preds = %244
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %246, i8 0, i64 64, i1 false)
  %249 = load ptr, ptr %240, align 8, !tbaa !34
  %250 = getelementptr inbounds i8, ptr %249, i64 24
  store ptr %240, ptr %250, align 8, !tbaa !50
  %251 = getelementptr inbounds i8, ptr %249, i64 8
  store i32 32, ptr %251, align 8, !tbaa !35
  %252 = getelementptr inbounds i8, ptr %249, i64 12
  store i32 5, ptr %252, align 4, !tbaa !51
  %253 = getelementptr inbounds i8, ptr %249, i64 32
  store i64 8, ptr %253, align 8, !tbaa !41
  %254 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #12
  store ptr %254, ptr %249, align 8, !tbaa !38
  %255 = getelementptr inbounds i8, ptr %249, i64 56
  store i32 -1609490463, ptr %255, align 8, !tbaa !52
  %.not1041 = icmp eq ptr %254, null
  br i1 %.not1041, label %256, label %257

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

257:                                              ; preds = %248
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %254, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %240, align 8, !tbaa !34
  br label %270

258:                                              ; preds = %187
  %259 = getelementptr inbounds i8, ptr %.18861150, i64 8
  %260 = load ptr, ptr %259, align 8, !tbaa !34
  store ptr %260, ptr %240, align 8, !tbaa !34
  %261 = getelementptr inbounds i8, ptr %188, i64 24
  store ptr null, ptr %261, align 8, !tbaa !53
  %262 = getelementptr inbounds i8, ptr %260, i64 24
  %263 = load ptr, ptr %262, align 8, !tbaa !50
  %264 = getelementptr inbounds i8, ptr %260, i64 32
  %265 = load i64, ptr %264, align 8, !tbaa !41
  %266 = sub i64 0, %265
  %267 = getelementptr inbounds i8, ptr %263, i64 %266
  %268 = getelementptr inbounds i8, ptr %188, i64 16
  store ptr %267, ptr %268, align 8, !tbaa !54
  %269 = getelementptr inbounds i8, ptr %263, i64 16
  store ptr %188, ptr %269, align 8, !tbaa !55
  store ptr %240, ptr %262, align 8, !tbaa !50
  br label %270

270:                                              ; preds = %257, %258
  %271 = phi ptr [ %260, %258 ], [ %.pre, %257 ]
  %.2887 = phi ptr [ %.18861150, %258 ], [ %188, %257 ]
  %272 = getelementptr inbounds i8, ptr %271, i64 16
  %273 = load i32, ptr %272, align 8, !tbaa !47
  %274 = add i32 %273, 1
  store i32 %274, ptr %272, align 8, !tbaa !47
  %275 = getelementptr inbounds i8, ptr %271, i64 8
  %276 = load i32, ptr %275, align 8, !tbaa !35
  %277 = add i32 %276, -1
  %278 = and i32 %277, %239
  %279 = load ptr, ptr %271, align 8, !tbaa !38
  %280 = zext i32 %278 to i64
  %281 = getelementptr inbounds %struct.UT_hash_bucket, ptr %279, i64 %280
  %282 = getelementptr inbounds i8, ptr %281, i64 8
  %283 = load i32, ptr %282, align 8, !tbaa !56
  %284 = add i32 %283, 1
  store i32 %284, ptr %282, align 8, !tbaa !56
  %285 = load ptr, ptr %281, align 8, !tbaa !39
  %286 = getelementptr inbounds i8, ptr %188, i64 40
  store ptr %285, ptr %286, align 8, !tbaa !45
  %287 = getelementptr inbounds i8, ptr %188, i64 32
  store ptr null, ptr %287, align 8, !tbaa !57
  %.not1042 = icmp eq ptr %285, null
  br i1 %.not1042, label %290, label %288

288:                                              ; preds = %270
  %289 = getelementptr inbounds i8, ptr %285, i64 24
  store ptr %240, ptr %289, align 8, !tbaa !58
  br label %290

290:                                              ; preds = %288, %270
  store ptr %240, ptr %281, align 8, !tbaa !39
  %291 = getelementptr inbounds i8, ptr %281, i64 12
  %292 = load i32, ptr %291, align 4, !tbaa !59
  %293 = mul i32 %292, 10
  %294 = add i32 %293, 10
  %.not1043 = icmp ult i32 %284, %294
  br i1 %.not1043, label %.loopexit1114, label %295

295:                                              ; preds = %290
  %296 = getelementptr inbounds i8, ptr %271, i64 52
  %297 = load i32, ptr %296, align 4, !tbaa !60
  %.not1044 = icmp eq i32 %297, 0
  br i1 %.not1044, label %298, label %.loopexit1114

298:                                              ; preds = %295
  %299 = zext i32 %276 to i64
  %300 = shl nuw nsw i64 %299, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %300)
  %.not1045 = icmp eq ptr %calloc, null
  br i1 %.not1045, label %301, label %302

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

302:                                              ; preds = %298
  %303 = load ptr, ptr %240, align 8, !tbaa !34
  %304 = getelementptr inbounds i8, ptr %303, i64 16
  %305 = load i32, ptr %304, align 8, !tbaa !47
  %306 = getelementptr inbounds i8, ptr %303, i64 12
  %307 = load i32, ptr %306, align 4, !tbaa !51
  %308 = add i32 %307, 1
  %309 = lshr i32 %305, %308
  %310 = getelementptr inbounds i8, ptr %303, i64 8
  %311 = load i32, ptr %310, align 8, !tbaa !35
  %312 = shl i32 %311, 1
  %313 = add i32 %312, -1
  %314 = and i32 %313, %305
  %.not1046 = icmp ne i32 %314, 0
  %315 = zext i1 %.not1046 to i32
  %316 = add i32 %309, %315
  %317 = getelementptr inbounds i8, ptr %303, i64 40
  store i32 %316, ptr %317, align 8, !tbaa !61
  %318 = getelementptr inbounds i8, ptr %303, i64 44
  store i32 0, ptr %318, align 4, !tbaa !62
  %.not1187 = icmp eq i32 %311, 0
  %.pre1232 = load ptr, ptr %303, align 8, !tbaa !38
  br i1 %.not1187, label %._crit_edge1148, label %.lr.ph1147

.lr.ph1147:                                       ; preds = %302
  %wide.trip.count1208 = zext i32 %311 to i64
  br label %319

319:                                              ; preds = %.lr.ph1147, %._crit_edge1144
  %320 = phi i32 [ 0, %.lr.ph1147 ], [ %346, %._crit_edge1144 ]
  %indvars.iv1205 = phi i64 [ 0, %.lr.ph1147 ], [ %indvars.iv.next1206, %._crit_edge1144 ]
  %321 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre1232, i64 %indvars.iv1205
  %322 = load ptr, ptr %321, align 8, !tbaa !39
  %.not10471140 = icmp eq ptr %322, null
  br i1 %.not10471140, label %._crit_edge1144, label %.lr.ph1143

.lr.ph1143:                                       ; preds = %319, %345
  %323 = phi i32 [ %340, %345 ], [ %320, %319 ]
  %.09871141 = phi ptr [ %325, %345 ], [ %322, %319 ]
  %324 = getelementptr inbounds i8, ptr %.09871141, i64 32
  %325 = load ptr, ptr %324, align 8, !tbaa !63
  %326 = getelementptr inbounds i8, ptr %.09871141, i64 52
  %327 = load i32, ptr %326, align 4, !tbaa !64
  %328 = and i32 %327, %313
  %329 = zext i32 %328 to i64
  %330 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %329
  %331 = getelementptr inbounds i8, ptr %330, i64 8
  %332 = load i32, ptr %331, align 8, !tbaa !56
  %333 = add i32 %332, 1
  store i32 %333, ptr %331, align 8, !tbaa !56
  %334 = icmp ugt i32 %333, %316
  br i1 %334, label %335, label %339

335:                                              ; preds = %.lr.ph1143
  %336 = add i32 %323, 1
  store i32 %336, ptr %318, align 4, !tbaa !62
  %337 = udiv i32 %333, %316
  %338 = getelementptr inbounds i8, ptr %330, i64 12
  store i32 %337, ptr %338, align 4, !tbaa !59
  br label %339

339:                                              ; preds = %335, %.lr.ph1143
  %340 = phi i32 [ %336, %335 ], [ %323, %.lr.ph1143 ]
  %341 = getelementptr inbounds i8, ptr %.09871141, i64 24
  store ptr null, ptr %341, align 8, !tbaa !58
  %342 = load ptr, ptr %330, align 8, !tbaa !39
  store ptr %342, ptr %324, align 8, !tbaa !63
  %.not1048 = icmp eq ptr %342, null
  br i1 %.not1048, label %345, label %343

343:                                              ; preds = %339
  %344 = getelementptr inbounds i8, ptr %342, i64 24
  store ptr %.09871141, ptr %344, align 8, !tbaa !58
  br label %345

345:                                              ; preds = %343, %339
  store ptr %.09871141, ptr %330, align 8, !tbaa !39
  %.not1047 = icmp eq ptr %325, null
  br i1 %.not1047, label %._crit_edge1144, label %.lr.ph1143, !llvm.loop !65

._crit_edge1144:                                  ; preds = %345, %319
  %346 = phi i32 [ %320, %319 ], [ %340, %345 ]
  %indvars.iv.next1206 = add nuw nsw i64 %indvars.iv1205, 1
  %exitcond1209.not = icmp eq i64 %indvars.iv.next1206, %wide.trip.count1208
  br i1 %exitcond1209.not, label %._crit_edge1148, label %319, !llvm.loop !66

._crit_edge1148:                                  ; preds = %._crit_edge1144, %302
  tail call void @free(ptr noundef %.pre1232) #11
  %347 = load ptr, ptr %240, align 8, !tbaa !34
  %348 = getelementptr inbounds i8, ptr %347, i64 8
  %349 = load i32, ptr %348, align 8, !tbaa !35
  %350 = shl i32 %349, 1
  store i32 %350, ptr %348, align 8, !tbaa !35
  %351 = getelementptr inbounds i8, ptr %347, i64 12
  %352 = load i32, ptr %351, align 4, !tbaa !51
  %353 = add i32 %352, 1
  store i32 %353, ptr %351, align 4, !tbaa !51
  store ptr %calloc, ptr %347, align 8, !tbaa !38
  %354 = getelementptr inbounds i8, ptr %347, i64 44
  %355 = load i32, ptr %354, align 4, !tbaa !62
  %356 = getelementptr inbounds i8, ptr %347, i64 16
  %357 = load i32, ptr %356, align 8, !tbaa !47
  %358 = lshr i32 %357, 1
  %359 = icmp ugt i32 %355, %358
  %360 = getelementptr inbounds i8, ptr %347, i64 48
  br i1 %359, label %361, label %.thread1061

.thread1061:                                      ; preds = %._crit_edge1148
  store i32 0, ptr %360, align 8, !tbaa !67
  br label %.loopexit1114

361:                                              ; preds = %._crit_edge1148
  %362 = load i32, ptr %360, align 8, !tbaa !67
  %363 = add i32 %362, 1
  store i32 %363, ptr %360, align 8, !tbaa !67
  %364 = icmp ugt i32 %363, 1
  br i1 %364, label %365, label %.loopexit1114

365:                                              ; preds = %361
  %366 = getelementptr inbounds i8, ptr %347, i64 52
  store i32 1, ptr %366, align 4, !tbaa !60
  br label %.loopexit1114

.loopexit1114:                                    ; preds = %172, %.thread1061, %290, %295, %361, %365
  %.3888 = phi ptr [ %.2887, %365 ], [ %.2887, %361 ], [ %.2887, %295 ], [ %.2887, %290 ], [ %.2887, %.thread1061 ], [ %.18861150, %172 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  %indvars.iv.next1211 = add nuw nsw i64 %indvars.iv1210, 1
  %exitcond1214.not = icmp eq i64 %indvars.iv.next1211, %wide.trip.count1213
  br i1 %exitcond1214.not, label %._crit_edge1154, label %104, !llvm.loop !68

367:                                              ; preds = %._crit_edge1158
  %368 = getelementptr inbounds i8, ptr %.1886.lcssa, i64 8
  %369 = load ptr, ptr %368, align 8, !tbaa !34
  %370 = getelementptr inbounds i8, ptr %369, i64 16
  %371 = load i32, ptr %370, align 8, !tbaa !47
  %372 = trunc i32 %371 to i16
  %373 = trunc i32 %371 to i16
  br label %.critedge

.critedge:                                        ; preds = %._crit_edge1158, %._crit_edge1158.thread, %367
  %.not10211242 = phi i1 [ false, %367 ], [ true, %._crit_edge1158.thread ], [ true, %._crit_edge1158 ]
  %374 = phi ptr [ %93, %367 ], [ %91, %._crit_edge1158.thread ], [ %93, %._crit_edge1158 ]
  %375 = phi ptr [ %92, %367 ], [ %90, %._crit_edge1158.thread ], [ %92, %._crit_edge1158 ]
  %.0885.lcssa1240 = phi ptr [ %.1886.lcssa, %367 ], [ null, %._crit_edge1158.thread ], [ null, %._crit_edge1158 ]
  %storemerge = phi i16 [ %372, %367 ], [ 0, %._crit_edge1158.thread ], [ 0, %._crit_edge1158 ]
  %376 = phi i16 [ %373, %367 ], [ 0, %._crit_edge1158.thread ], [ 0, %._crit_edge1158 ]
  store i16 %storemerge, ptr %375, align 8, !tbaa !18
  %377 = getelementptr inbounds i8, ptr %375, i64 8
  store i16 %376, ptr %377, align 8, !tbaa !20
  %378 = zext i16 %storemerge to i64
  %379 = shl nuw nsw i64 %378, 1
  %380 = tail call ptr @__caryll_allocate_clean(i64 noundef %379, i64 noundef 92)
  %381 = load ptr, ptr %374, align 8, !tbaa !28
  %382 = getelementptr inbounds i8, ptr %381, i64 24
  store ptr %380, ptr %382, align 8, !tbaa !23
  %383 = load i16, ptr %381, align 8, !tbaa !18
  %384 = zext i16 %383 to i64
  %385 = shl nuw nsw i64 %384, 4
  %386 = tail call ptr @__caryll_allocate_clean(i64 noundef %385, i64 noundef 93)
  %387 = load ptr, ptr %374, align 8, !tbaa !28
  %388 = getelementptr inbounds i8, ptr %387, i64 16
  store ptr %386, ptr %388, align 8, !tbaa !22
  %389 = getelementptr inbounds i8, ptr %387, i64 8
  %390 = load i16, ptr %389, align 8, !tbaa !20
  %391 = add i16 %390, 1
  %392 = load ptr, ptr %15, align 8, !tbaa !12
  %393 = getelementptr inbounds i8, ptr %392, i64 8
  %394 = load i16, ptr %393, align 8, !tbaa !20
  %395 = zext i16 %394 to i64
  %396 = shl nuw nsw i64 %395, 3
  %397 = add nuw nsw i64 %396, 8
  %398 = tail call ptr @__caryll_allocate_clean(i64 noundef %397, i64 noundef 96)
  %399 = getelementptr inbounds i8, ptr %15, i64 16
  store ptr %398, ptr %399, align 8, !tbaa !69
  %400 = load ptr, ptr %15, align 8, !tbaa !12
  %401 = getelementptr inbounds i8, ptr %400, i64 8
  %402 = load i16, ptr %401, align 8, !tbaa !20
  %403 = zext i16 %402 to i64
  %404 = shl nuw nsw i64 %403, 3
  %405 = add nuw nsw i64 %404, 8
  %406 = tail call ptr @__caryll_allocate_clean(i64 noundef %405, i64 noundef 97)
  %407 = getelementptr inbounds i8, ptr %15, i64 24
  store ptr %406, ptr %407, align 8, !tbaa !70
  %408 = zext i16 %391 to i64
  %409 = shl nuw nsw i64 %408, 5
  %.not1188 = icmp eq i16 %391, 0
  br label %417

.preheader:                                       ; preds = %._crit_edge1163
  %410 = getelementptr inbounds i8, ptr %20, i64 10
  %411 = zext i8 %46 to i32
  %412 = add nuw nsw i32 %411, 2
  %413 = zext i8 %47 to i32
  %414 = add nuw nsw i32 %412, %413
  %415 = getelementptr inbounds i8, ptr %.0885.lcssa1240, i64 8
  %416 = zext nneg i32 %414 to i64
  br label %438

417:                                              ; preds = %.critedge, %._crit_edge1163
  %.09701164 = phi i16 [ 0, %.critedge ], [ %425, %._crit_edge1163 ]
  %418 = call ptr @__caryll_allocate_clean(i64 noundef %409, i64 noundef 99)
  %419 = load ptr, ptr %399, align 8, !tbaa !69
  %420 = zext i16 %.09701164 to i64
  %421 = getelementptr inbounds ptr, ptr %419, i64 %420
  store ptr %418, ptr %421, align 8, !tbaa !71
  %422 = call ptr @__caryll_allocate_clean(i64 noundef %409, i64 noundef 100)
  %423 = load ptr, ptr %407, align 8, !tbaa !70
  %424 = getelementptr inbounds ptr, ptr %423, i64 %420
  store ptr %422, ptr %424, align 8, !tbaa !71
  br i1 %.not1188, label %._crit_edge1163, label %.lr.ph1162

._crit_edge1163:                                  ; preds = %.lr.ph1162, %417
  %425 = add i16 %.09701164, 1
  %426 = load ptr, ptr %15, align 8, !tbaa !12
  %427 = getelementptr inbounds i8, ptr %426, i64 8
  %428 = load i16, ptr %427, align 8, !tbaa !20
  %.not1022 = icmp ugt i16 %425, %428
  br i1 %.not1022, label %.preheader, label %417, !llvm.loop !72

.lr.ph1162:                                       ; preds = %417, %.lr.ph1162
  %indvars.iv1220 = phi i64 [ %indvars.iv.next1221, %.lr.ph1162 ], [ 0, %417 ]
  %429 = load ptr, ptr %399, align 8, !tbaa !69
  %430 = getelementptr inbounds ptr, ptr %429, i64 %420
  %431 = load ptr, ptr %430, align 8, !tbaa !71
  %432 = getelementptr inbounds %struct.otl_PositionValue, ptr %431, i64 %indvars.iv1220
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #11
  call void (ptr, ...) @position_zero(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %7) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %432, ptr noundef nonnull align 8 dereferenceable(32) %7, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #11
  %433 = load ptr, ptr %407, align 8, !tbaa !70
  %434 = getelementptr inbounds ptr, ptr %433, i64 %420
  %435 = load ptr, ptr %434, align 8, !tbaa !71
  %436 = getelementptr inbounds %struct.otl_PositionValue, ptr %435, i64 %indvars.iv1220
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #11
  call void (ptr, ...) @position_zero(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %8) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %436, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #11
  %indvars.iv.next1221 = add nuw nsw i64 %indvars.iv1220, 1
  %exitcond1224.not = icmp eq i64 %indvars.iv.next1221, %408
  br i1 %exitcond1224.not, label %._crit_edge1163, label %.lr.ph1162, !llvm.loop !76

437:                                              ; preds = %._crit_edge1172
  br i1 %.not10211242, label %.loopexit, label %.lr.ph1180

438:                                              ; preds = %.preheader, %._crit_edge1172
  %.09681173 = phi i16 [ 0, %.preheader ], [ %450, %._crit_edge1172 ]
  %439 = zext i16 %.09681173 to i64
  %440 = shl nuw nsw i64 %439, 1
  %441 = getelementptr inbounds i8, ptr %410, i64 %440
  %442 = call zeroext i16 @read_16u(ptr noundef nonnull %441)
  %443 = zext i16 %442 to i32
  %444 = add i32 %443, %2
  %445 = zext i32 %444 to i64
  %446 = getelementptr inbounds i8, ptr %0, i64 %445
  %447 = call zeroext i16 @read_16u(ptr noundef %446)
  %.not1189 = icmp eq i16 %447, 0
  br i1 %.not1189, label %._crit_edge1172, label %.lr.ph1171

.lr.ph1171:                                       ; preds = %438
  %448 = getelementptr inbounds i8, ptr %446, i64 2
  %449 = add i32 %444, 4
  %wide.trip.count1230 = zext i16 %447 to i64
  br label %454

._crit_edge1172:                                  ; preds = %.thread1063, %438
  %450 = add i16 %.09681173, 1
  %451 = load ptr, ptr %15, align 8, !tbaa !12
  %452 = getelementptr inbounds i8, ptr %451, i64 8
  %453 = load i16, ptr %452, align 8, !tbaa !20
  %.not1023 = icmp ugt i16 %450, %453
  br i1 %.not1023, label %437, label %438, !llvm.loop !77

454:                                              ; preds = %.lr.ph1171, %.thread1063
  %indvars.iv1227 = phi i64 [ 0, %.lr.ph1171 ], [ %indvars.iv.next1228, %.thread1063 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11
  %455 = mul nuw nsw i64 %indvars.iv1227, %416
  %456 = getelementptr inbounds i8, ptr %448, i64 %455
  %457 = call zeroext i16 @read_16u(ptr noundef nonnull %456)
  %458 = zext i16 %457 to i32
  store i32 %458, ptr %9, align 4, !tbaa !30
  %459 = and i16 %457, -256
  %460 = zext i16 %459 to i32
  %461 = and i16 %457, 255
  %462 = zext nneg i16 %461 to i32
  %463 = add nuw nsw i32 %460, 17973517
  %464 = add nuw nsw i32 %463, %462
  %465 = xor i32 %464, 522093
  %466 = sub nuw nsw i32 -1622558010, %465
  %467 = shl i32 %465, 8
  %468 = xor i32 %466, %467
  %469 = add nuw nsw i32 %465, %468
  %470 = sub nuw nsw i32 -17973517, %469
  %471 = lshr i32 %468, 13
  %472 = xor i32 %470, %471
  %473 = add nuw nsw i32 %468, %472
  %474 = sub nsw i32 %465, %473
  %475 = lshr i32 %472, 12
  %476 = xor i32 %474, %475
  %477 = add nuw nsw i32 %472, %476
  %478 = sub nuw i32 %468, %477
  %479 = shl i32 %476, 16
  %480 = xor i32 %478, %479
  %481 = add i32 %476, %480
  %482 = sub i32 %472, %481
  %483 = lshr i32 %480, 5
  %484 = xor i32 %482, %483
  %485 = add i32 %480, %484
  %486 = sub i32 %476, %485
  %487 = lshr i32 %484, 3
  %488 = xor i32 %486, %487
  %489 = add i32 %484, %488
  %490 = sub i32 %480, %489
  %491 = shl i32 %488, 10
  %492 = xor i32 %490, %491
  %493 = add i32 %488, %492
  %494 = sub i32 %484, %493
  %495 = lshr i32 %492, 15
  %496 = xor i32 %494, %495
  br i1 %.not10211242, label %.thread1063, label %497

497:                                              ; preds = %454
  %498 = load ptr, ptr %415, align 8, !tbaa !34
  %499 = getelementptr inbounds i8, ptr %498, i64 8
  %500 = load i32, ptr %499, align 8, !tbaa !35
  %501 = add i32 %500, -1
  %502 = and i32 %501, %496
  %503 = load ptr, ptr %498, align 8, !tbaa !38
  %504 = zext i32 %502 to i64
  %505 = getelementptr inbounds %struct.UT_hash_bucket, ptr %503, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !39
  %.not1030 = icmp eq ptr %506, null
  br i1 %.not1030, label %.thread1063, label %.lr.ph1168

.lr.ph1168:                                       ; preds = %497
  %507 = getelementptr inbounds i8, ptr %498, i64 32
  %508 = load i64, ptr %507, align 8, !tbaa !41
  %509 = sub i64 0, %508
  %510 = getelementptr inbounds i8, ptr %506, i64 %509
  %511 = getelementptr inbounds i8, ptr %498, i64 32
  br label %512

512:                                              ; preds = %527, %.lr.ph1168
  %.19511166 = phi ptr [ %510, %.lr.ph1168 ], [ %530, %527 ]
  %513 = getelementptr inbounds i8, ptr %.19511166, i64 60
  %514 = load i32, ptr %513, align 4, !tbaa !42
  %515 = icmp eq i32 %514, %496
  br i1 %515, label %516, label %524

516:                                              ; preds = %512
  %517 = getelementptr inbounds i8, ptr %.19511166, i64 56
  %518 = load i32, ptr %517, align 8, !tbaa !43
  %519 = icmp eq i32 %518, 4
  br i1 %519, label %520, label %524

520:                                              ; preds = %516
  %521 = getelementptr inbounds i8, ptr %.19511166, i64 48
  %522 = load ptr, ptr %521, align 8, !tbaa !44
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %522, ptr noundef nonnull dereferenceable(4) %9, i64 4)
  %523 = icmp eq i32 %bcmp, 0
  br i1 %523, label %531, label %524

524:                                              ; preds = %520, %516, %512
  %525 = getelementptr inbounds i8, ptr %.19511166, i64 40
  %526 = load ptr, ptr %525, align 8, !tbaa !45
  %.not1032 = icmp eq ptr %526, null
  br i1 %.not1032, label %.thread1063, label %527

527:                                              ; preds = %524
  %528 = load i64, ptr %511, align 8, !tbaa !41
  %529 = sub i64 0, %528
  %530 = getelementptr inbounds i8, ptr %526, i64 %529
  br label %512, !llvm.loop !78

531:                                              ; preds = %520
  %532 = load ptr, ptr %399, align 8, !tbaa !69
  %533 = getelementptr inbounds ptr, ptr %532, i64 %439
  %534 = load ptr, ptr %533, align 8, !tbaa !71
  %535 = getelementptr inbounds i8, ptr %.19511166, i64 4
  %536 = load i32, ptr %535, align 4, !tbaa !48
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds %struct.otl_PositionValue, ptr %534, i64 %537
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #11
  %539 = trunc nuw nsw i64 %455 to i32
  %540 = add i32 %449, %539
  call void @read_gpos_value(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %10, ptr noundef %0, i32 noundef %1, i32 noundef %540, i16 noundef zeroext %43) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %538, ptr noundef nonnull align 8 dereferenceable(32) %10, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #11
  %541 = load ptr, ptr %407, align 8, !tbaa !70
  %542 = getelementptr inbounds ptr, ptr %541, i64 %439
  %543 = load ptr, ptr %542, align 8, !tbaa !71
  %544 = load i32, ptr %535, align 4, !tbaa !48
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds %struct.otl_PositionValue, ptr %543, i64 %545
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #11
  %547 = add i32 %540, %411
  call void @read_gpos_value(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %11, ptr noundef %0, i32 noundef %1, i32 noundef %547, i16 noundef zeroext %45) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %546, ptr noundef nonnull align 8 dereferenceable(32) %11, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #11
  br label %.thread1063

.thread1063:                                      ; preds = %524, %497, %454, %531
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  %indvars.iv.next1228 = add nuw nsw i64 %indvars.iv1227, 1
  %exitcond1231.not = icmp eq i64 %indvars.iv.next1228, %wide.trip.count1230
  br i1 %exitcond1231.not, label %._crit_edge1172, label %454, !llvm.loop !79

.lr.ph1180:                                       ; preds = %437
  %548 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 64), align 8, !tbaa !80
  br label %549

549:                                              ; preds = %633, %.lr.ph1180
  %.48891178 = phi ptr [ %.0885.lcssa1240, %.lr.ph1180 ], [ %.6, %633 ]
  %.09181177 = phi i16 [ 0, %.lr.ph1180 ], [ %567, %633 ]
  %.09201175 = phi ptr [ %.0885.lcssa1240, %.lr.ph1180 ], [ %.09191176, %633 ]
  %.09191176.in = getelementptr inbounds i8, ptr %.09201175, i64 24
  %.09191176 = load ptr, ptr %.09191176.in, align 8, !tbaa !53
  %550 = load ptr, ptr %374, align 8, !tbaa !28
  %551 = getelementptr inbounds i8, ptr %550, i64 16
  %552 = load ptr, ptr %551, align 8, !tbaa !22
  %553 = zext i16 %.09181177 to i64
  %554 = getelementptr inbounds %struct.otfcc_Handle, ptr %552, i64 %553
  %555 = load i32, ptr %.09201175, align 8, !tbaa !31
  %556 = trunc i32 %555 to i16
  %557 = call { i64, ptr } %548(i16 noundef zeroext %556) #11
  %558 = extractvalue { i64, ptr } %557, 0
  %559 = extractvalue { i64, ptr } %557, 1
  store i64 %558, ptr %554, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %554, i64 8
  store ptr %559, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !71
  %560 = getelementptr inbounds i8, ptr %.09201175, i64 4
  %561 = load i32, ptr %560, align 4, !tbaa !48
  %562 = trunc i32 %561 to i16
  %563 = load ptr, ptr %374, align 8, !tbaa !28
  %564 = getelementptr inbounds i8, ptr %563, i64 24
  %565 = load ptr, ptr %564, align 8, !tbaa !23
  %566 = getelementptr inbounds i16, ptr %565, i64 %553
  store i16 %562, ptr %566, align 2, !tbaa !24
  %567 = add i16 %.09181177, 1
  %568 = getelementptr inbounds i8, ptr %.09201175, i64 8
  %569 = getelementptr inbounds i8, ptr %.09201175, i64 16
  %570 = load ptr, ptr %569, align 8, !tbaa !82
  %571 = icmp eq ptr %570, null
  br i1 %571, label %572, label %581

572:                                              ; preds = %549
  %573 = getelementptr inbounds i8, ptr %.09201175, i64 24
  %574 = load ptr, ptr %573, align 8, !tbaa !55
  %575 = icmp eq ptr %574, null
  br i1 %575, label %576, label %581

576:                                              ; preds = %572
  %577 = getelementptr inbounds i8, ptr %.48891178, i64 8
  %578 = load ptr, ptr %577, align 8, !tbaa !34
  %579 = load ptr, ptr %578, align 8, !tbaa !38
  call void @free(ptr noundef %579) #11
  %580 = load ptr, ptr %577, align 8, !tbaa !34
  call void @free(ptr noundef %580) #11
  br label %633

581:                                              ; preds = %572, %549
  %582 = getelementptr inbounds i8, ptr %.48891178, i64 8
  %583 = load ptr, ptr %582, align 8, !tbaa !34
  %584 = getelementptr inbounds i8, ptr %583, i64 24
  %585 = load ptr, ptr %584, align 8, !tbaa !50
  %586 = icmp eq ptr %568, %585
  br i1 %586, label %587, label %591

587:                                              ; preds = %581
  %588 = getelementptr inbounds i8, ptr %583, i64 32
  %589 = load i64, ptr %588, align 8, !tbaa !41
  %590 = getelementptr inbounds i8, ptr %570, i64 %589
  store ptr %590, ptr %584, align 8, !tbaa !50
  br label %591

591:                                              ; preds = %587, %581
  %592 = getelementptr inbounds i8, ptr %.09201175, i64 24
  %593 = load ptr, ptr %592, align 8, !tbaa !55
  br i1 %571, label %599, label %594

594:                                              ; preds = %591
  %595 = getelementptr inbounds i8, ptr %583, i64 32
  %596 = load i64, ptr %595, align 8, !tbaa !41
  %597 = getelementptr inbounds i8, ptr %570, i64 %596
  %598 = getelementptr inbounds i8, ptr %597, i64 16
  store ptr %593, ptr %598, align 8, !tbaa !55
  br label %599

599:                                              ; preds = %591, %594
  %.5890 = phi ptr [ %.48891178, %594 ], [ %593, %591 ]
  %.not1026 = icmp eq ptr %593, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.5890, i64 8
  %.pre1234 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !34
  br i1 %.not1026, label %._crit_edge1233, label %600

600:                                              ; preds = %599
  %601 = getelementptr inbounds i8, ptr %.pre1234, i64 32
  %602 = load i64, ptr %601, align 8, !tbaa !41
  %603 = getelementptr inbounds i8, ptr %593, i64 %602
  %604 = getelementptr inbounds i8, ptr %603, i64 8
  store ptr %570, ptr %604, align 8, !tbaa !82
  br label %._crit_edge1233

._crit_edge1233:                                  ; preds = %599, %600
  %605 = getelementptr inbounds i8, ptr %.09201175, i64 60
  %606 = load i32, ptr %605, align 4, !tbaa !64
  %607 = getelementptr inbounds i8, ptr %.pre1234, i64 8
  %608 = load i32, ptr %607, align 8, !tbaa !35
  %609 = add i32 %608, -1
  %610 = and i32 %609, %606
  %611 = load ptr, ptr %.pre1234, align 8, !tbaa !38
  %612 = zext i32 %610 to i64
  %613 = getelementptr inbounds %struct.UT_hash_bucket, ptr %611, i64 %612
  %614 = getelementptr inbounds i8, ptr %613, i64 8
  %615 = load i32, ptr %614, align 8, !tbaa !56
  %616 = add i32 %615, -1
  store i32 %616, ptr %614, align 8, !tbaa !56
  %617 = load ptr, ptr %613, align 8, !tbaa !39
  %618 = icmp eq ptr %617, %568
  br i1 %618, label %619, label %622

619:                                              ; preds = %._crit_edge1233
  %620 = getelementptr inbounds i8, ptr %.09201175, i64 40
  %621 = load ptr, ptr %620, align 8, !tbaa !63
  store ptr %621, ptr %613, align 8, !tbaa !39
  br label %622

622:                                              ; preds = %619, %._crit_edge1233
  %623 = getelementptr inbounds i8, ptr %.09201175, i64 32
  %624 = load ptr, ptr %623, align 8, !tbaa !58
  %.not1027 = icmp eq ptr %624, null
  %.phi.trans.insert1236 = getelementptr inbounds i8, ptr %.09201175, i64 40
  %.pre1237 = load ptr, ptr %.phi.trans.insert1236, align 8, !tbaa !63
  br i1 %.not1027, label %._crit_edge1235, label %625

625:                                              ; preds = %622
  %626 = getelementptr inbounds i8, ptr %624, i64 32
  store ptr %.pre1237, ptr %626, align 8, !tbaa !63
  br label %._crit_edge1235

._crit_edge1235:                                  ; preds = %622, %625
  %.not1028 = icmp eq ptr %.pre1237, null
  br i1 %.not1028, label %629, label %627

627:                                              ; preds = %._crit_edge1235
  %628 = getelementptr inbounds i8, ptr %.pre1237, i64 24
  store ptr %624, ptr %628, align 8, !tbaa !58
  br label %629

629:                                              ; preds = %627, %._crit_edge1235
  %630 = getelementptr inbounds i8, ptr %.pre1234, i64 16
  %631 = load i32, ptr %630, align 8, !tbaa !47
  %632 = add i32 %631, -1
  store i32 %632, ptr %630, align 8, !tbaa !47
  br label %633

633:                                              ; preds = %629, %576
  %.6 = phi ptr [ null, %576 ], [ %.5890, %629 ]
  call void @free(ptr noundef nonnull %.09201175) #11
  %.not1029 = icmp eq ptr %.09191176, null
  br i1 %.not1029, label %.loopexit, label %549, !llvm.loop !83

634:                                              ; preds = %18
  %635 = add i32 %2, 16
  %636 = icmp ugt i32 %635, %1
  br i1 %636, label %.critedge1050, label %637

637:                                              ; preds = %634
  %638 = getelementptr inbounds i8, ptr %20, i64 4
  %639 = tail call zeroext i16 @read_16u(ptr noundef nonnull %638)
  %640 = getelementptr inbounds i8, ptr %20, i64 6
  %641 = tail call zeroext i16 @read_16u(ptr noundef nonnull %640)
  %642 = tail call zeroext i8 @position_format_length(i16 noundef zeroext %639) #11
  %643 = tail call zeroext i8 @position_format_length(i16 noundef zeroext %641) #11
  %644 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 72), align 8, !tbaa !10
  %645 = getelementptr inbounds i8, ptr %20, i64 2
  %646 = tail call zeroext i16 @read_16u(ptr noundef nonnull %645)
  %647 = zext i16 %646 to i32
  %648 = add i32 %647, %2
  %649 = tail call ptr %644(ptr noundef %0, i32 noundef %1, i32 noundef %648) #11
  %650 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 72), align 8, !tbaa !84
  %651 = getelementptr inbounds i8, ptr %20, i64 8
  %652 = tail call zeroext i16 @read_16u(ptr noundef nonnull %651)
  %653 = zext i16 %652 to i32
  %654 = add i32 %653, %2
  %655 = tail call ptr %650(ptr noundef %0, i32 noundef %1, i32 noundef %654) #11
  store ptr %655, ptr %15, align 8, !tbaa !12
  %656 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 80), align 8, !tbaa !86
  %657 = tail call ptr %656(ptr noundef %649, ptr noundef %655) #11
  store ptr %657, ptr %15, align 8, !tbaa !12
  %658 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCoverage, i64 56), align 8, !tbaa !87
  tail call void %658(ptr noundef %649) #11
  %659 = getelementptr inbounds i8, ptr %20, i64 10
  %660 = tail call zeroext i16 @read_16u(ptr noundef nonnull %659)
  %661 = zext i16 %660 to i32
  %662 = add i32 %661, %2
  %663 = tail call ptr %650(ptr noundef %0, i32 noundef %1, i32 noundef %662) #11
  %664 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %663, ptr %664, align 8, !tbaa !28
  %665 = load ptr, ptr %15, align 8, !tbaa !12
  %.not = icmp eq ptr %665, null
  %.not1017 = icmp eq ptr %663, null
  %or.cond = select i1 %.not, i1 true, i1 %.not1017
  br i1 %or.cond, label %.critedge1050, label %666

666:                                              ; preds = %637
  %667 = getelementptr inbounds i8, ptr %20, i64 12
  %668 = tail call zeroext i16 @read_16u(ptr noundef nonnull %667)
  %669 = getelementptr inbounds i8, ptr %20, i64 14
  %670 = tail call zeroext i16 @read_16u(ptr noundef nonnull %669)
  %671 = load ptr, ptr %15, align 8, !tbaa !12
  %672 = getelementptr inbounds i8, ptr %671, i64 8
  %673 = load i16, ptr %672, align 8, !tbaa !20
  %674 = zext i16 %673 to i32
  %675 = add nuw nsw i32 %674, 1
  %676 = zext i16 %668 to i32
  %.not1018 = icmp eq i32 %675, %676
  br i1 %.not1018, label %677, label %.critedge1050

677:                                              ; preds = %666
  %678 = load ptr, ptr %664, align 8, !tbaa !28
  %679 = getelementptr inbounds i8, ptr %678, i64 8
  %680 = load i16, ptr %679, align 8, !tbaa !20
  %681 = zext i16 %680 to i32
  %682 = add nuw nsw i32 %681, 1
  %683 = zext i16 %670 to i32
  %.not1019 = icmp eq i32 %682, %683
  br i1 %.not1019, label %684, label %.critedge1050

684:                                              ; preds = %677
  %685 = zext i8 %642 to i32
  %686 = zext i8 %643 to i32
  %687 = add nuw nsw i32 %686, %685
  %688 = mul nuw nsw i32 %687, %675
  %689 = mul i32 %688, %682
  %690 = add i32 %689, %635
  %691 = icmp ugt i32 %690, %1
  br i1 %691, label %.critedge1050, label %692

692:                                              ; preds = %684
  %693 = zext i16 %668 to i64
  %694 = shl nuw nsw i64 %693, 3
  %695 = tail call ptr @__caryll_allocate_clean(i64 noundef %694, i64 noundef 153)
  %696 = getelementptr inbounds i8, ptr %15, i64 16
  store ptr %695, ptr %696, align 8, !tbaa !69
  %697 = tail call ptr @__caryll_allocate_clean(i64 noundef %694, i64 noundef 154)
  %698 = getelementptr inbounds i8, ptr %15, i64 24
  store ptr %697, ptr %698, align 8, !tbaa !70
  %.not1181 = icmp eq i16 %668, 0
  br i1 %.not1181, label %.loopexit, label %.lr.ph1128

.lr.ph1128:                                       ; preds = %692
  %699 = zext i16 %670 to i64
  %700 = shl nuw nsw i64 %699, 5
  %.not1182 = icmp eq i16 %670, 0
  br label %701

701:                                              ; preds = %.lr.ph1128, %._crit_edge
  %indvars.iv1193 = phi i64 [ 0, %.lr.ph1128 ], [ %indvars.iv.next1194, %._crit_edge ]
  %702 = phi i32 [ 0, %.lr.ph1128 ], [ %710, %._crit_edge ]
  %703 = call ptr @__caryll_allocate_clean(i64 noundef %700, i64 noundef 157)
  %704 = load ptr, ptr %696, align 8, !tbaa !69
  %705 = getelementptr inbounds ptr, ptr %704, i64 %indvars.iv1193
  store ptr %703, ptr %705, align 8, !tbaa !71
  %706 = call ptr @__caryll_allocate_clean(i64 noundef %700, i64 noundef 158)
  %707 = load ptr, ptr %698, align 8, !tbaa !70
  %708 = getelementptr inbounds ptr, ptr %707, i64 %indvars.iv1193
  store ptr %706, ptr %708, align 8, !tbaa !71
  br i1 %.not1182, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %701
  %709 = mul nuw nsw i32 %702, %682
  br label %711

._crit_edge:                                      ; preds = %711, %701
  %indvars.iv.next1194 = add nuw nsw i64 %indvars.iv1193, 1
  %710 = trunc nuw i64 %indvars.iv.next1194 to i32
  %exitcond1196.not = icmp eq i64 %indvars.iv.next1194, %693
  br i1 %exitcond1196.not, label %.loopexit, label %701, !llvm.loop !88

711:                                              ; preds = %.lr.ph, %711
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %711 ]
  %712 = trunc nuw i64 %indvars.iv to i32
  %713 = load ptr, ptr %696, align 8, !tbaa !69
  %714 = getelementptr inbounds ptr, ptr %713, i64 %indvars.iv1193
  %715 = load ptr, ptr %714, align 8, !tbaa !71
  %716 = getelementptr inbounds %struct.otl_PositionValue, ptr %715, i64 %indvars.iv
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #11
  %717 = add nuw nsw i32 %709, %712
  %718 = mul nuw nsw i32 %717, %687
  %719 = add i32 %718, %635
  call void @read_gpos_value(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %12, ptr noundef %0, i32 noundef %1, i32 noundef %719, i16 noundef zeroext %639) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %716, ptr noundef nonnull align 8 dereferenceable(32) %12, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #11
  %720 = load ptr, ptr %698, align 8, !tbaa !70
  %721 = getelementptr inbounds ptr, ptr %720, i64 %indvars.iv1193
  %722 = load ptr, ptr %721, align 8, !tbaa !71
  %723 = getelementptr inbounds %struct.otl_PositionValue, ptr %722, i64 %indvars.iv
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #11
  %724 = add i32 %719, %685
  call void @read_gpos_value(ptr dead_on_unwind nonnull writable sret(%struct.otl_PositionValue) align 8 %13, ptr noundef %0, i32 noundef %1, i32 noundef %724, i16 noundef zeroext %641) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %723, ptr noundef nonnull align 8 dereferenceable(32) %13, i64 32, i1 false), !tbaa.struct !73
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %699
  br i1 %exitcond.not, label %._crit_edge, label %711, !llvm.loop !89

.critedge1050:                                    ; preds = %74, %82, %57, %._crit_edge1132, %637, %666, %677, %684, %18, %634, %5
  %725 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gpos_pair, i64 56), align 8, !tbaa !90
  tail call void %725(ptr noundef %15) #11
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge, %633, %437, %692, %.critedge1050
  %.3 = phi ptr [ null, %.critedge1050 ], [ %15, %692 ], [ %15, %437 ], [ %15, %633 ], [ %15, %._crit_edge ]
  ret ptr %.3
}

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden zeroext i16 @read_16u(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @__caryll_allocate_clean(i64 noundef, i64 noundef) 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: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

declare zeroext i8 @position_format_length(i16 noundef zeroext) local_unnamed_addr #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

declare void @position_zero(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8, ...) local_unnamed_addr #4

; 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) #8

declare void @read_gpos_value(ptr dead_on_unwind writable sret(%struct.otl_PositionValue) align 8, ptr noundef, i32 noundef, i32 noundef, i16 noundef zeroext) local_unnamed_addr #4

; 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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress 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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 48}
!6 = !{!"__caryll_elementinterface_subtable_gpos_pair", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!11, !7, i64 72}
!11 = !{!"__otfcc_ICoverage", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!12 = !{!13, !7, i64 0}
!13 = !{!"", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!14 = !{!15, !16, i64 0}
!15 = !{!"", !16, i64 0, !17, i64 4, !7, i64 8}
!16 = !{!"short", !8, i64 0}
!17 = !{!"int", !8, i64 0}
!18 = !{!19, !16, i64 0}
!19 = !{!"", !16, i64 0, !17, i64 4, !16, i64 8, !7, i64 16, !7, i64 24}
!20 = !{!19, !16, i64 8}
!21 = !{!15, !7, i64 8}
!22 = !{!19, !7, i64 16}
!23 = !{!19, !7, i64 24}
!24 = !{!16, !16, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!13, !7, i64 8}
!29 = distinct !{!29, !26}
!30 = !{!17, !17, i64 0}
!31 = !{!32, !17, i64 0}
!32 = !{!"", !17, i64 0, !17, i64 4, !33, i64 8}
!33 = !{!"UT_hash_handle", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !17, i64 48, !17, i64 52}
!34 = !{!32, !7, i64 8}
!35 = !{!36, !17, i64 8}
!36 = !{!"UT_hash_table", !7, i64 0, !17, i64 8, !17, i64 12, !17, i64 16, !7, i64 24, !37, i64 32, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56}
!37 = !{!"long", !8, i64 0}
!38 = !{!36, !7, i64 0}
!39 = !{!40, !7, i64 0}
!40 = !{!"UT_hash_bucket", !7, i64 0, !17, i64 8, !17, i64 12}
!41 = !{!36, !37, i64 32}
!42 = !{!32, !17, i64 60}
!43 = !{!32, !17, i64 56}
!44 = !{!32, !7, i64 48}
!45 = !{!32, !7, i64 40}
!46 = distinct !{!46, !26}
!47 = !{!36, !17, i64 16}
!48 = !{!32, !17, i64 4}
!49 = !{!8, !8, i64 0}
!50 = !{!36, !7, i64 24}
!51 = !{!36, !17, i64 12}
!52 = !{!36, !17, i64 56}
!53 = !{!32, !7, i64 24}
!54 = !{!32, !7, i64 16}
!55 = !{!33, !7, i64 16}
!56 = !{!40, !17, i64 8}
!57 = !{!32, !7, i64 32}
!58 = !{!33, !7, i64 24}
!59 = !{!40, !17, i64 12}
!60 = !{!36, !17, i64 52}
!61 = !{!36, !17, i64 40}
!62 = !{!36, !17, i64 44}
!63 = !{!33, !7, i64 32}
!64 = !{!33, !17, i64 52}
!65 = distinct !{!65, !26}
!66 = distinct !{!66, !26}
!67 = !{!36, !17, i64 48}
!68 = distinct !{!68, !26}
!69 = !{!13, !7, i64 16}
!70 = !{!13, !7, i64 24}
!71 = !{!7, !7, i64 0}
!72 = distinct !{!72, !26}
!73 = !{i64 0, i64 8, !74, i64 8, i64 8, !74, i64 16, i64 8, !74, i64 24, i64 8, !74}
!74 = !{!75, !75, i64 0}
!75 = !{!"double", !8, i64 0}
!76 = distinct !{!76, !26}
!77 = distinct !{!77, !26}
!78 = distinct !{!78, !26}
!79 = distinct !{!79, !26}
!80 = !{!81, !7, i64 64}
!81 = !{!"otfcc_HandlePackage", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88}
!82 = !{!33, !7, i64 8}
!83 = distinct !{!83, !26}
!84 = !{!85, !7, i64 72}
!85 = !{!"__otfcc_IClassDef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112}
!86 = !{!85, !7, i64 80}
!87 = !{!11, !7, i64 56}
!88 = distinct !{!88, !26}
!89 = distinct !{!89, !26}
!90 = !{!6, !7, i64 56}


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