; LLVM IR from caryll/otfcc :: lib/consolidate/otl (GDEF)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.__otfcc_IClassDef = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_CaretValueList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LigCaretTable = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_CaretValueRecord = type { %struct.otfcc_Handle, %struct.otl_CaretValueList }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.otl_CaretValueList = type { i64, i64, ptr }
%struct._caryll_font = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.table_GDEF = type { ptr, ptr, %struct.otl_LigCaretTable }
%struct.otl_LigCaretTable = type { i64, i64, ptr }
%struct.otl_ClassDef = type { i16, i32, i16, ptr, ptr }
%struct.GDEF_ligcaret_hash = type { i32, ptr, %struct.otl_CaretValueList, %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 }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@otl_iClassDef = external constant %struct.__otfcc_IClassDef, align 8
@otfcc_pkgGlyphOrder = external constant %struct.otfcc_GlyphOrderPackage, align 8
@otl_iCaretValueList = external constant %struct.__caryll_vectorinterface_otl_CaretValueList, align 8
@.str = external hidden unnamed_addr constant [65 x i8], align 1
@otl_iLigCaretTable = external constant %struct.__caryll_vectorinterface_otl_LigCaretTable, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local void @consolidate_GDEF(ptr noundef %0, ptr noundef %1, ptr noundef %2) #0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i16, align 2
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %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 i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca %struct.otl_CaretValueRecord, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %49 = load ptr, ptr %4, align 8, !tbaa !5
  %50 = icmp ne ptr %49, null
  br i1 %50, label %51, label %59

51:                                               ; preds = %3
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct._caryll_font, ptr %52, i32 0, i32 33
  %54 = load ptr, ptr %53, align 8, !tbaa !9
  %55 = icmp ne ptr %54, null
  br i1 %55, label %56, label %59

56:                                               ; preds = %51
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = icmp ne ptr %57, null
  br i1 %58, label %60, label %59

59:                                               ; preds = %56, %51, %3
  br label %2043

60:                                               ; preds = %56
  %61 = load ptr, ptr %5, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.table_GDEF, ptr %61, i32 0, i32 0
  %63 = load ptr, ptr %62, align 8, !tbaa !12
  %64 = icmp ne ptr %63, null
  br i1 %64, label %65, label %89

65:                                               ; preds = %60
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.table_GDEF, ptr %67, i32 0, i32 0
  %69 = load ptr, ptr %68, align 8, !tbaa !12
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  call void @fontop_consolidateClassDef(ptr noundef %66, ptr noundef %69, ptr noundef %70)
  %71 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 14), align 8, !tbaa !16
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.table_GDEF, ptr %72, i32 0, i32 0
  %74 = load ptr, ptr %73, align 8, !tbaa !12
  call void %71(ptr noundef %74)
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.table_GDEF, ptr %75, i32 0, i32 0
  %77 = load ptr, ptr %76, align 8, !tbaa !12
  %78 = getelementptr inbounds %struct.otl_ClassDef, ptr %77, i32 0, i32 0
  %79 = load i16, ptr %78, align 8, !tbaa !18
  %80 = icmp ne i16 %79, 0
  br i1 %80, label %88, label %81

81:                                               ; preds = %65
  %82 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 7), align 8, !tbaa !21
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.table_GDEF, ptr %83, i32 0, i32 0
  %85 = load ptr, ptr %84, align 8, !tbaa !12
  call void %82(ptr noundef %85)
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.table_GDEF, ptr %86, i32 0, i32 0
  store ptr null, ptr %87, align 8, !tbaa !12
  br label %88

88:                                               ; preds = %81, %65
  br label %89

89:                                               ; preds = %88, %60
  %90 = load ptr, ptr %5, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.table_GDEF, ptr %90, i32 0, i32 1
  %92 = load ptr, ptr %91, align 8, !tbaa !22
  %93 = icmp ne ptr %92, null
  br i1 %93, label %94, label %118

94:                                               ; preds = %89
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = load ptr, ptr %5, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.table_GDEF, ptr %96, i32 0, i32 1
  %98 = load ptr, ptr %97, align 8, !tbaa !22
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  call void @fontop_consolidateClassDef(ptr noundef %95, ptr noundef %98, ptr noundef %99)
  %100 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 14), align 8, !tbaa !16
  %101 = load ptr, ptr %5, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.table_GDEF, ptr %101, i32 0, i32 1
  %103 = load ptr, ptr %102, align 8, !tbaa !22
  call void %100(ptr noundef %103)
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.table_GDEF, ptr %104, i32 0, i32 1
  %106 = load ptr, ptr %105, align 8, !tbaa !22
  %107 = getelementptr inbounds %struct.otl_ClassDef, ptr %106, i32 0, i32 0
  %108 = load i16, ptr %107, align 8, !tbaa !18
  %109 = icmp ne i16 %108, 0
  br i1 %109, label %117, label %110

110:                                              ; preds = %94
  %111 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_IClassDef, ptr @otl_iClassDef, i32 0, i32 7), align 8, !tbaa !21
  %112 = load ptr, ptr %5, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.table_GDEF, ptr %112, i32 0, i32 1
  %114 = load ptr, ptr %113, align 8, !tbaa !22
  call void %111(ptr noundef %114)
  %115 = load ptr, ptr %5, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.table_GDEF, ptr %115, i32 0, i32 1
  store ptr null, ptr %116, align 8, !tbaa !22
  br label %117

117:                                              ; preds = %110, %94
  br label %118

118:                                              ; preds = %117, %89
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.table_GDEF, ptr %119, i32 0, i32 2
  %121 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %120, i32 0, i32 0
  %122 = load i64, ptr %121, align 8, !tbaa !23
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %124, label %2043

124:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  store ptr null, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %8) #9
  store i16 0, ptr %8, align 2, !tbaa !24
  br label %125

125:                                              ; preds = %1532, %124
  %126 = load i16, ptr %8, align 2, !tbaa !24
  %127 = zext i16 %126 to i64
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.table_GDEF, ptr %128, i32 0, i32 2
  %130 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %129, i32 0, i32 0
  %131 = load i64, ptr %130, align 8, !tbaa !23
  %132 = icmp ult i64 %127, %131
  br i1 %132, label %134, label %133

133:                                              ; preds = %125
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %8) #9
  br label %1535

134:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %135 = load ptr, ptr getelementptr inbounds (%struct.otfcc_GlyphOrderPackage, ptr @otfcc_pkgGlyphOrder, i32 0, i32 11), align 8, !tbaa !25
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct._caryll_font, ptr %136, i32 0, i32 33
  %138 = load ptr, ptr %137, align 8, !tbaa !9
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.table_GDEF, ptr %139, i32 0, i32 2
  %141 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %140, i32 0, i32 2
  %142 = load ptr, ptr %141, align 8, !tbaa !27
  %143 = load i16, ptr %8, align 2, !tbaa !24
  %144 = zext i16 %143 to i64
  %145 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %142, i64 %144
  %146 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %145, i32 0, i32 0
  %147 = call zeroext i1 %135(ptr noundef %138, ptr noundef %146)
  br i1 %147, label %149, label %148

148:                                              ; preds = %134
  store i32 4, ptr %9, align 4
  br label %1529

149:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.table_GDEF, ptr %150, i32 0, i32 2
  %152 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %151, i32 0, i32 2
  %153 = load ptr, ptr %152, align 8, !tbaa !27
  %154 = load i16, ptr %8, align 2, !tbaa !24
  %155 = zext i16 %154 to i64
  %156 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %153, i64 %155
  %157 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %156, i32 0, i32 0
  %158 = getelementptr inbounds %struct.otfcc_Handle, ptr %157, i32 0, i32 1
  %159 = load i16, ptr %158, align 4, !tbaa !28
  %160 = zext i16 %159 to i32
  store i32 %160, ptr %11, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.table_GDEF, ptr %161, i32 0, i32 2
  %163 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %162, i32 0, i32 2
  %164 = load ptr, ptr %163, align 8, !tbaa !27
  %165 = load i16, ptr %8, align 2, !tbaa !24
  %166 = zext i16 %165 to i64
  %167 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %164, i64 %166
  %168 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %167, i32 0, i32 0
  %169 = getelementptr inbounds %struct.otfcc_Handle, ptr %168, i32 0, i32 2
  %170 = load ptr, ptr %169, align 8, !tbaa !32
  %171 = call ptr @sdsdup(ptr noundef %170)
  store ptr %171, ptr %12, align 8, !tbaa !5
  %172 = load ptr, ptr %12, align 8, !tbaa !5
  %173 = icmp ne ptr %172, null
  br i1 %173, label %174, label %1528

174:                                              ; preds = %149
  br label %175

175:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  br label %176

176:                                              ; preds = %175
  br label %177

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

178:                                              ; preds = %346, %177
  %179 = load i32, ptr %16, align 4, !tbaa !31
  %180 = icmp uge i32 %179, 12
  br i1 %180, label %181, label %351

181:                                              ; preds = %178
  %182 = load ptr, ptr %17, align 8, !tbaa !5
  %183 = getelementptr inbounds i8, ptr %182, i64 0
  %184 = load i8, ptr %183, align 1, !tbaa !33
  %185 = zext i8 %184 to i32
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = getelementptr inbounds i8, ptr %186, i64 1
  %188 = load i8, ptr %187, align 1, !tbaa !33
  %189 = zext i8 %188 to i32
  %190 = shl i32 %189, 8
  %191 = add i32 %185, %190
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = getelementptr inbounds i8, ptr %192, i64 2
  %194 = load i8, ptr %193, align 1, !tbaa !33
  %195 = zext i8 %194 to i32
  %196 = shl i32 %195, 16
  %197 = add i32 %191, %196
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %198, i64 3
  %200 = load i8, ptr %199, align 1, !tbaa !33
  %201 = zext i8 %200 to i32
  %202 = shl i32 %201, 24
  %203 = add i32 %197, %202
  %204 = load i32, ptr %14, align 4, !tbaa !31
  %205 = add i32 %204, %203
  store i32 %205, ptr %14, align 4, !tbaa !31
  %206 = load ptr, ptr %17, align 8, !tbaa !5
  %207 = getelementptr inbounds i8, ptr %206, i64 4
  %208 = load i8, ptr %207, align 1, !tbaa !33
  %209 = zext i8 %208 to i32
  %210 = load ptr, ptr %17, align 8, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %210, i64 5
  %212 = load i8, ptr %211, align 1, !tbaa !33
  %213 = zext i8 %212 to i32
  %214 = shl i32 %213, 8
  %215 = add i32 %209, %214
  %216 = load ptr, ptr %17, align 8, !tbaa !5
  %217 = getelementptr inbounds i8, ptr %216, i64 6
  %218 = load i8, ptr %217, align 1, !tbaa !33
  %219 = zext i8 %218 to i32
  %220 = shl i32 %219, 16
  %221 = add i32 %215, %220
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 7
  %224 = load i8, ptr %223, align 1, !tbaa !33
  %225 = zext i8 %224 to i32
  %226 = shl i32 %225, 24
  %227 = add i32 %221, %226
  %228 = load i32, ptr %15, align 4, !tbaa !31
  %229 = add i32 %228, %227
  store i32 %229, ptr %15, align 4, !tbaa !31
  %230 = load ptr, ptr %17, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 8
  %232 = load i8, ptr %231, align 1, !tbaa !33
  %233 = zext i8 %232 to i32
  %234 = load ptr, ptr %17, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %234, i64 9
  %236 = load i8, ptr %235, align 1, !tbaa !33
  %237 = zext i8 %236 to i32
  %238 = shl i32 %237, 8
  %239 = add i32 %233, %238
  %240 = load ptr, ptr %17, align 8, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %240, i64 10
  %242 = load i8, ptr %241, align 1, !tbaa !33
  %243 = zext i8 %242 to i32
  %244 = shl i32 %243, 16
  %245 = add i32 %239, %244
  %246 = load ptr, ptr %17, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 11
  %248 = load i8, ptr %247, align 1, !tbaa !33
  %249 = zext i8 %248 to i32
  %250 = shl i32 %249, 24
  %251 = add i32 %245, %250
  %252 = load i32, ptr %13, align 4, !tbaa !31
  %253 = add i32 %252, %251
  store i32 %253, ptr %13, align 4, !tbaa !31
  br label %254

254:                                              ; preds = %181
  %255 = load i32, ptr %15, align 4, !tbaa !31
  %256 = load i32, ptr %14, align 4, !tbaa !31
  %257 = sub i32 %256, %255
  store i32 %257, ptr %14, align 4, !tbaa !31
  %258 = load i32, ptr %13, align 4, !tbaa !31
  %259 = load i32, ptr %14, align 4, !tbaa !31
  %260 = sub i32 %259, %258
  store i32 %260, ptr %14, align 4, !tbaa !31
  %261 = load i32, ptr %13, align 4, !tbaa !31
  %262 = lshr i32 %261, 13
  %263 = load i32, ptr %14, align 4, !tbaa !31
  %264 = xor i32 %263, %262
  store i32 %264, ptr %14, align 4, !tbaa !31
  %265 = load i32, ptr %13, align 4, !tbaa !31
  %266 = load i32, ptr %15, align 4, !tbaa !31
  %267 = sub i32 %266, %265
  store i32 %267, ptr %15, align 4, !tbaa !31
  %268 = load i32, ptr %14, align 4, !tbaa !31
  %269 = load i32, ptr %15, align 4, !tbaa !31
  %270 = sub i32 %269, %268
  store i32 %270, ptr %15, align 4, !tbaa !31
  %271 = load i32, ptr %14, align 4, !tbaa !31
  %272 = shl i32 %271, 8
  %273 = load i32, ptr %15, align 4, !tbaa !31
  %274 = xor i32 %273, %272
  store i32 %274, ptr %15, align 4, !tbaa !31
  %275 = load i32, ptr %14, align 4, !tbaa !31
  %276 = load i32, ptr %13, align 4, !tbaa !31
  %277 = sub i32 %276, %275
  store i32 %277, ptr %13, align 4, !tbaa !31
  %278 = load i32, ptr %15, align 4, !tbaa !31
  %279 = load i32, ptr %13, align 4, !tbaa !31
  %280 = sub i32 %279, %278
  store i32 %280, ptr %13, align 4, !tbaa !31
  %281 = load i32, ptr %15, align 4, !tbaa !31
  %282 = lshr i32 %281, 13
  %283 = load i32, ptr %13, align 4, !tbaa !31
  %284 = xor i32 %283, %282
  store i32 %284, ptr %13, align 4, !tbaa !31
  %285 = load i32, ptr %15, align 4, !tbaa !31
  %286 = load i32, ptr %14, align 4, !tbaa !31
  %287 = sub i32 %286, %285
  store i32 %287, ptr %14, align 4, !tbaa !31
  %288 = load i32, ptr %13, align 4, !tbaa !31
  %289 = load i32, ptr %14, align 4, !tbaa !31
  %290 = sub i32 %289, %288
  store i32 %290, ptr %14, align 4, !tbaa !31
  %291 = load i32, ptr %13, align 4, !tbaa !31
  %292 = lshr i32 %291, 12
  %293 = load i32, ptr %14, align 4, !tbaa !31
  %294 = xor i32 %293, %292
  store i32 %294, ptr %14, align 4, !tbaa !31
  %295 = load i32, ptr %13, align 4, !tbaa !31
  %296 = load i32, ptr %15, align 4, !tbaa !31
  %297 = sub i32 %296, %295
  store i32 %297, ptr %15, align 4, !tbaa !31
  %298 = load i32, ptr %14, align 4, !tbaa !31
  %299 = load i32, ptr %15, align 4, !tbaa !31
  %300 = sub i32 %299, %298
  store i32 %300, ptr %15, align 4, !tbaa !31
  %301 = load i32, ptr %14, align 4, !tbaa !31
  %302 = shl i32 %301, 16
  %303 = load i32, ptr %15, align 4, !tbaa !31
  %304 = xor i32 %303, %302
  store i32 %304, ptr %15, align 4, !tbaa !31
  %305 = load i32, ptr %14, align 4, !tbaa !31
  %306 = load i32, ptr %13, align 4, !tbaa !31
  %307 = sub i32 %306, %305
  store i32 %307, ptr %13, align 4, !tbaa !31
  %308 = load i32, ptr %15, align 4, !tbaa !31
  %309 = load i32, ptr %13, align 4, !tbaa !31
  %310 = sub i32 %309, %308
  store i32 %310, ptr %13, align 4, !tbaa !31
  %311 = load i32, ptr %15, align 4, !tbaa !31
  %312 = lshr i32 %311, 5
  %313 = load i32, ptr %13, align 4, !tbaa !31
  %314 = xor i32 %313, %312
  store i32 %314, ptr %13, align 4, !tbaa !31
  %315 = load i32, ptr %15, align 4, !tbaa !31
  %316 = load i32, ptr %14, align 4, !tbaa !31
  %317 = sub i32 %316, %315
  store i32 %317, ptr %14, align 4, !tbaa !31
  %318 = load i32, ptr %13, align 4, !tbaa !31
  %319 = load i32, ptr %14, align 4, !tbaa !31
  %320 = sub i32 %319, %318
  store i32 %320, ptr %14, align 4, !tbaa !31
  %321 = load i32, ptr %13, align 4, !tbaa !31
  %322 = lshr i32 %321, 3
  %323 = load i32, ptr %14, align 4, !tbaa !31
  %324 = xor i32 %323, %322
  store i32 %324, ptr %14, align 4, !tbaa !31
  %325 = load i32, ptr %13, align 4, !tbaa !31
  %326 = load i32, ptr %15, align 4, !tbaa !31
  %327 = sub i32 %326, %325
  store i32 %327, ptr %15, align 4, !tbaa !31
  %328 = load i32, ptr %14, align 4, !tbaa !31
  %329 = load i32, ptr %15, align 4, !tbaa !31
  %330 = sub i32 %329, %328
  store i32 %330, ptr %15, align 4, !tbaa !31
  %331 = load i32, ptr %14, align 4, !tbaa !31
  %332 = shl i32 %331, 10
  %333 = load i32, ptr %15, align 4, !tbaa !31
  %334 = xor i32 %333, %332
  store i32 %334, ptr %15, align 4, !tbaa !31
  %335 = load i32, ptr %14, align 4, !tbaa !31
  %336 = load i32, ptr %13, align 4, !tbaa !31
  %337 = sub i32 %336, %335
  store i32 %337, ptr %13, align 4, !tbaa !31
  %338 = load i32, ptr %15, align 4, !tbaa !31
  %339 = load i32, ptr %13, align 4, !tbaa !31
  %340 = sub i32 %339, %338
  store i32 %340, ptr %13, align 4, !tbaa !31
  %341 = load i32, ptr %15, align 4, !tbaa !31
  %342 = lshr i32 %341, 15
  %343 = load i32, ptr %13, align 4, !tbaa !31
  %344 = xor i32 %343, %342
  store i32 %344, ptr %13, align 4, !tbaa !31
  br label %345

345:                                              ; preds = %254
  br label %346

346:                                              ; preds = %345
  %347 = load ptr, ptr %17, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i64 12
  store ptr %348, ptr %17, align 8, !tbaa !5
  %349 = load i32, ptr %16, align 4, !tbaa !31
  %350 = sub i32 %349, 12
  store i32 %350, ptr %16, align 4, !tbaa !31
  br label %178, !llvm.loop !34

351:                                              ; preds = %178
  %352 = load i32, ptr %13, align 4, !tbaa !31
  %353 = add i32 %352, 4
  store i32 %353, ptr %13, align 4, !tbaa !31
  %354 = load i32, ptr %16, align 4, !tbaa !31
  switch i32 %354, label %441 [
    i32 11, label %355
    i32 10, label %363
    i32 9, label %371
    i32 8, label %379
    i32 7, label %387
    i32 6, label %395
    i32 5, label %403
    i32 4, label %410
    i32 3, label %418
    i32 2, label %426
    i32 1, label %434
  ]

355:                                              ; preds = %351
  %356 = load ptr, ptr %17, align 8, !tbaa !5
  %357 = getelementptr inbounds i8, ptr %356, i64 10
  %358 = load i8, ptr %357, align 1, !tbaa !33
  %359 = zext i8 %358 to i32
  %360 = shl i32 %359, 24
  %361 = load i32, ptr %13, align 4, !tbaa !31
  %362 = add i32 %361, %360
  store i32 %362, ptr %13, align 4, !tbaa !31
  br label %363

363:                                              ; preds = %355, %351
  %364 = load ptr, ptr %17, align 8, !tbaa !5
  %365 = getelementptr inbounds i8, ptr %364, i64 9
  %366 = load i8, ptr %365, align 1, !tbaa !33
  %367 = zext i8 %366 to i32
  %368 = shl i32 %367, 16
  %369 = load i32, ptr %13, align 4, !tbaa !31
  %370 = add i32 %369, %368
  store i32 %370, ptr %13, align 4, !tbaa !31
  br label %371

371:                                              ; preds = %363, %351
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = getelementptr inbounds i8, ptr %372, i64 8
  %374 = load i8, ptr %373, align 1, !tbaa !33
  %375 = zext i8 %374 to i32
  %376 = shl i32 %375, 8
  %377 = load i32, ptr %13, align 4, !tbaa !31
  %378 = add i32 %377, %376
  store i32 %378, ptr %13, align 4, !tbaa !31
  br label %379

379:                                              ; preds = %371, %351
  %380 = load ptr, ptr %17, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %380, i64 7
  %382 = load i8, ptr %381, align 1, !tbaa !33
  %383 = zext i8 %382 to i32
  %384 = shl i32 %383, 24
  %385 = load i32, ptr %15, align 4, !tbaa !31
  %386 = add i32 %385, %384
  store i32 %386, ptr %15, align 4, !tbaa !31
  br label %387

387:                                              ; preds = %379, %351
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %388, i64 6
  %390 = load i8, ptr %389, align 1, !tbaa !33
  %391 = zext i8 %390 to i32
  %392 = shl i32 %391, 16
  %393 = load i32, ptr %15, align 4, !tbaa !31
  %394 = add i32 %393, %392
  store i32 %394, ptr %15, align 4, !tbaa !31
  br label %395

395:                                              ; preds = %387, %351
  %396 = load ptr, ptr %17, align 8, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %396, i64 5
  %398 = load i8, ptr %397, align 1, !tbaa !33
  %399 = zext i8 %398 to i32
  %400 = shl i32 %399, 8
  %401 = load i32, ptr %15, align 4, !tbaa !31
  %402 = add i32 %401, %400
  store i32 %402, ptr %15, align 4, !tbaa !31
  br label %403

403:                                              ; preds = %395, %351
  %404 = load ptr, ptr %17, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %404, i64 4
  %406 = load i8, ptr %405, align 1, !tbaa !33
  %407 = zext i8 %406 to i32
  %408 = load i32, ptr %15, align 4, !tbaa !31
  %409 = add i32 %408, %407
  store i32 %409, ptr %15, align 4, !tbaa !31
  br label %410

410:                                              ; preds = %403, %351
  %411 = load ptr, ptr %17, align 8, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %411, i64 3
  %413 = load i8, ptr %412, align 1, !tbaa !33
  %414 = zext i8 %413 to i32
  %415 = shl i32 %414, 24
  %416 = load i32, ptr %14, align 4, !tbaa !31
  %417 = add i32 %416, %415
  store i32 %417, ptr %14, align 4, !tbaa !31
  br label %418

418:                                              ; preds = %410, %351
  %419 = load ptr, ptr %17, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 2
  %421 = load i8, ptr %420, align 1, !tbaa !33
  %422 = zext i8 %421 to i32
  %423 = shl i32 %422, 16
  %424 = load i32, ptr %14, align 4, !tbaa !31
  %425 = add i32 %424, %423
  store i32 %425, ptr %14, align 4, !tbaa !31
  br label %426

426:                                              ; preds = %418, %351
  %427 = load ptr, ptr %17, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 1
  %429 = load i8, ptr %428, align 1, !tbaa !33
  %430 = zext i8 %429 to i32
  %431 = shl i32 %430, 8
  %432 = load i32, ptr %14, align 4, !tbaa !31
  %433 = add i32 %432, %431
  store i32 %433, ptr %14, align 4, !tbaa !31
  br label %434

434:                                              ; preds = %426, %351
  %435 = load ptr, ptr %17, align 8, !tbaa !5
  %436 = getelementptr inbounds i8, ptr %435, i64 0
  %437 = load i8, ptr %436, align 1, !tbaa !33
  %438 = zext i8 %437 to i32
  %439 = load i32, ptr %14, align 4, !tbaa !31
  %440 = add i32 %439, %438
  store i32 %440, ptr %14, align 4, !tbaa !31
  br label %441

441:                                              ; preds = %434, %351
  br label %442

442:                                              ; preds = %441
  %443 = load i32, ptr %15, align 4, !tbaa !31
  %444 = load i32, ptr %14, align 4, !tbaa !31
  %445 = sub i32 %444, %443
  store i32 %445, ptr %14, align 4, !tbaa !31
  %446 = load i32, ptr %13, align 4, !tbaa !31
  %447 = load i32, ptr %14, align 4, !tbaa !31
  %448 = sub i32 %447, %446
  store i32 %448, ptr %14, align 4, !tbaa !31
  %449 = load i32, ptr %13, align 4, !tbaa !31
  %450 = lshr i32 %449, 13
  %451 = load i32, ptr %14, align 4, !tbaa !31
  %452 = xor i32 %451, %450
  store i32 %452, ptr %14, align 4, !tbaa !31
  %453 = load i32, ptr %13, align 4, !tbaa !31
  %454 = load i32, ptr %15, align 4, !tbaa !31
  %455 = sub i32 %454, %453
  store i32 %455, ptr %15, align 4, !tbaa !31
  %456 = load i32, ptr %14, align 4, !tbaa !31
  %457 = load i32, ptr %15, align 4, !tbaa !31
  %458 = sub i32 %457, %456
  store i32 %458, ptr %15, align 4, !tbaa !31
  %459 = load i32, ptr %14, align 4, !tbaa !31
  %460 = shl i32 %459, 8
  %461 = load i32, ptr %15, align 4, !tbaa !31
  %462 = xor i32 %461, %460
  store i32 %462, ptr %15, align 4, !tbaa !31
  %463 = load i32, ptr %14, align 4, !tbaa !31
  %464 = load i32, ptr %13, align 4, !tbaa !31
  %465 = sub i32 %464, %463
  store i32 %465, ptr %13, align 4, !tbaa !31
  %466 = load i32, ptr %15, align 4, !tbaa !31
  %467 = load i32, ptr %13, align 4, !tbaa !31
  %468 = sub i32 %467, %466
  store i32 %468, ptr %13, align 4, !tbaa !31
  %469 = load i32, ptr %15, align 4, !tbaa !31
  %470 = lshr i32 %469, 13
  %471 = load i32, ptr %13, align 4, !tbaa !31
  %472 = xor i32 %471, %470
  store i32 %472, ptr %13, align 4, !tbaa !31
  %473 = load i32, ptr %15, align 4, !tbaa !31
  %474 = load i32, ptr %14, align 4, !tbaa !31
  %475 = sub i32 %474, %473
  store i32 %475, ptr %14, align 4, !tbaa !31
  %476 = load i32, ptr %13, align 4, !tbaa !31
  %477 = load i32, ptr %14, align 4, !tbaa !31
  %478 = sub i32 %477, %476
  store i32 %478, ptr %14, align 4, !tbaa !31
  %479 = load i32, ptr %13, align 4, !tbaa !31
  %480 = lshr i32 %479, 12
  %481 = load i32, ptr %14, align 4, !tbaa !31
  %482 = xor i32 %481, %480
  store i32 %482, ptr %14, align 4, !tbaa !31
  %483 = load i32, ptr %13, align 4, !tbaa !31
  %484 = load i32, ptr %15, align 4, !tbaa !31
  %485 = sub i32 %484, %483
  store i32 %485, ptr %15, align 4, !tbaa !31
  %486 = load i32, ptr %14, align 4, !tbaa !31
  %487 = load i32, ptr %15, align 4, !tbaa !31
  %488 = sub i32 %487, %486
  store i32 %488, ptr %15, align 4, !tbaa !31
  %489 = load i32, ptr %14, align 4, !tbaa !31
  %490 = shl i32 %489, 16
  %491 = load i32, ptr %15, align 4, !tbaa !31
  %492 = xor i32 %491, %490
  store i32 %492, ptr %15, align 4, !tbaa !31
  %493 = load i32, ptr %14, align 4, !tbaa !31
  %494 = load i32, ptr %13, align 4, !tbaa !31
  %495 = sub i32 %494, %493
  store i32 %495, ptr %13, align 4, !tbaa !31
  %496 = load i32, ptr %15, align 4, !tbaa !31
  %497 = load i32, ptr %13, align 4, !tbaa !31
  %498 = sub i32 %497, %496
  store i32 %498, ptr %13, align 4, !tbaa !31
  %499 = load i32, ptr %15, align 4, !tbaa !31
  %500 = lshr i32 %499, 5
  %501 = load i32, ptr %13, align 4, !tbaa !31
  %502 = xor i32 %501, %500
  store i32 %502, ptr %13, align 4, !tbaa !31
  %503 = load i32, ptr %15, align 4, !tbaa !31
  %504 = load i32, ptr %14, align 4, !tbaa !31
  %505 = sub i32 %504, %503
  store i32 %505, ptr %14, align 4, !tbaa !31
  %506 = load i32, ptr %13, align 4, !tbaa !31
  %507 = load i32, ptr %14, align 4, !tbaa !31
  %508 = sub i32 %507, %506
  store i32 %508, ptr %14, align 4, !tbaa !31
  %509 = load i32, ptr %13, align 4, !tbaa !31
  %510 = lshr i32 %509, 3
  %511 = load i32, ptr %14, align 4, !tbaa !31
  %512 = xor i32 %511, %510
  store i32 %512, ptr %14, align 4, !tbaa !31
  %513 = load i32, ptr %13, align 4, !tbaa !31
  %514 = load i32, ptr %15, align 4, !tbaa !31
  %515 = sub i32 %514, %513
  store i32 %515, ptr %15, align 4, !tbaa !31
  %516 = load i32, ptr %14, align 4, !tbaa !31
  %517 = load i32, ptr %15, align 4, !tbaa !31
  %518 = sub i32 %517, %516
  store i32 %518, ptr %15, align 4, !tbaa !31
  %519 = load i32, ptr %14, align 4, !tbaa !31
  %520 = shl i32 %519, 10
  %521 = load i32, ptr %15, align 4, !tbaa !31
  %522 = xor i32 %521, %520
  store i32 %522, ptr %15, align 4, !tbaa !31
  %523 = load i32, ptr %14, align 4, !tbaa !31
  %524 = load i32, ptr %13, align 4, !tbaa !31
  %525 = sub i32 %524, %523
  store i32 %525, ptr %13, align 4, !tbaa !31
  %526 = load i32, ptr %15, align 4, !tbaa !31
  %527 = load i32, ptr %13, align 4, !tbaa !31
  %528 = sub i32 %527, %526
  store i32 %528, ptr %13, align 4, !tbaa !31
  %529 = load i32, ptr %15, align 4, !tbaa !31
  %530 = lshr i32 %529, 15
  %531 = load i32, ptr %13, align 4, !tbaa !31
  %532 = xor i32 %531, %530
  store i32 %532, ptr %13, align 4, !tbaa !31
  br label %533

533:                                              ; preds = %442
  br label %534

534:                                              ; preds = %533
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537
  br label %539

539:                                              ; preds = %538
  store ptr null, ptr %10, align 8, !tbaa !5
  %540 = load ptr, ptr %7, align 8, !tbaa !5
  %541 = icmp ne ptr %540, null
  br i1 %541, label %542, label %646

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

543:                                              ; preds = %542
  %544 = load i32, ptr %13, align 4, !tbaa !31
  %545 = load ptr, ptr %7, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %545, i32 0, i32 3
  %547 = getelementptr inbounds %struct.UT_hash_handle, ptr %546, i32 0, i32 0
  %548 = load ptr, ptr %547, align 8, !tbaa !36
  %549 = getelementptr inbounds %struct.UT_hash_table, ptr %548, i32 0, i32 1
  %550 = load i32, ptr %549, align 8, !tbaa !39
  %551 = sub i32 %550, 1
  %552 = and i32 %544, %551
  store i32 %552, ptr %18, align 4, !tbaa !31
  br label %553

553:                                              ; preds = %543
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  %556 = load ptr, ptr %7, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %556, i32 0, i32 3
  %558 = getelementptr inbounds %struct.UT_hash_handle, ptr %557, i32 0, i32 0
  %559 = load ptr, ptr %558, align 8, !tbaa !36
  %560 = getelementptr inbounds %struct.UT_hash_table, ptr %559, i32 0, i32 0
  %561 = load ptr, ptr %560, align 8, !tbaa !41
  %562 = load i32, ptr %18, align 4, !tbaa !31
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds %struct.UT_hash_bucket, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.UT_hash_bucket, ptr %564, i32 0, i32 0
  %566 = load ptr, ptr %565, align 8, !tbaa !42
  %567 = icmp ne ptr %566, null
  br i1 %567, label %568, label %591

568:                                              ; preds = %555
  br label %569

569:                                              ; preds = %568
  %570 = load ptr, ptr %7, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %570, i32 0, i32 3
  %572 = getelementptr inbounds %struct.UT_hash_handle, ptr %571, i32 0, i32 0
  %573 = load ptr, ptr %572, align 8, !tbaa !36
  %574 = getelementptr inbounds %struct.UT_hash_table, ptr %573, i32 0, i32 0
  %575 = load ptr, ptr %574, align 8, !tbaa !41
  %576 = load i32, ptr %18, align 4, !tbaa !31
  %577 = zext i32 %576 to i64
  %578 = getelementptr inbounds %struct.UT_hash_bucket, ptr %575, i64 %577
  %579 = getelementptr inbounds %struct.UT_hash_bucket, ptr %578, i32 0, i32 0
  %580 = load ptr, ptr %579, align 8, !tbaa !42
  %581 = load ptr, ptr %7, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %581, i32 0, i32 3
  %583 = getelementptr inbounds %struct.UT_hash_handle, ptr %582, i32 0, i32 0
  %584 = load ptr, ptr %583, align 8, !tbaa !36
  %585 = getelementptr inbounds %struct.UT_hash_table, ptr %584, i32 0, i32 5
  %586 = load i64, ptr %585, align 8, !tbaa !44
  %587 = sub i64 0, %586
  %588 = getelementptr inbounds i8, ptr %580, i64 %587
  store ptr %588, ptr %10, align 8, !tbaa !5
  br label %589

589:                                              ; preds = %569
  br label %590

590:                                              ; preds = %589
  br label %592

591:                                              ; preds = %555
  store ptr null, ptr %10, align 8, !tbaa !5
  br label %592

592:                                              ; preds = %591, %590
  br label %593

593:                                              ; preds = %642, %592
  %594 = load ptr, ptr %10, align 8, !tbaa !5
  %595 = icmp ne ptr %594, null
  br i1 %595, label %596, label %643

596:                                              ; preds = %593
  %597 = load ptr, ptr %10, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %597, i32 0, i32 3
  %599 = getelementptr inbounds %struct.UT_hash_handle, ptr %598, i32 0, i32 7
  %600 = load i32, ptr %599, align 4, !tbaa !45
  %601 = load i32, ptr %13, align 4, !tbaa !31
  %602 = icmp eq i32 %600, %601
  br i1 %602, label %603, label %619

603:                                              ; preds = %596
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %604, i32 0, i32 3
  %606 = getelementptr inbounds %struct.UT_hash_handle, ptr %605, i32 0, i32 6
  %607 = load i32, ptr %606, align 8, !tbaa !46
  %608 = zext i32 %607 to i64
  %609 = icmp eq i64 %608, 4
  br i1 %609, label %610, label %619

610:                                              ; preds = %603
  %611 = load ptr, ptr %10, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %611, i32 0, i32 3
  %613 = getelementptr inbounds %struct.UT_hash_handle, ptr %612, i32 0, i32 5
  %614 = load ptr, ptr %613, align 8, !tbaa !47
  %615 = call i32 @memcmp(ptr noundef %614, ptr noundef %11, i64 noundef 4) #10
  %616 = icmp eq i32 %615, 0
  br i1 %616, label %617, label %618

617:                                              ; preds = %610
  br label %643

618:                                              ; preds = %610
  br label %619

619:                                              ; preds = %618, %603, %596
  %620 = load ptr, ptr %10, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %620, i32 0, i32 3
  %622 = getelementptr inbounds %struct.UT_hash_handle, ptr %621, i32 0, i32 4
  %623 = load ptr, ptr %622, align 8, !tbaa !48
  %624 = icmp ne ptr %623, null
  br i1 %624, label %625, label %641

625:                                              ; preds = %619
  br label %626

626:                                              ; preds = %625
  %627 = load ptr, ptr %10, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %627, i32 0, i32 3
  %629 = getelementptr inbounds %struct.UT_hash_handle, ptr %628, i32 0, i32 4
  %630 = load ptr, ptr %629, align 8, !tbaa !48
  %631 = load ptr, ptr %7, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %631, i32 0, i32 3
  %633 = getelementptr inbounds %struct.UT_hash_handle, ptr %632, i32 0, i32 0
  %634 = load ptr, ptr %633, align 8, !tbaa !36
  %635 = getelementptr inbounds %struct.UT_hash_table, ptr %634, i32 0, i32 5
  %636 = load i64, ptr %635, align 8, !tbaa !44
  %637 = sub i64 0, %636
  %638 = getelementptr inbounds i8, ptr %630, i64 %637
  store ptr %638, ptr %10, align 8, !tbaa !5
  br label %639

639:                                              ; preds = %626
  br label %640

640:                                              ; preds = %639
  br label %642

641:                                              ; preds = %619
  store ptr null, ptr %10, align 8, !tbaa !5
  br label %642

642:                                              ; preds = %641, %640
  br label %593, !llvm.loop !49

643:                                              ; preds = %617, %593
  br label %644

644:                                              ; preds = %643
  br label %645

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

646:                                              ; preds = %645, %539
  br label %647

647:                                              ; preds = %646
  br label %648

648:                                              ; preds = %647
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %649

649:                                              ; preds = %648
  br label %650

650:                                              ; preds = %649
  %651 = load ptr, ptr %10, align 8, !tbaa !5
  %652 = icmp ne ptr %651, null
  br i1 %652, label %1515, label %653

653:                                              ; preds = %650
  %654 = call ptr @__caryll_allocate_clean(i64 noundef 96, i64 noundef 42)
  store ptr %654, ptr %10, align 8, !tbaa !5
  %655 = load i32, ptr %11, align 4, !tbaa !31
  %656 = load ptr, ptr %10, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %656, i32 0, i32 0
  store i32 %655, ptr %657, align 8, !tbaa !50
  %658 = load ptr, ptr %12, align 8, !tbaa !5
  %659 = load ptr, ptr %10, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %659, i32 0, i32 1
  store ptr %658, ptr %660, align 8, !tbaa !51
  %661 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_CaretValueList, ptr @otl_iCaretValueList, i32 0, i32 2), align 8, !tbaa !52
  %662 = load ptr, ptr %10, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %662, i32 0, i32 2
  %664 = load ptr, ptr %5, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.table_GDEF, ptr %664, i32 0, i32 2
  %666 = getelementptr inbounds %struct.otl_LigCaretTable, ptr %665, i32 0, i32 2
  %667 = load ptr, ptr %666, align 8, !tbaa !27
  %668 = load i16, ptr %8, align 2, !tbaa !24
  %669 = zext i16 %668 to i64
  %670 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %670, i32 0, i32 1
  call void %661(ptr noundef %663, ptr noundef %671)
  br label %672

672:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  br label %673

673:                                              ; preds = %672
  br label %674

674:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %675 = load ptr, ptr %10, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %675, i32 0, i32 0
  store ptr %676, ptr %23, align 8, !tbaa !5
  store i32 -17973521, ptr %19, align 4, !tbaa !31
  store i32 -1640531527, ptr %21, align 4, !tbaa !31
  store i32 -1640531527, ptr %20, align 4, !tbaa !31
  store i32 4, ptr %22, align 4, !tbaa !31
  br label %677

677:                                              ; preds = %845, %674
  %678 = load i32, ptr %22, align 4, !tbaa !31
  %679 = icmp uge i32 %678, 12
  br i1 %679, label %680, label %850

680:                                              ; preds = %677
  %681 = load ptr, ptr %23, align 8, !tbaa !5
  %682 = getelementptr inbounds i8, ptr %681, i64 0
  %683 = load i8, ptr %682, align 1, !tbaa !33
  %684 = zext i8 %683 to i32
  %685 = load ptr, ptr %23, align 8, !tbaa !5
  %686 = getelementptr inbounds i8, ptr %685, i64 1
  %687 = load i8, ptr %686, align 1, !tbaa !33
  %688 = zext i8 %687 to i32
  %689 = shl i32 %688, 8
  %690 = add i32 %684, %689
  %691 = load ptr, ptr %23, align 8, !tbaa !5
  %692 = getelementptr inbounds i8, ptr %691, i64 2
  %693 = load i8, ptr %692, align 1, !tbaa !33
  %694 = zext i8 %693 to i32
  %695 = shl i32 %694, 16
  %696 = add i32 %690, %695
  %697 = load ptr, ptr %23, align 8, !tbaa !5
  %698 = getelementptr inbounds i8, ptr %697, i64 3
  %699 = load i8, ptr %698, align 1, !tbaa !33
  %700 = zext i8 %699 to i32
  %701 = shl i32 %700, 24
  %702 = add i32 %696, %701
  %703 = load i32, ptr %20, align 4, !tbaa !31
  %704 = add i32 %703, %702
  store i32 %704, ptr %20, align 4, !tbaa !31
  %705 = load ptr, ptr %23, align 8, !tbaa !5
  %706 = getelementptr inbounds i8, ptr %705, i64 4
  %707 = load i8, ptr %706, align 1, !tbaa !33
  %708 = zext i8 %707 to i32
  %709 = load ptr, ptr %23, align 8, !tbaa !5
  %710 = getelementptr inbounds i8, ptr %709, i64 5
  %711 = load i8, ptr %710, align 1, !tbaa !33
  %712 = zext i8 %711 to i32
  %713 = shl i32 %712, 8
  %714 = add i32 %708, %713
  %715 = load ptr, ptr %23, align 8, !tbaa !5
  %716 = getelementptr inbounds i8, ptr %715, i64 6
  %717 = load i8, ptr %716, align 1, !tbaa !33
  %718 = zext i8 %717 to i32
  %719 = shl i32 %718, 16
  %720 = add i32 %714, %719
  %721 = load ptr, ptr %23, align 8, !tbaa !5
  %722 = getelementptr inbounds i8, ptr %721, i64 7
  %723 = load i8, ptr %722, align 1, !tbaa !33
  %724 = zext i8 %723 to i32
  %725 = shl i32 %724, 24
  %726 = add i32 %720, %725
  %727 = load i32, ptr %21, align 4, !tbaa !31
  %728 = add i32 %727, %726
  store i32 %728, ptr %21, align 4, !tbaa !31
  %729 = load ptr, ptr %23, align 8, !tbaa !5
  %730 = getelementptr inbounds i8, ptr %729, i64 8
  %731 = load i8, ptr %730, align 1, !tbaa !33
  %732 = zext i8 %731 to i32
  %733 = load ptr, ptr %23, align 8, !tbaa !5
  %734 = getelementptr inbounds i8, ptr %733, i64 9
  %735 = load i8, ptr %734, align 1, !tbaa !33
  %736 = zext i8 %735 to i32
  %737 = shl i32 %736, 8
  %738 = add i32 %732, %737
  %739 = load ptr, ptr %23, align 8, !tbaa !5
  %740 = getelementptr inbounds i8, ptr %739, i64 10
  %741 = load i8, ptr %740, align 1, !tbaa !33
  %742 = zext i8 %741 to i32
  %743 = shl i32 %742, 16
  %744 = add i32 %738, %743
  %745 = load ptr, ptr %23, align 8, !tbaa !5
  %746 = getelementptr inbounds i8, ptr %745, i64 11
  %747 = load i8, ptr %746, align 1, !tbaa !33
  %748 = zext i8 %747 to i32
  %749 = shl i32 %748, 24
  %750 = add i32 %744, %749
  %751 = load i32, ptr %19, align 4, !tbaa !31
  %752 = add i32 %751, %750
  store i32 %752, ptr %19, align 4, !tbaa !31
  br label %753

753:                                              ; preds = %680
  %754 = load i32, ptr %21, align 4, !tbaa !31
  %755 = load i32, ptr %20, align 4, !tbaa !31
  %756 = sub i32 %755, %754
  store i32 %756, ptr %20, align 4, !tbaa !31
  %757 = load i32, ptr %19, align 4, !tbaa !31
  %758 = load i32, ptr %20, align 4, !tbaa !31
  %759 = sub i32 %758, %757
  store i32 %759, ptr %20, align 4, !tbaa !31
  %760 = load i32, ptr %19, align 4, !tbaa !31
  %761 = lshr i32 %760, 13
  %762 = load i32, ptr %20, align 4, !tbaa !31
  %763 = xor i32 %762, %761
  store i32 %763, ptr %20, align 4, !tbaa !31
  %764 = load i32, ptr %19, align 4, !tbaa !31
  %765 = load i32, ptr %21, align 4, !tbaa !31
  %766 = sub i32 %765, %764
  store i32 %766, ptr %21, align 4, !tbaa !31
  %767 = load i32, ptr %20, align 4, !tbaa !31
  %768 = load i32, ptr %21, align 4, !tbaa !31
  %769 = sub i32 %768, %767
  store i32 %769, ptr %21, align 4, !tbaa !31
  %770 = load i32, ptr %20, align 4, !tbaa !31
  %771 = shl i32 %770, 8
  %772 = load i32, ptr %21, align 4, !tbaa !31
  %773 = xor i32 %772, %771
  store i32 %773, ptr %21, align 4, !tbaa !31
  %774 = load i32, ptr %20, align 4, !tbaa !31
  %775 = load i32, ptr %19, align 4, !tbaa !31
  %776 = sub i32 %775, %774
  store i32 %776, ptr %19, align 4, !tbaa !31
  %777 = load i32, ptr %21, align 4, !tbaa !31
  %778 = load i32, ptr %19, align 4, !tbaa !31
  %779 = sub i32 %778, %777
  store i32 %779, ptr %19, align 4, !tbaa !31
  %780 = load i32, ptr %21, align 4, !tbaa !31
  %781 = lshr i32 %780, 13
  %782 = load i32, ptr %19, align 4, !tbaa !31
  %783 = xor i32 %782, %781
  store i32 %783, ptr %19, align 4, !tbaa !31
  %784 = load i32, ptr %21, align 4, !tbaa !31
  %785 = load i32, ptr %20, align 4, !tbaa !31
  %786 = sub i32 %785, %784
  store i32 %786, ptr %20, align 4, !tbaa !31
  %787 = load i32, ptr %19, align 4, !tbaa !31
  %788 = load i32, ptr %20, align 4, !tbaa !31
  %789 = sub i32 %788, %787
  store i32 %789, ptr %20, align 4, !tbaa !31
  %790 = load i32, ptr %19, align 4, !tbaa !31
  %791 = lshr i32 %790, 12
  %792 = load i32, ptr %20, align 4, !tbaa !31
  %793 = xor i32 %792, %791
  store i32 %793, ptr %20, align 4, !tbaa !31
  %794 = load i32, ptr %19, align 4, !tbaa !31
  %795 = load i32, ptr %21, align 4, !tbaa !31
  %796 = sub i32 %795, %794
  store i32 %796, ptr %21, align 4, !tbaa !31
  %797 = load i32, ptr %20, align 4, !tbaa !31
  %798 = load i32, ptr %21, align 4, !tbaa !31
  %799 = sub i32 %798, %797
  store i32 %799, ptr %21, align 4, !tbaa !31
  %800 = load i32, ptr %20, align 4, !tbaa !31
  %801 = shl i32 %800, 16
  %802 = load i32, ptr %21, align 4, !tbaa !31
  %803 = xor i32 %802, %801
  store i32 %803, ptr %21, align 4, !tbaa !31
  %804 = load i32, ptr %20, align 4, !tbaa !31
  %805 = load i32, ptr %19, align 4, !tbaa !31
  %806 = sub i32 %805, %804
  store i32 %806, ptr %19, align 4, !tbaa !31
  %807 = load i32, ptr %21, align 4, !tbaa !31
  %808 = load i32, ptr %19, align 4, !tbaa !31
  %809 = sub i32 %808, %807
  store i32 %809, ptr %19, align 4, !tbaa !31
  %810 = load i32, ptr %21, align 4, !tbaa !31
  %811 = lshr i32 %810, 5
  %812 = load i32, ptr %19, align 4, !tbaa !31
  %813 = xor i32 %812, %811
  store i32 %813, ptr %19, align 4, !tbaa !31
  %814 = load i32, ptr %21, align 4, !tbaa !31
  %815 = load i32, ptr %20, align 4, !tbaa !31
  %816 = sub i32 %815, %814
  store i32 %816, ptr %20, align 4, !tbaa !31
  %817 = load i32, ptr %19, align 4, !tbaa !31
  %818 = load i32, ptr %20, align 4, !tbaa !31
  %819 = sub i32 %818, %817
  store i32 %819, ptr %20, align 4, !tbaa !31
  %820 = load i32, ptr %19, align 4, !tbaa !31
  %821 = lshr i32 %820, 3
  %822 = load i32, ptr %20, align 4, !tbaa !31
  %823 = xor i32 %822, %821
  store i32 %823, ptr %20, align 4, !tbaa !31
  %824 = load i32, ptr %19, align 4, !tbaa !31
  %825 = load i32, ptr %21, align 4, !tbaa !31
  %826 = sub i32 %825, %824
  store i32 %826, ptr %21, align 4, !tbaa !31
  %827 = load i32, ptr %20, align 4, !tbaa !31
  %828 = load i32, ptr %21, align 4, !tbaa !31
  %829 = sub i32 %828, %827
  store i32 %829, ptr %21, align 4, !tbaa !31
  %830 = load i32, ptr %20, align 4, !tbaa !31
  %831 = shl i32 %830, 10
  %832 = load i32, ptr %21, align 4, !tbaa !31
  %833 = xor i32 %832, %831
  store i32 %833, ptr %21, align 4, !tbaa !31
  %834 = load i32, ptr %20, align 4, !tbaa !31
  %835 = load i32, ptr %19, align 4, !tbaa !31
  %836 = sub i32 %835, %834
  store i32 %836, ptr %19, align 4, !tbaa !31
  %837 = load i32, ptr %21, align 4, !tbaa !31
  %838 = load i32, ptr %19, align 4, !tbaa !31
  %839 = sub i32 %838, %837
  store i32 %839, ptr %19, align 4, !tbaa !31
  %840 = load i32, ptr %21, align 4, !tbaa !31
  %841 = lshr i32 %840, 15
  %842 = load i32, ptr %19, align 4, !tbaa !31
  %843 = xor i32 %842, %841
  store i32 %843, ptr %19, align 4, !tbaa !31
  br label %844

844:                                              ; preds = %753
  br label %845

845:                                              ; preds = %844
  %846 = load ptr, ptr %23, align 8, !tbaa !5
  %847 = getelementptr inbounds i8, ptr %846, i64 12
  store ptr %847, ptr %23, align 8, !tbaa !5
  %848 = load i32, ptr %22, align 4, !tbaa !31
  %849 = sub i32 %848, 12
  store i32 %849, ptr %22, align 4, !tbaa !31
  br label %677, !llvm.loop !54

850:                                              ; preds = %677
  %851 = load i32, ptr %19, align 4, !tbaa !31
  %852 = add i32 %851, 4
  store i32 %852, ptr %19, align 4, !tbaa !31
  %853 = load i32, ptr %22, align 4, !tbaa !31
  switch i32 %853, label %940 [
    i32 11, label %854
    i32 10, label %862
    i32 9, label %870
    i32 8, label %878
    i32 7, label %886
    i32 6, label %894
    i32 5, label %902
    i32 4, label %909
    i32 3, label %917
    i32 2, label %925
    i32 1, label %933
  ]

854:                                              ; preds = %850
  %855 = load ptr, ptr %23, align 8, !tbaa !5
  %856 = getelementptr inbounds i8, ptr %855, i64 10
  %857 = load i8, ptr %856, align 1, !tbaa !33
  %858 = zext i8 %857 to i32
  %859 = shl i32 %858, 24
  %860 = load i32, ptr %19, align 4, !tbaa !31
  %861 = add i32 %860, %859
  store i32 %861, ptr %19, align 4, !tbaa !31
  br label %862

862:                                              ; preds = %854, %850
  %863 = load ptr, ptr %23, align 8, !tbaa !5
  %864 = getelementptr inbounds i8, ptr %863, i64 9
  %865 = load i8, ptr %864, align 1, !tbaa !33
  %866 = zext i8 %865 to i32
  %867 = shl i32 %866, 16
  %868 = load i32, ptr %19, align 4, !tbaa !31
  %869 = add i32 %868, %867
  store i32 %869, ptr %19, align 4, !tbaa !31
  br label %870

870:                                              ; preds = %862, %850
  %871 = load ptr, ptr %23, align 8, !tbaa !5
  %872 = getelementptr inbounds i8, ptr %871, i64 8
  %873 = load i8, ptr %872, align 1, !tbaa !33
  %874 = zext i8 %873 to i32
  %875 = shl i32 %874, 8
  %876 = load i32, ptr %19, align 4, !tbaa !31
  %877 = add i32 %876, %875
  store i32 %877, ptr %19, align 4, !tbaa !31
  br label %878

878:                                              ; preds = %870, %850
  %879 = load ptr, ptr %23, align 8, !tbaa !5
  %880 = getelementptr inbounds i8, ptr %879, i64 7
  %881 = load i8, ptr %880, align 1, !tbaa !33
  %882 = zext i8 %881 to i32
  %883 = shl i32 %882, 24
  %884 = load i32, ptr %21, align 4, !tbaa !31
  %885 = add i32 %884, %883
  store i32 %885, ptr %21, align 4, !tbaa !31
  br label %886

886:                                              ; preds = %878, %850
  %887 = load ptr, ptr %23, align 8, !tbaa !5
  %888 = getelementptr inbounds i8, ptr %887, i64 6
  %889 = load i8, ptr %888, align 1, !tbaa !33
  %890 = zext i8 %889 to i32
  %891 = shl i32 %890, 16
  %892 = load i32, ptr %21, align 4, !tbaa !31
  %893 = add i32 %892, %891
  store i32 %893, ptr %21, align 4, !tbaa !31
  br label %894

894:                                              ; preds = %886, %850
  %895 = load ptr, ptr %23, align 8, !tbaa !5
  %896 = getelementptr inbounds i8, ptr %895, i64 5
  %897 = load i8, ptr %896, align 1, !tbaa !33
  %898 = zext i8 %897 to i32
  %899 = shl i32 %898, 8
  %900 = load i32, ptr %21, align 4, !tbaa !31
  %901 = add i32 %900, %899
  store i32 %901, ptr %21, align 4, !tbaa !31
  br label %902

902:                                              ; preds = %894, %850
  %903 = load ptr, ptr %23, align 8, !tbaa !5
  %904 = getelementptr inbounds i8, ptr %903, i64 4
  %905 = load i8, ptr %904, align 1, !tbaa !33
  %906 = zext i8 %905 to i32
  %907 = load i32, ptr %21, align 4, !tbaa !31
  %908 = add i32 %907, %906
  store i32 %908, ptr %21, align 4, !tbaa !31
  br label %909

909:                                              ; preds = %902, %850
  %910 = load ptr, ptr %23, align 8, !tbaa !5
  %911 = getelementptr inbounds i8, ptr %910, i64 3
  %912 = load i8, ptr %911, align 1, !tbaa !33
  %913 = zext i8 %912 to i32
  %914 = shl i32 %913, 24
  %915 = load i32, ptr %20, align 4, !tbaa !31
  %916 = add i32 %915, %914
  store i32 %916, ptr %20, align 4, !tbaa !31
  br label %917

917:                                              ; preds = %909, %850
  %918 = load ptr, ptr %23, align 8, !tbaa !5
  %919 = getelementptr inbounds i8, ptr %918, i64 2
  %920 = load i8, ptr %919, align 1, !tbaa !33
  %921 = zext i8 %920 to i32
  %922 = shl i32 %921, 16
  %923 = load i32, ptr %20, align 4, !tbaa !31
  %924 = add i32 %923, %922
  store i32 %924, ptr %20, align 4, !tbaa !31
  br label %925

925:                                              ; preds = %917, %850
  %926 = load ptr, ptr %23, align 8, !tbaa !5
  %927 = getelementptr inbounds i8, ptr %926, i64 1
  %928 = load i8, ptr %927, align 1, !tbaa !33
  %929 = zext i8 %928 to i32
  %930 = shl i32 %929, 8
  %931 = load i32, ptr %20, align 4, !tbaa !31
  %932 = add i32 %931, %930
  store i32 %932, ptr %20, align 4, !tbaa !31
  br label %933

933:                                              ; preds = %925, %850
  %934 = load ptr, ptr %23, align 8, !tbaa !5
  %935 = getelementptr inbounds i8, ptr %934, i64 0
  %936 = load i8, ptr %935, align 1, !tbaa !33
  %937 = zext i8 %936 to i32
  %938 = load i32, ptr %20, align 4, !tbaa !31
  %939 = add i32 %938, %937
  store i32 %939, ptr %20, align 4, !tbaa !31
  br label %940

940:                                              ; preds = %933, %850
  br label %941

941:                                              ; preds = %940
  %942 = load i32, ptr %21, align 4, !tbaa !31
  %943 = load i32, ptr %20, align 4, !tbaa !31
  %944 = sub i32 %943, %942
  store i32 %944, ptr %20, align 4, !tbaa !31
  %945 = load i32, ptr %19, align 4, !tbaa !31
  %946 = load i32, ptr %20, align 4, !tbaa !31
  %947 = sub i32 %946, %945
  store i32 %947, ptr %20, align 4, !tbaa !31
  %948 = load i32, ptr %19, align 4, !tbaa !31
  %949 = lshr i32 %948, 13
  %950 = load i32, ptr %20, align 4, !tbaa !31
  %951 = xor i32 %950, %949
  store i32 %951, ptr %20, align 4, !tbaa !31
  %952 = load i32, ptr %19, align 4, !tbaa !31
  %953 = load i32, ptr %21, align 4, !tbaa !31
  %954 = sub i32 %953, %952
  store i32 %954, ptr %21, align 4, !tbaa !31
  %955 = load i32, ptr %20, align 4, !tbaa !31
  %956 = load i32, ptr %21, align 4, !tbaa !31
  %957 = sub i32 %956, %955
  store i32 %957, ptr %21, align 4, !tbaa !31
  %958 = load i32, ptr %20, align 4, !tbaa !31
  %959 = shl i32 %958, 8
  %960 = load i32, ptr %21, align 4, !tbaa !31
  %961 = xor i32 %960, %959
  store i32 %961, ptr %21, align 4, !tbaa !31
  %962 = load i32, ptr %20, align 4, !tbaa !31
  %963 = load i32, ptr %19, align 4, !tbaa !31
  %964 = sub i32 %963, %962
  store i32 %964, ptr %19, align 4, !tbaa !31
  %965 = load i32, ptr %21, align 4, !tbaa !31
  %966 = load i32, ptr %19, align 4, !tbaa !31
  %967 = sub i32 %966, %965
  store i32 %967, ptr %19, align 4, !tbaa !31
  %968 = load i32, ptr %21, align 4, !tbaa !31
  %969 = lshr i32 %968, 13
  %970 = load i32, ptr %19, align 4, !tbaa !31
  %971 = xor i32 %970, %969
  store i32 %971, ptr %19, align 4, !tbaa !31
  %972 = load i32, ptr %21, align 4, !tbaa !31
  %973 = load i32, ptr %20, align 4, !tbaa !31
  %974 = sub i32 %973, %972
  store i32 %974, ptr %20, align 4, !tbaa !31
  %975 = load i32, ptr %19, align 4, !tbaa !31
  %976 = load i32, ptr %20, align 4, !tbaa !31
  %977 = sub i32 %976, %975
  store i32 %977, ptr %20, align 4, !tbaa !31
  %978 = load i32, ptr %19, align 4, !tbaa !31
  %979 = lshr i32 %978, 12
  %980 = load i32, ptr %20, align 4, !tbaa !31
  %981 = xor i32 %980, %979
  store i32 %981, ptr %20, align 4, !tbaa !31
  %982 = load i32, ptr %19, align 4, !tbaa !31
  %983 = load i32, ptr %21, align 4, !tbaa !31
  %984 = sub i32 %983, %982
  store i32 %984, ptr %21, align 4, !tbaa !31
  %985 = load i32, ptr %20, align 4, !tbaa !31
  %986 = load i32, ptr %21, align 4, !tbaa !31
  %987 = sub i32 %986, %985
  store i32 %987, ptr %21, align 4, !tbaa !31
  %988 = load i32, ptr %20, align 4, !tbaa !31
  %989 = shl i32 %988, 16
  %990 = load i32, ptr %21, align 4, !tbaa !31
  %991 = xor i32 %990, %989
  store i32 %991, ptr %21, align 4, !tbaa !31
  %992 = load i32, ptr %20, align 4, !tbaa !31
  %993 = load i32, ptr %19, align 4, !tbaa !31
  %994 = sub i32 %993, %992
  store i32 %994, ptr %19, align 4, !tbaa !31
  %995 = load i32, ptr %21, align 4, !tbaa !31
  %996 = load i32, ptr %19, align 4, !tbaa !31
  %997 = sub i32 %996, %995
  store i32 %997, ptr %19, align 4, !tbaa !31
  %998 = load i32, ptr %21, align 4, !tbaa !31
  %999 = lshr i32 %998, 5
  %1000 = load i32, ptr %19, align 4, !tbaa !31
  %1001 = xor i32 %1000, %999
  store i32 %1001, ptr %19, align 4, !tbaa !31
  %1002 = load i32, ptr %21, align 4, !tbaa !31
  %1003 = load i32, ptr %20, align 4, !tbaa !31
  %1004 = sub i32 %1003, %1002
  store i32 %1004, ptr %20, align 4, !tbaa !31
  %1005 = load i32, ptr %19, align 4, !tbaa !31
  %1006 = load i32, ptr %20, align 4, !tbaa !31
  %1007 = sub i32 %1006, %1005
  store i32 %1007, ptr %20, align 4, !tbaa !31
  %1008 = load i32, ptr %19, align 4, !tbaa !31
  %1009 = lshr i32 %1008, 3
  %1010 = load i32, ptr %20, align 4, !tbaa !31
  %1011 = xor i32 %1010, %1009
  store i32 %1011, ptr %20, align 4, !tbaa !31
  %1012 = load i32, ptr %19, align 4, !tbaa !31
  %1013 = load i32, ptr %21, align 4, !tbaa !31
  %1014 = sub i32 %1013, %1012
  store i32 %1014, ptr %21, align 4, !tbaa !31
  %1015 = load i32, ptr %20, align 4, !tbaa !31
  %1016 = load i32, ptr %21, align 4, !tbaa !31
  %1017 = sub i32 %1016, %1015
  store i32 %1017, ptr %21, align 4, !tbaa !31
  %1018 = load i32, ptr %20, align 4, !tbaa !31
  %1019 = shl i32 %1018, 10
  %1020 = load i32, ptr %21, align 4, !tbaa !31
  %1021 = xor i32 %1020, %1019
  store i32 %1021, ptr %21, align 4, !tbaa !31
  %1022 = load i32, ptr %20, align 4, !tbaa !31
  %1023 = load i32, ptr %19, align 4, !tbaa !31
  %1024 = sub i32 %1023, %1022
  store i32 %1024, ptr %19, align 4, !tbaa !31
  %1025 = load i32, ptr %21, align 4, !tbaa !31
  %1026 = load i32, ptr %19, align 4, !tbaa !31
  %1027 = sub i32 %1026, %1025
  store i32 %1027, ptr %19, align 4, !tbaa !31
  %1028 = load i32, ptr %21, align 4, !tbaa !31
  %1029 = lshr i32 %1028, 15
  %1030 = load i32, ptr %19, align 4, !tbaa !31
  %1031 = xor i32 %1030, %1029
  store i32 %1031, ptr %19, align 4, !tbaa !31
  br label %1032

1032:                                             ; preds = %941
  br label %1033

1033:                                             ; preds = %1032
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %1034

1034:                                             ; preds = %1033
  br label %1035

1035:                                             ; preds = %1034
  br label %1036

1036:                                             ; preds = %1035
  br label %1037

1037:                                             ; preds = %1036
  br label %1038

1038:                                             ; preds = %1037
  %1039 = load i32, ptr %19, align 4, !tbaa !31
  %1040 = load ptr, ptr %10, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1040, i32 0, i32 3
  %1042 = getelementptr inbounds %struct.UT_hash_handle, ptr %1041, i32 0, i32 7
  store i32 %1039, ptr %1042, align 4, !tbaa !45
  %1043 = load ptr, ptr %10, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1043, i32 0, i32 0
  %1045 = load ptr, ptr %10, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1045, i32 0, i32 3
  %1047 = getelementptr inbounds %struct.UT_hash_handle, ptr %1046, i32 0, i32 5
  store ptr %1044, ptr %1047, align 8, !tbaa !47
  %1048 = load ptr, ptr %10, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1048, i32 0, i32 3
  %1050 = getelementptr inbounds %struct.UT_hash_handle, ptr %1049, i32 0, i32 6
  store i32 4, ptr %1050, align 8, !tbaa !46
  %1051 = load ptr, ptr %7, align 8, !tbaa !5
  %1052 = icmp ne ptr %1051, null
  br i1 %1052, label %1135, label %1053

1053:                                             ; preds = %1038
  %1054 = load ptr, ptr %10, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1054, i32 0, i32 3
  %1056 = getelementptr inbounds %struct.UT_hash_handle, ptr %1055, i32 0, i32 2
  store ptr null, ptr %1056, align 8, !tbaa !55
  %1057 = load ptr, ptr %10, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1057, i32 0, i32 3
  %1059 = getelementptr inbounds %struct.UT_hash_handle, ptr %1058, i32 0, i32 1
  store ptr null, ptr %1059, align 8, !tbaa !56
  br label %1060

1060:                                             ; preds = %1053
  %1061 = call noalias ptr @malloc(i64 noundef 64) #11
  %1062 = load ptr, ptr %10, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1062, i32 0, i32 3
  %1064 = getelementptr inbounds %struct.UT_hash_handle, ptr %1063, i32 0, i32 0
  store ptr %1061, ptr %1064, align 8, !tbaa !36
  %1065 = load ptr, ptr %10, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1065, i32 0, i32 3
  %1067 = getelementptr inbounds %struct.UT_hash_handle, ptr %1066, i32 0, i32 0
  %1068 = load ptr, ptr %1067, align 8, !tbaa !36
  %1069 = icmp ne ptr %1068, null
  br i1 %1069, label %1071, label %1070

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

1071:                                             ; preds = %1060
  %1072 = load ptr, ptr %10, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1072, i32 0, i32 3
  %1074 = getelementptr inbounds %struct.UT_hash_handle, ptr %1073, i32 0, i32 0
  %1075 = load ptr, ptr %1074, align 8, !tbaa !36
  call void @llvm.memset.p0.i64(ptr align 8 %1075, i8 0, i64 64, i1 false)
  %1076 = load ptr, ptr %10, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1076, i32 0, i32 3
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1078, i32 0, i32 3
  %1080 = getelementptr inbounds %struct.UT_hash_handle, ptr %1079, i32 0, i32 0
  %1081 = load ptr, ptr %1080, align 8, !tbaa !36
  %1082 = getelementptr inbounds %struct.UT_hash_table, ptr %1081, i32 0, i32 4
  store ptr %1077, ptr %1082, align 8, !tbaa !57
  %1083 = load ptr, ptr %10, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1083, i32 0, i32 3
  %1085 = getelementptr inbounds %struct.UT_hash_handle, ptr %1084, i32 0, i32 0
  %1086 = load ptr, ptr %1085, align 8, !tbaa !36
  %1087 = getelementptr inbounds %struct.UT_hash_table, ptr %1086, i32 0, i32 1
  store i32 32, ptr %1087, align 8, !tbaa !39
  %1088 = load ptr, ptr %10, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1088, i32 0, i32 3
  %1090 = getelementptr inbounds %struct.UT_hash_handle, ptr %1089, i32 0, i32 0
  %1091 = load ptr, ptr %1090, align 8, !tbaa !36
  %1092 = getelementptr inbounds %struct.UT_hash_table, ptr %1091, i32 0, i32 2
  store i32 5, ptr %1092, align 4, !tbaa !58
  %1093 = load ptr, ptr %10, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1093, i32 0, i32 3
  %1095 = load ptr, ptr %10, align 8, !tbaa !5
  %1096 = ptrtoint ptr %1094 to i64
  %1097 = ptrtoint ptr %1095 to i64
  %1098 = sub i64 %1096, %1097
  %1099 = load ptr, ptr %10, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1099, i32 0, i32 3
  %1101 = getelementptr inbounds %struct.UT_hash_handle, ptr %1100, i32 0, i32 0
  %1102 = load ptr, ptr %1101, align 8, !tbaa !36
  %1103 = getelementptr inbounds %struct.UT_hash_table, ptr %1102, i32 0, i32 5
  store i64 %1098, ptr %1103, align 8, !tbaa !44
  %1104 = call noalias ptr @malloc(i64 noundef 512) #11
  %1105 = load ptr, ptr %10, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1105, i32 0, i32 3
  %1107 = getelementptr inbounds %struct.UT_hash_handle, ptr %1106, i32 0, i32 0
  %1108 = load ptr, ptr %1107, align 8, !tbaa !36
  %1109 = getelementptr inbounds %struct.UT_hash_table, ptr %1108, i32 0, i32 0
  store ptr %1104, ptr %1109, align 8, !tbaa !41
  %1110 = load ptr, ptr %10, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1110, i32 0, i32 3
  %1112 = getelementptr inbounds %struct.UT_hash_handle, ptr %1111, i32 0, i32 0
  %1113 = load ptr, ptr %1112, align 8, !tbaa !36
  %1114 = getelementptr inbounds %struct.UT_hash_table, ptr %1113, i32 0, i32 10
  store i32 -1609490463, ptr %1114, align 8, !tbaa !59
  %1115 = load ptr, ptr %10, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1115, i32 0, i32 3
  %1117 = getelementptr inbounds %struct.UT_hash_handle, ptr %1116, i32 0, i32 0
  %1118 = load ptr, ptr %1117, align 8, !tbaa !36
  %1119 = getelementptr inbounds %struct.UT_hash_table, ptr %1118, i32 0, i32 0
  %1120 = load ptr, ptr %1119, align 8, !tbaa !41
  %1121 = icmp ne ptr %1120, null
  br i1 %1121, label %1123, label %1122

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

1123:                                             ; preds = %1071
  %1124 = load ptr, ptr %10, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1124, i32 0, i32 3
  %1126 = getelementptr inbounds %struct.UT_hash_handle, ptr %1125, i32 0, i32 0
  %1127 = load ptr, ptr %1126, align 8, !tbaa !36
  %1128 = getelementptr inbounds %struct.UT_hash_table, ptr %1127, i32 0, i32 0
  %1129 = load ptr, ptr %1128, align 8, !tbaa !41
  call void @llvm.memset.p0.i64(ptr align 8 %1129, i8 0, i64 512, i1 false)
  br label %1130

1130:                                             ; preds = %1123
  br label %1131

1131:                                             ; preds = %1130
  br label %1132

1132:                                             ; preds = %1131
  br label %1133

1133:                                             ; preds = %1132
  %1134 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1134, ptr %7, align 8, !tbaa !5
  br label %1181

1135:                                             ; preds = %1038
  %1136 = load ptr, ptr %7, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1136, i32 0, i32 3
  %1138 = getelementptr inbounds %struct.UT_hash_handle, ptr %1137, i32 0, i32 0
  %1139 = load ptr, ptr %1138, align 8, !tbaa !36
  %1140 = load ptr, ptr %10, align 8, !tbaa !5
  %1141 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1140, i32 0, i32 3
  %1142 = getelementptr inbounds %struct.UT_hash_handle, ptr %1141, i32 0, i32 0
  store ptr %1139, ptr %1142, align 8, !tbaa !36
  br label %1143

1143:                                             ; preds = %1135
  %1144 = load ptr, ptr %10, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1144, i32 0, i32 3
  %1146 = getelementptr inbounds %struct.UT_hash_handle, ptr %1145, i32 0, i32 2
  store ptr null, ptr %1146, align 8, !tbaa !55
  %1147 = load ptr, ptr %7, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1147, i32 0, i32 3
  %1149 = getelementptr inbounds %struct.UT_hash_handle, ptr %1148, i32 0, i32 0
  %1150 = load ptr, ptr %1149, align 8, !tbaa !36
  %1151 = getelementptr inbounds %struct.UT_hash_table, ptr %1150, i32 0, i32 4
  %1152 = load ptr, ptr %1151, align 8, !tbaa !57
  %1153 = load ptr, ptr %7, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1153, i32 0, i32 3
  %1155 = getelementptr inbounds %struct.UT_hash_handle, ptr %1154, i32 0, i32 0
  %1156 = load ptr, ptr %1155, align 8, !tbaa !36
  %1157 = getelementptr inbounds %struct.UT_hash_table, ptr %1156, i32 0, i32 5
  %1158 = load i64, ptr %1157, align 8, !tbaa !44
  %1159 = sub i64 0, %1158
  %1160 = getelementptr inbounds i8, ptr %1152, i64 %1159
  %1161 = load ptr, ptr %10, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1161, i32 0, i32 3
  %1163 = getelementptr inbounds %struct.UT_hash_handle, ptr %1162, i32 0, i32 1
  store ptr %1160, ptr %1163, align 8, !tbaa !56
  %1164 = load ptr, ptr %10, align 8, !tbaa !5
  %1165 = load ptr, ptr %7, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1165, i32 0, i32 3
  %1167 = getelementptr inbounds %struct.UT_hash_handle, ptr %1166, i32 0, i32 0
  %1168 = load ptr, ptr %1167, align 8, !tbaa !36
  %1169 = getelementptr inbounds %struct.UT_hash_table, ptr %1168, i32 0, i32 4
  %1170 = load ptr, ptr %1169, align 8, !tbaa !57
  %1171 = getelementptr inbounds %struct.UT_hash_handle, ptr %1170, i32 0, i32 2
  store ptr %1164, ptr %1171, align 8, !tbaa !60
  %1172 = load ptr, ptr %10, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1172, i32 0, i32 3
  %1174 = load ptr, ptr %7, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1174, i32 0, i32 3
  %1176 = getelementptr inbounds %struct.UT_hash_handle, ptr %1175, i32 0, i32 0
  %1177 = load ptr, ptr %1176, align 8, !tbaa !36
  %1178 = getelementptr inbounds %struct.UT_hash_table, ptr %1177, i32 0, i32 4
  store ptr %1173, ptr %1178, align 8, !tbaa !57
  br label %1179

1179:                                             ; preds = %1143
  br label %1180

1180:                                             ; preds = %1179
  br label %1181

1181:                                             ; preds = %1180, %1133
  br label %1182

1182:                                             ; preds = %1181
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %1183 = load ptr, ptr %7, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1183, i32 0, i32 3
  %1185 = getelementptr inbounds %struct.UT_hash_handle, ptr %1184, i32 0, i32 0
  %1186 = load ptr, ptr %1185, align 8, !tbaa !36
  %1187 = getelementptr inbounds %struct.UT_hash_table, ptr %1186, i32 0, i32 3
  %1188 = load i32, ptr %1187, align 8, !tbaa !61
  %1189 = add i32 %1188, 1
  store i32 %1189, ptr %1187, align 8, !tbaa !61
  br label %1190

1190:                                             ; preds = %1182
  %1191 = load i32, ptr %19, align 4, !tbaa !31
  %1192 = load ptr, ptr %7, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1192, i32 0, i32 3
  %1194 = getelementptr inbounds %struct.UT_hash_handle, ptr %1193, i32 0, i32 0
  %1195 = load ptr, ptr %1194, align 8, !tbaa !36
  %1196 = getelementptr inbounds %struct.UT_hash_table, ptr %1195, i32 0, i32 1
  %1197 = load i32, ptr %1196, align 8, !tbaa !39
  %1198 = sub i32 %1197, 1
  %1199 = and i32 %1191, %1198
  store i32 %1199, ptr %24, align 4, !tbaa !31
  br label %1200

1200:                                             ; preds = %1190
  br label %1201

1201:                                             ; preds = %1200
  br label %1202

1202:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %1203 = load ptr, ptr %7, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1203, i32 0, i32 3
  %1205 = getelementptr inbounds %struct.UT_hash_handle, ptr %1204, i32 0, i32 0
  %1206 = load ptr, ptr %1205, align 8, !tbaa !36
  %1207 = getelementptr inbounds %struct.UT_hash_table, ptr %1206, i32 0, i32 0
  %1208 = load ptr, ptr %1207, align 8, !tbaa !41
  %1209 = load i32, ptr %24, align 4, !tbaa !31
  %1210 = zext i32 %1209 to i64
  %1211 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1208, i64 %1210
  store ptr %1211, ptr %25, align 8, !tbaa !5
  %1212 = load ptr, ptr %25, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1212, i32 0, i32 1
  %1214 = load i32, ptr %1213, align 8, !tbaa !62
  %1215 = add i32 %1214, 1
  store i32 %1215, ptr %1213, align 8, !tbaa !62
  %1216 = load ptr, ptr %25, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1216, i32 0, i32 0
  %1218 = load ptr, ptr %1217, align 8, !tbaa !42
  %1219 = load ptr, ptr %10, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1219, i32 0, i32 3
  %1221 = getelementptr inbounds %struct.UT_hash_handle, ptr %1220, i32 0, i32 4
  store ptr %1218, ptr %1221, align 8, !tbaa !48
  %1222 = load ptr, ptr %10, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1222, i32 0, i32 3
  %1224 = getelementptr inbounds %struct.UT_hash_handle, ptr %1223, i32 0, i32 3
  store ptr null, ptr %1224, align 8, !tbaa !63
  %1225 = load ptr, ptr %25, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1225, i32 0, i32 0
  %1227 = load ptr, ptr %1226, align 8, !tbaa !42
  %1228 = icmp ne ptr %1227, null
  br i1 %1228, label %1229, label %1236

1229:                                             ; preds = %1202
  %1230 = load ptr, ptr %10, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1230, i32 0, i32 3
  %1232 = load ptr, ptr %25, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1232, i32 0, i32 0
  %1234 = load ptr, ptr %1233, align 8, !tbaa !42
  %1235 = getelementptr inbounds %struct.UT_hash_handle, ptr %1234, i32 0, i32 3
  store ptr %1231, ptr %1235, align 8, !tbaa !64
  br label %1236

1236:                                             ; preds = %1229, %1202
  %1237 = load ptr, ptr %10, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1237, i32 0, i32 3
  %1239 = load ptr, ptr %25, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1239, i32 0, i32 0
  store ptr %1238, ptr %1240, align 8, !tbaa !42
  %1241 = load ptr, ptr %25, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1241, i32 0, i32 1
  %1243 = load i32, ptr %1242, align 8, !tbaa !62
  %1244 = load ptr, ptr %25, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1244, i32 0, i32 2
  %1246 = load i32, ptr %1245, align 4, !tbaa !65
  %1247 = add i32 %1246, 1
  %1248 = mul i32 %1247, 10
  %1249 = icmp uge i32 %1243, %1248
  br i1 %1249, label %1250, label %1506

1250:                                             ; preds = %1236
  %1251 = load ptr, ptr %10, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1251, i32 0, i32 3
  %1253 = getelementptr inbounds %struct.UT_hash_handle, ptr %1252, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8, !tbaa !36
  %1255 = getelementptr inbounds %struct.UT_hash_table, ptr %1254, i32 0, i32 9
  %1256 = load i32, ptr %1255, align 4, !tbaa !66
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1506, label %1258

1258:                                             ; preds = %1250
  br label %1259

1259:                                             ; preds = %1258
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %1260 = load ptr, ptr %10, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1260, i32 0, i32 3
  %1262 = getelementptr inbounds %struct.UT_hash_handle, ptr %1261, i32 0, i32 0
  %1263 = load ptr, ptr %1262, align 8, !tbaa !36
  %1264 = getelementptr inbounds %struct.UT_hash_table, ptr %1263, i32 0, i32 1
  %1265 = load i32, ptr %1264, align 8, !tbaa !39
  %1266 = zext i32 %1265 to i64
  %1267 = mul i64 2, %1266
  %1268 = mul i64 %1267, 16
  %1269 = call noalias ptr @malloc(i64 noundef %1268) #11
  store ptr %1269, ptr %30, align 8, !tbaa !5
  %1270 = load ptr, ptr %30, align 8, !tbaa !5
  %1271 = icmp ne ptr %1270, null
  br i1 %1271, label %1273, label %1272

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

1273:                                             ; preds = %1259
  %1274 = load ptr, ptr %30, align 8, !tbaa !5
  %1275 = load ptr, ptr %10, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1275, i32 0, i32 3
  %1277 = getelementptr inbounds %struct.UT_hash_handle, ptr %1276, i32 0, i32 0
  %1278 = load ptr, ptr %1277, align 8, !tbaa !36
  %1279 = getelementptr inbounds %struct.UT_hash_table, ptr %1278, i32 0, i32 1
  %1280 = load i32, ptr %1279, align 8, !tbaa !39
  %1281 = zext i32 %1280 to i64
  %1282 = mul i64 2, %1281
  %1283 = mul i64 %1282, 16
  call void @llvm.memset.p0.i64(ptr align 8 %1274, i8 0, i64 %1283, i1 false)
  %1284 = load ptr, ptr %10, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1284, i32 0, i32 3
  %1286 = getelementptr inbounds %struct.UT_hash_handle, ptr %1285, i32 0, i32 0
  %1287 = load ptr, ptr %1286, align 8, !tbaa !36
  %1288 = getelementptr inbounds %struct.UT_hash_table, ptr %1287, i32 0, i32 3
  %1289 = load i32, ptr %1288, align 8, !tbaa !61
  %1290 = load ptr, ptr %10, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1290, i32 0, i32 3
  %1292 = getelementptr inbounds %struct.UT_hash_handle, ptr %1291, i32 0, i32 0
  %1293 = load ptr, ptr %1292, align 8, !tbaa !36
  %1294 = getelementptr inbounds %struct.UT_hash_table, ptr %1293, i32 0, i32 2
  %1295 = load i32, ptr %1294, align 4, !tbaa !58
  %1296 = add i32 %1295, 1
  %1297 = lshr i32 %1289, %1296
  %1298 = load ptr, ptr %10, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1298, i32 0, i32 3
  %1300 = getelementptr inbounds %struct.UT_hash_handle, ptr %1299, i32 0, i32 0
  %1301 = load ptr, ptr %1300, align 8, !tbaa !36
  %1302 = getelementptr inbounds %struct.UT_hash_table, ptr %1301, i32 0, i32 3
  %1303 = load i32, ptr %1302, align 8, !tbaa !61
  %1304 = load ptr, ptr %10, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1304, i32 0, i32 3
  %1306 = getelementptr inbounds %struct.UT_hash_handle, ptr %1305, i32 0, i32 0
  %1307 = load ptr, ptr %1306, align 8, !tbaa !36
  %1308 = getelementptr inbounds %struct.UT_hash_table, ptr %1307, i32 0, i32 1
  %1309 = load i32, ptr %1308, align 8, !tbaa !39
  %1310 = mul i32 %1309, 2
  %1311 = sub i32 %1310, 1
  %1312 = and i32 %1303, %1311
  %1313 = icmp ne i32 %1312, 0
  %1314 = zext i1 %1313 to i64
  %1315 = select i1 %1313, i32 1, i32 0
  %1316 = add i32 %1297, %1315
  %1317 = load ptr, ptr %10, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1317, i32 0, i32 3
  %1319 = getelementptr inbounds %struct.UT_hash_handle, ptr %1318, i32 0, i32 0
  %1320 = load ptr, ptr %1319, align 8, !tbaa !36
  %1321 = getelementptr inbounds %struct.UT_hash_table, ptr %1320, i32 0, i32 6
  store i32 %1316, ptr %1321, align 8, !tbaa !67
  %1322 = load ptr, ptr %10, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1322, i32 0, i32 3
  %1324 = getelementptr inbounds %struct.UT_hash_handle, ptr %1323, i32 0, i32 0
  %1325 = load ptr, ptr %1324, align 8, !tbaa !36
  %1326 = getelementptr inbounds %struct.UT_hash_table, ptr %1325, i32 0, i32 7
  store i32 0, ptr %1326, align 4, !tbaa !68
  store i32 0, ptr %27, align 4, !tbaa !31
  br label %1327

1327:                                             ; preds = %1429, %1273
  %1328 = load i32, ptr %27, align 4, !tbaa !31
  %1329 = load ptr, ptr %10, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1329, i32 0, i32 3
  %1331 = getelementptr inbounds %struct.UT_hash_handle, ptr %1330, i32 0, i32 0
  %1332 = load ptr, ptr %1331, align 8, !tbaa !36
  %1333 = getelementptr inbounds %struct.UT_hash_table, ptr %1332, i32 0, i32 1
  %1334 = load i32, ptr %1333, align 8, !tbaa !39
  %1335 = icmp ult i32 %1328, %1334
  br i1 %1335, label %1336, label %1432

1336:                                             ; preds = %1327
  %1337 = load ptr, ptr %10, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1337, i32 0, i32 3
  %1339 = getelementptr inbounds %struct.UT_hash_handle, ptr %1338, i32 0, i32 0
  %1340 = load ptr, ptr %1339, align 8, !tbaa !36
  %1341 = getelementptr inbounds %struct.UT_hash_table, ptr %1340, i32 0, i32 0
  %1342 = load ptr, ptr %1341, align 8, !tbaa !41
  %1343 = load i32, ptr %27, align 4, !tbaa !31
  %1344 = zext i32 %1343 to i64
  %1345 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1342, i64 %1344
  %1346 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1345, i32 0, i32 0
  %1347 = load ptr, ptr %1346, align 8, !tbaa !42
  store ptr %1347, ptr %28, align 8, !tbaa !5
  br label %1348

1348:                                             ; preds = %1423, %1336
  %1349 = load ptr, ptr %28, align 8, !tbaa !5
  %1350 = icmp ne ptr %1349, null
  br i1 %1350, label %1351, label %1428

1351:                                             ; preds = %1348
  %1352 = load ptr, ptr %28, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.UT_hash_handle, ptr %1352, i32 0, i32 4
  %1354 = load ptr, ptr %1353, align 8, !tbaa !69
  store ptr %1354, ptr %29, align 8, !tbaa !5
  br label %1355

1355:                                             ; preds = %1351
  %1356 = load ptr, ptr %28, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.UT_hash_handle, ptr %1356, i32 0, i32 7
  %1358 = load i32, ptr %1357, align 4, !tbaa !70
  %1359 = load ptr, ptr %10, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1359, i32 0, i32 3
  %1361 = getelementptr inbounds %struct.UT_hash_handle, ptr %1360, i32 0, i32 0
  %1362 = load ptr, ptr %1361, align 8, !tbaa !36
  %1363 = getelementptr inbounds %struct.UT_hash_table, ptr %1362, i32 0, i32 1
  %1364 = load i32, ptr %1363, align 8, !tbaa !39
  %1365 = mul i32 %1364, 2
  %1366 = sub i32 %1365, 1
  %1367 = and i32 %1358, %1366
  store i32 %1367, ptr %26, align 4, !tbaa !31
  br label %1368

1368:                                             ; preds = %1355
  br label %1369

1369:                                             ; preds = %1368
  %1370 = load ptr, ptr %30, align 8, !tbaa !5
  %1371 = load i32, ptr %26, align 4, !tbaa !31
  %1372 = zext i32 %1371 to i64
  %1373 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1370, i64 %1372
  store ptr %1373, ptr %31, align 8, !tbaa !5
  %1374 = load ptr, ptr %31, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1374, i32 0, i32 1
  %1376 = load i32, ptr %1375, align 8, !tbaa !62
  %1377 = add i32 %1376, 1
  store i32 %1377, ptr %1375, align 8, !tbaa !62
  %1378 = load ptr, ptr %10, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1378, i32 0, i32 3
  %1380 = getelementptr inbounds %struct.UT_hash_handle, ptr %1379, i32 0, i32 0
  %1381 = load ptr, ptr %1380, align 8, !tbaa !36
  %1382 = getelementptr inbounds %struct.UT_hash_table, ptr %1381, i32 0, i32 6
  %1383 = load i32, ptr %1382, align 8, !tbaa !67
  %1384 = icmp ugt i32 %1377, %1383
  br i1 %1384, label %1385, label %1405

1385:                                             ; preds = %1369
  %1386 = load ptr, ptr %10, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1386, i32 0, i32 3
  %1388 = getelementptr inbounds %struct.UT_hash_handle, ptr %1387, i32 0, i32 0
  %1389 = load ptr, ptr %1388, align 8, !tbaa !36
  %1390 = getelementptr inbounds %struct.UT_hash_table, ptr %1389, i32 0, i32 7
  %1391 = load i32, ptr %1390, align 4, !tbaa !68
  %1392 = add i32 %1391, 1
  store i32 %1392, ptr %1390, align 4, !tbaa !68
  %1393 = load ptr, ptr %31, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1393, i32 0, i32 1
  %1395 = load i32, ptr %1394, align 8, !tbaa !62
  %1396 = load ptr, ptr %10, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1396, i32 0, i32 3
  %1398 = getelementptr inbounds %struct.UT_hash_handle, ptr %1397, i32 0, i32 0
  %1399 = load ptr, ptr %1398, align 8, !tbaa !36
  %1400 = getelementptr inbounds %struct.UT_hash_table, ptr %1399, i32 0, i32 6
  %1401 = load i32, ptr %1400, align 8, !tbaa !67
  %1402 = udiv i32 %1395, %1401
  %1403 = load ptr, ptr %31, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1403, i32 0, i32 2
  store i32 %1402, ptr %1404, align 4, !tbaa !65
  br label %1405

1405:                                             ; preds = %1385, %1369
  %1406 = load ptr, ptr %28, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.UT_hash_handle, ptr %1406, i32 0, i32 3
  store ptr null, ptr %1407, align 8, !tbaa !64
  %1408 = load ptr, ptr %31, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1408, i32 0, i32 0
  %1410 = load ptr, ptr %1409, align 8, !tbaa !42
  %1411 = load ptr, ptr %28, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.UT_hash_handle, ptr %1411, i32 0, i32 4
  store ptr %1410, ptr %1412, align 8, !tbaa !69
  %1413 = load ptr, ptr %31, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1413, i32 0, i32 0
  %1415 = load ptr, ptr %1414, align 8, !tbaa !42
  %1416 = icmp ne ptr %1415, null
  br i1 %1416, label %1417, label %1423

1417:                                             ; preds = %1405
  %1418 = load ptr, ptr %28, align 8, !tbaa !5
  %1419 = load ptr, ptr %31, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1419, i32 0, i32 0
  %1421 = load ptr, ptr %1420, align 8, !tbaa !42
  %1422 = getelementptr inbounds %struct.UT_hash_handle, ptr %1421, i32 0, i32 3
  store ptr %1418, ptr %1422, align 8, !tbaa !64
  br label %1423

1423:                                             ; preds = %1417, %1405
  %1424 = load ptr, ptr %28, align 8, !tbaa !5
  %1425 = load ptr, ptr %31, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1425, i32 0, i32 0
  store ptr %1424, ptr %1426, align 8, !tbaa !42
  %1427 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %1427, ptr %28, align 8, !tbaa !5
  br label %1348, !llvm.loop !71

1428:                                             ; preds = %1348
  br label %1429

1429:                                             ; preds = %1428
  %1430 = load i32, ptr %27, align 4, !tbaa !31
  %1431 = add i32 %1430, 1
  store i32 %1431, ptr %27, align 4, !tbaa !31
  br label %1327, !llvm.loop !72

1432:                                             ; preds = %1327
  %1433 = load ptr, ptr %10, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1433, i32 0, i32 3
  %1435 = getelementptr inbounds %struct.UT_hash_handle, ptr %1434, i32 0, i32 0
  %1436 = load ptr, ptr %1435, align 8, !tbaa !36
  %1437 = getelementptr inbounds %struct.UT_hash_table, ptr %1436, i32 0, i32 0
  %1438 = load ptr, ptr %1437, align 8, !tbaa !41
  call void @free(ptr noundef %1438) #9
  %1439 = load ptr, ptr %10, align 8, !tbaa !5
  %1440 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1439, i32 0, i32 3
  %1441 = getelementptr inbounds %struct.UT_hash_handle, ptr %1440, i32 0, i32 0
  %1442 = load ptr, ptr %1441, align 8, !tbaa !36
  %1443 = getelementptr inbounds %struct.UT_hash_table, ptr %1442, i32 0, i32 1
  %1444 = load i32, ptr %1443, align 8, !tbaa !39
  %1445 = mul i32 %1444, 2
  store i32 %1445, ptr %1443, align 8, !tbaa !39
  %1446 = load ptr, ptr %10, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1446, i32 0, i32 3
  %1448 = getelementptr inbounds %struct.UT_hash_handle, ptr %1447, i32 0, i32 0
  %1449 = load ptr, ptr %1448, align 8, !tbaa !36
  %1450 = getelementptr inbounds %struct.UT_hash_table, ptr %1449, i32 0, i32 2
  %1451 = load i32, ptr %1450, align 4, !tbaa !58
  %1452 = add i32 %1451, 1
  store i32 %1452, ptr %1450, align 4, !tbaa !58
  %1453 = load ptr, ptr %30, align 8, !tbaa !5
  %1454 = load ptr, ptr %10, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1454, i32 0, i32 3
  %1456 = getelementptr inbounds %struct.UT_hash_handle, ptr %1455, i32 0, i32 0
  %1457 = load ptr, ptr %1456, align 8, !tbaa !36
  %1458 = getelementptr inbounds %struct.UT_hash_table, ptr %1457, i32 0, i32 0
  store ptr %1453, ptr %1458, align 8, !tbaa !41
  %1459 = load ptr, ptr %10, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1459, i32 0, i32 3
  %1461 = getelementptr inbounds %struct.UT_hash_handle, ptr %1460, i32 0, i32 0
  %1462 = load ptr, ptr %1461, align 8, !tbaa !36
  %1463 = getelementptr inbounds %struct.UT_hash_table, ptr %1462, i32 0, i32 7
  %1464 = load i32, ptr %1463, align 4, !tbaa !68
  %1465 = load ptr, ptr %10, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1465, i32 0, i32 3
  %1467 = getelementptr inbounds %struct.UT_hash_handle, ptr %1466, i32 0, i32 0
  %1468 = load ptr, ptr %1467, align 8, !tbaa !36
  %1469 = getelementptr inbounds %struct.UT_hash_table, ptr %1468, i32 0, i32 3
  %1470 = load i32, ptr %1469, align 8, !tbaa !61
  %1471 = lshr i32 %1470, 1
  %1472 = icmp ugt i32 %1464, %1471
  br i1 %1472, label %1473, label %1481

1473:                                             ; preds = %1432
  %1474 = load ptr, ptr %10, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1474, i32 0, i32 3
  %1476 = getelementptr inbounds %struct.UT_hash_handle, ptr %1475, i32 0, i32 0
  %1477 = load ptr, ptr %1476, align 8, !tbaa !36
  %1478 = getelementptr inbounds %struct.UT_hash_table, ptr %1477, i32 0, i32 8
  %1479 = load i32, ptr %1478, align 8, !tbaa !73
  %1480 = add i32 %1479, 1
  br label %1482

1481:                                             ; preds = %1432
  br label %1482

1482:                                             ; preds = %1481, %1473
  %1483 = phi i32 [ %1480, %1473 ], [ 0, %1481 ]
  %1484 = load ptr, ptr %10, align 8, !tbaa !5
  %1485 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1484, i32 0, i32 3
  %1486 = getelementptr inbounds %struct.UT_hash_handle, ptr %1485, i32 0, i32 0
  %1487 = load ptr, ptr %1486, align 8, !tbaa !36
  %1488 = getelementptr inbounds %struct.UT_hash_table, ptr %1487, i32 0, i32 8
  store i32 %1483, ptr %1488, align 8, !tbaa !73
  %1489 = load ptr, ptr %10, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1489, i32 0, i32 3
  %1491 = getelementptr inbounds %struct.UT_hash_handle, ptr %1490, i32 0, i32 0
  %1492 = load ptr, ptr %1491, align 8, !tbaa !36
  %1493 = getelementptr inbounds %struct.UT_hash_table, ptr %1492, i32 0, i32 8
  %1494 = load i32, ptr %1493, align 8, !tbaa !73
  %1495 = icmp ugt i32 %1494, 1
  br i1 %1495, label %1496, label %1502

1496:                                             ; preds = %1482
  %1497 = load ptr, ptr %10, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1497, i32 0, i32 3
  %1499 = getelementptr inbounds %struct.UT_hash_handle, ptr %1498, i32 0, i32 0
  %1500 = load ptr, ptr %1499, align 8, !tbaa !36
  %1501 = getelementptr inbounds %struct.UT_hash_table, ptr %1500, i32 0, i32 9
  store i32 1, ptr %1501, align 4, !tbaa !66
  br label %1502

1502:                                             ; preds = %1496, %1482
  br label %1503

1503:                                             ; preds = %1502
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %1504

1504:                                             ; preds = %1503
  br label %1505

1505:                                             ; preds = %1504
  br label %1506

1506:                                             ; preds = %1505, %1250, %1236
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %1507

1507:                                             ; preds = %1506
  br label %1508

1508:                                             ; preds = %1507
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %1509

1509:                                             ; preds = %1508
  br label %1510

1510:                                             ; preds = %1509
  br label %1511

1511:                                             ; preds = %1510
  br label %1512

1512:                                             ; preds = %1511
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %1513

1513:                                             ; preds = %1512
  br label %1514

1514:                                             ; preds = %1513
  br label %1527

1515:                                             ; preds = %650
  %1516 = load ptr, ptr %6, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.otfcc_Options, ptr %1516, i32 0, i32 24
  %1518 = load ptr, ptr %1517, align 8, !tbaa !74
  %1519 = getelementptr inbounds %struct.otfcc_ILogger, ptr %1518, i32 0, i32 6
  %1520 = load ptr, ptr %1519, align 8, !tbaa !77
  %1521 = load ptr, ptr %6, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.otfcc_Options, ptr %1521, i32 0, i32 24
  %1523 = load ptr, ptr %1522, align 8, !tbaa !74
  %1524 = call ptr @sdsempty()
  %1525 = load ptr, ptr %12, align 8, !tbaa !5
  %1526 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %1524, ptr noundef @.str, ptr noundef %1525)
  call void %1520(ptr noundef %1523, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %1526)
  br label %1527

1527:                                             ; preds = %1515, %1514
  br label %1528

1528:                                             ; preds = %1527, %149
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  store i32 0, ptr %9, align 4
  br label %1529

1529:                                             ; preds = %1528, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %1530 = load i32, ptr %9, align 4
  switch i32 %1530, label %2044 [
    i32 0, label %1531
    i32 4, label %1532
  ]

1531:                                             ; preds = %1529
  br label %1532

1532:                                             ; preds = %1531, %1529
  %1533 = load i16, ptr %8, align 2, !tbaa !24
  %1534 = add i16 %1533, 1
  store i16 %1534, ptr %8, align 2, !tbaa !24
  br label %125, !llvm.loop !79

1535:                                             ; preds = %133
  br label %1536

1536:                                             ; preds = %1535
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %1537 = load ptr, ptr %7, align 8, !tbaa !5
  %1538 = icmp ne ptr %1537, null
  br i1 %1538, label %1539, label %1809

1539:                                             ; preds = %1536
  store i32 1, ptr %35, align 4, !tbaa !31
  store i32 1, ptr %33, align 4, !tbaa !31
  %1540 = load ptr, ptr %7, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1540, i32 0, i32 3
  store ptr %1541, ptr %41, align 8, !tbaa !5
  br label %1542

1542:                                             ; preds = %1805, %1539
  %1543 = load i32, ptr %33, align 4, !tbaa !31
  %1544 = icmp ne i32 %1543, 0
  br i1 %1544, label %1545, label %1808

1545:                                             ; preds = %1542
  %1546 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1546, ptr %38, align 8, !tbaa !5
  store ptr null, ptr %41, align 8, !tbaa !5
  store ptr null, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !31
  br label %1547

1547:                                             ; preds = %1775, %1545
  %1548 = load ptr, ptr %38, align 8, !tbaa !5
  %1549 = icmp ne ptr %1548, null
  br i1 %1549, label %1550, label %1777

1550:                                             ; preds = %1547
  %1551 = load i32, ptr %34, align 4, !tbaa !31
  %1552 = add i32 %1551, 1
  store i32 %1552, ptr %34, align 4, !tbaa !31
  %1553 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1553, ptr %39, align 8, !tbaa !5
  store i32 0, ptr %36, align 4, !tbaa !31
  store i32 0, ptr %32, align 4, !tbaa !31
  br label %1554

1554:                                             ; preds = %1583, %1550
  %1555 = load i32, ptr %32, align 4, !tbaa !31
  %1556 = load i32, ptr %35, align 4, !tbaa !31
  %1557 = icmp ult i32 %1555, %1556
  br i1 %1557, label %1558, label %1586

1558:                                             ; preds = %1554
  %1559 = load i32, ptr %36, align 4, !tbaa !31
  %1560 = add i32 %1559, 1
  store i32 %1560, ptr %36, align 4, !tbaa !31
  %1561 = load ptr, ptr %39, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.UT_hash_handle, ptr %1561, i32 0, i32 2
  %1563 = load ptr, ptr %1562, align 8, !tbaa !60
  %1564 = icmp ne ptr %1563, null
  br i1 %1564, label %1565, label %1576

1565:                                             ; preds = %1558
  %1566 = load ptr, ptr %39, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.UT_hash_handle, ptr %1566, i32 0, i32 2
  %1568 = load ptr, ptr %1567, align 8, !tbaa !60
  %1569 = load ptr, ptr %7, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1569, i32 0, i32 3
  %1571 = getelementptr inbounds %struct.UT_hash_handle, ptr %1570, i32 0, i32 0
  %1572 = load ptr, ptr %1571, align 8, !tbaa !36
  %1573 = getelementptr inbounds %struct.UT_hash_table, ptr %1572, i32 0, i32 5
  %1574 = load i64, ptr %1573, align 8, !tbaa !44
  %1575 = getelementptr inbounds i8, ptr %1568, i64 %1574
  br label %1577

1576:                                             ; preds = %1558
  br label %1577

1577:                                             ; preds = %1576, %1565
  %1578 = phi ptr [ %1575, %1565 ], [ null, %1576 ]
  store ptr %1578, ptr %39, align 8, !tbaa !5
  %1579 = load ptr, ptr %39, align 8, !tbaa !5
  %1580 = icmp eq ptr %1579, null
  br i1 %1580, label %1581, label %1582

1581:                                             ; preds = %1577
  br label %1586

1582:                                             ; preds = %1577
  br label %1583

1583:                                             ; preds = %1582
  %1584 = load i32, ptr %32, align 4, !tbaa !31
  %1585 = add i32 %1584, 1
  store i32 %1585, ptr %32, align 4, !tbaa !31
  br label %1554, !llvm.loop !80

1586:                                             ; preds = %1581, %1554
  %1587 = load i32, ptr %35, align 4, !tbaa !31
  store i32 %1587, ptr %37, align 4, !tbaa !31
  br label %1588

1588:                                             ; preds = %1773, %1586
  %1589 = load i32, ptr %36, align 4, !tbaa !31
  %1590 = icmp ne i32 %1589, 0
  br i1 %1590, label %1599, label %1591

1591:                                             ; preds = %1588
  %1592 = load i32, ptr %37, align 4, !tbaa !31
  %1593 = icmp ne i32 %1592, 0
  br i1 %1593, label %1594, label %1597

1594:                                             ; preds = %1591
  %1595 = load ptr, ptr %39, align 8, !tbaa !5
  %1596 = icmp ne ptr %1595, null
  br label %1597

1597:                                             ; preds = %1594, %1591
  %1598 = phi i1 [ false, %1591 ], [ %1596, %1594 ]
  br label %1599

1599:                                             ; preds = %1597, %1588
  %1600 = phi i1 [ true, %1588 ], [ %1598, %1597 ]
  br i1 %1600, label %1601, label %1775

1601:                                             ; preds = %1599
  %1602 = load i32, ptr %36, align 4, !tbaa !31
  %1603 = icmp eq i32 %1602, 0
  br i1 %1603, label %1604, label %1626

1604:                                             ; preds = %1601
  %1605 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1605, ptr %40, align 8, !tbaa !5
  %1606 = load ptr, ptr %39, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct.UT_hash_handle, ptr %1606, i32 0, i32 2
  %1608 = load ptr, ptr %1607, align 8, !tbaa !60
  %1609 = icmp ne ptr %1608, null
  br i1 %1609, label %1610, label %1621

1610:                                             ; preds = %1604
  %1611 = load ptr, ptr %39, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.UT_hash_handle, ptr %1611, i32 0, i32 2
  %1613 = load ptr, ptr %1612, align 8, !tbaa !60
  %1614 = load ptr, ptr %7, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1614, i32 0, i32 3
  %1616 = getelementptr inbounds %struct.UT_hash_handle, ptr %1615, i32 0, i32 0
  %1617 = load ptr, ptr %1616, align 8, !tbaa !36
  %1618 = getelementptr inbounds %struct.UT_hash_table, ptr %1617, i32 0, i32 5
  %1619 = load i64, ptr %1618, align 8, !tbaa !44
  %1620 = getelementptr inbounds i8, ptr %1613, i64 %1619
  br label %1622

1621:                                             ; preds = %1604
  br label %1622

1622:                                             ; preds = %1621, %1610
  %1623 = phi ptr [ %1620, %1610 ], [ null, %1621 ]
  store ptr %1623, ptr %39, align 8, !tbaa !5
  %1624 = load i32, ptr %37, align 4, !tbaa !31
  %1625 = add i32 %1624, -1
  store i32 %1625, ptr %37, align 4, !tbaa !31
  br label %1729

1626:                                             ; preds = %1601
  %1627 = load i32, ptr %37, align 4, !tbaa !31
  %1628 = icmp eq i32 %1627, 0
  br i1 %1628, label %1632, label %1629

1629:                                             ; preds = %1626
  %1630 = load ptr, ptr %39, align 8, !tbaa !5
  %1631 = icmp eq ptr %1630, null
  br i1 %1631, label %1632, label %1658

1632:                                             ; preds = %1629, %1626
  %1633 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1633, ptr %40, align 8, !tbaa !5
  %1634 = load ptr, ptr %38, align 8, !tbaa !5
  %1635 = icmp ne ptr %1634, null
  br i1 %1635, label %1636, label %1655

1636:                                             ; preds = %1632
  %1637 = load ptr, ptr %38, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.UT_hash_handle, ptr %1637, i32 0, i32 2
  %1639 = load ptr, ptr %1638, align 8, !tbaa !60
  %1640 = icmp ne ptr %1639, null
  br i1 %1640, label %1641, label %1652

1641:                                             ; preds = %1636
  %1642 = load ptr, ptr %38, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.UT_hash_handle, ptr %1642, i32 0, i32 2
  %1644 = load ptr, ptr %1643, align 8, !tbaa !60
  %1645 = load ptr, ptr %7, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1645, i32 0, i32 3
  %1647 = getelementptr inbounds %struct.UT_hash_handle, ptr %1646, i32 0, i32 0
  %1648 = load ptr, ptr %1647, align 8, !tbaa !36
  %1649 = getelementptr inbounds %struct.UT_hash_table, ptr %1648, i32 0, i32 5
  %1650 = load i64, ptr %1649, align 8, !tbaa !44
  %1651 = getelementptr inbounds i8, ptr %1644, i64 %1650
  br label %1653

1652:                                             ; preds = %1636
  br label %1653

1653:                                             ; preds = %1652, %1641
  %1654 = phi ptr [ %1651, %1641 ], [ null, %1652 ]
  store ptr %1654, ptr %38, align 8, !tbaa !5
  br label %1655

1655:                                             ; preds = %1653, %1632
  %1656 = load i32, ptr %36, align 4, !tbaa !31
  %1657 = add i32 %1656, -1
  store i32 %1657, ptr %36, align 4, !tbaa !31
  br label %1728

1658:                                             ; preds = %1629
  %1659 = load ptr, ptr %38, align 8, !tbaa !5
  %1660 = load ptr, ptr %7, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1660, i32 0, i32 3
  %1662 = getelementptr inbounds %struct.UT_hash_handle, ptr %1661, i32 0, i32 0
  %1663 = load ptr, ptr %1662, align 8, !tbaa !36
  %1664 = getelementptr inbounds %struct.UT_hash_table, ptr %1663, i32 0, i32 5
  %1665 = load i64, ptr %1664, align 8, !tbaa !44
  %1666 = sub i64 0, %1665
  %1667 = getelementptr inbounds i8, ptr %1659, i64 %1666
  %1668 = load ptr, ptr %39, align 8, !tbaa !5
  %1669 = load ptr, ptr %7, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1669, i32 0, i32 3
  %1671 = getelementptr inbounds %struct.UT_hash_handle, ptr %1670, i32 0, i32 0
  %1672 = load ptr, ptr %1671, align 8, !tbaa !36
  %1673 = getelementptr inbounds %struct.UT_hash_table, ptr %1672, i32 0, i32 5
  %1674 = load i64, ptr %1673, align 8, !tbaa !44
  %1675 = sub i64 0, %1674
  %1676 = getelementptr inbounds i8, ptr %1668, i64 %1675
  %1677 = call i32 @by_gid(ptr noundef %1667, ptr noundef %1676)
  %1678 = icmp sle i32 %1677, 0
  br i1 %1678, label %1679, label %1705

1679:                                             ; preds = %1658
  %1680 = load ptr, ptr %38, align 8, !tbaa !5
  store ptr %1680, ptr %40, align 8, !tbaa !5
  %1681 = load ptr, ptr %38, align 8, !tbaa !5
  %1682 = icmp ne ptr %1681, null
  br i1 %1682, label %1683, label %1702

1683:                                             ; preds = %1679
  %1684 = load ptr, ptr %38, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.UT_hash_handle, ptr %1684, i32 0, i32 2
  %1686 = load ptr, ptr %1685, align 8, !tbaa !60
  %1687 = icmp ne ptr %1686, null
  br i1 %1687, label %1688, label %1699

1688:                                             ; preds = %1683
  %1689 = load ptr, ptr %38, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.UT_hash_handle, ptr %1689, i32 0, i32 2
  %1691 = load ptr, ptr %1690, align 8, !tbaa !60
  %1692 = load ptr, ptr %7, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1692, i32 0, i32 3
  %1694 = getelementptr inbounds %struct.UT_hash_handle, ptr %1693, i32 0, i32 0
  %1695 = load ptr, ptr %1694, align 8, !tbaa !36
  %1696 = getelementptr inbounds %struct.UT_hash_table, ptr %1695, i32 0, i32 5
  %1697 = load i64, ptr %1696, align 8, !tbaa !44
  %1698 = getelementptr inbounds i8, ptr %1691, i64 %1697
  br label %1700

1699:                                             ; preds = %1683
  br label %1700

1700:                                             ; preds = %1699, %1688
  %1701 = phi ptr [ %1698, %1688 ], [ null, %1699 ]
  store ptr %1701, ptr %38, align 8, !tbaa !5
  br label %1702

1702:                                             ; preds = %1700, %1679
  %1703 = load i32, ptr %36, align 4, !tbaa !31
  %1704 = add i32 %1703, -1
  store i32 %1704, ptr %36, align 4, !tbaa !31
  br label %1727

1705:                                             ; preds = %1658
  %1706 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1706, ptr %40, align 8, !tbaa !5
  %1707 = load ptr, ptr %39, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct.UT_hash_handle, ptr %1707, i32 0, i32 2
  %1709 = load ptr, ptr %1708, align 8, !tbaa !60
  %1710 = icmp ne ptr %1709, null
  br i1 %1710, label %1711, label %1722

1711:                                             ; preds = %1705
  %1712 = load ptr, ptr %39, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.UT_hash_handle, ptr %1712, i32 0, i32 2
  %1714 = load ptr, ptr %1713, align 8, !tbaa !60
  %1715 = load ptr, ptr %7, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1715, i32 0, i32 3
  %1717 = getelementptr inbounds %struct.UT_hash_handle, ptr %1716, i32 0, i32 0
  %1718 = load ptr, ptr %1717, align 8, !tbaa !36
  %1719 = getelementptr inbounds %struct.UT_hash_table, ptr %1718, i32 0, i32 5
  %1720 = load i64, ptr %1719, align 8, !tbaa !44
  %1721 = getelementptr inbounds i8, ptr %1714, i64 %1720
  br label %1723

1722:                                             ; preds = %1705
  br label %1723

1723:                                             ; preds = %1722, %1711
  %1724 = phi ptr [ %1721, %1711 ], [ null, %1722 ]
  store ptr %1724, ptr %39, align 8, !tbaa !5
  %1725 = load i32, ptr %37, align 4, !tbaa !31
  %1726 = add i32 %1725, -1
  store i32 %1726, ptr %37, align 4, !tbaa !31
  br label %1727

1727:                                             ; preds = %1723, %1702
  br label %1728

1728:                                             ; preds = %1727, %1655
  br label %1729

1729:                                             ; preds = %1728, %1622
  %1730 = load ptr, ptr %42, align 8, !tbaa !5
  %1731 = icmp ne ptr %1730, null
  br i1 %1731, label %1732, label %1750

1732:                                             ; preds = %1729
  %1733 = load ptr, ptr %40, align 8, !tbaa !5
  %1734 = icmp ne ptr %1733, null
  br i1 %1734, label %1735, label %1745

1735:                                             ; preds = %1732
  %1736 = load ptr, ptr %40, align 8, !tbaa !5
  %1737 = load ptr, ptr %7, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1737, i32 0, i32 3
  %1739 = getelementptr inbounds %struct.UT_hash_handle, ptr %1738, i32 0, i32 0
  %1740 = load ptr, ptr %1739, align 8, !tbaa !36
  %1741 = getelementptr inbounds %struct.UT_hash_table, ptr %1740, i32 0, i32 5
  %1742 = load i64, ptr %1741, align 8, !tbaa !44
  %1743 = sub i64 0, %1742
  %1744 = getelementptr inbounds i8, ptr %1736, i64 %1743
  br label %1746

1745:                                             ; preds = %1732
  br label %1746

1746:                                             ; preds = %1745, %1735
  %1747 = phi ptr [ %1744, %1735 ], [ null, %1745 ]
  %1748 = load ptr, ptr %42, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.UT_hash_handle, ptr %1748, i32 0, i32 2
  store ptr %1747, ptr %1749, align 8, !tbaa !60
  br label %1752

1750:                                             ; preds = %1729
  %1751 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1751, ptr %41, align 8, !tbaa !5
  br label %1752

1752:                                             ; preds = %1750, %1746
  %1753 = load ptr, ptr %40, align 8, !tbaa !5
  %1754 = icmp ne ptr %1753, null
  br i1 %1754, label %1755, label %1773

1755:                                             ; preds = %1752
  %1756 = load ptr, ptr %42, align 8, !tbaa !5
  %1757 = icmp ne ptr %1756, null
  br i1 %1757, label %1758, label %1768

1758:                                             ; preds = %1755
  %1759 = load ptr, ptr %42, align 8, !tbaa !5
  %1760 = load ptr, ptr %7, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1760, i32 0, i32 3
  %1762 = getelementptr inbounds %struct.UT_hash_handle, ptr %1761, i32 0, i32 0
  %1763 = load ptr, ptr %1762, align 8, !tbaa !36
  %1764 = getelementptr inbounds %struct.UT_hash_table, ptr %1763, i32 0, i32 5
  %1765 = load i64, ptr %1764, align 8, !tbaa !44
  %1766 = sub i64 0, %1765
  %1767 = getelementptr inbounds i8, ptr %1759, i64 %1766
  br label %1769

1768:                                             ; preds = %1755
  br label %1769

1769:                                             ; preds = %1768, %1758
  %1770 = phi ptr [ %1767, %1758 ], [ null, %1768 ]
  %1771 = load ptr, ptr %40, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.UT_hash_handle, ptr %1771, i32 0, i32 1
  store ptr %1770, ptr %1772, align 8, !tbaa !81
  br label %1773

1773:                                             ; preds = %1769, %1752
  %1774 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1774, ptr %42, align 8, !tbaa !5
  br label %1588, !llvm.loop !82

1775:                                             ; preds = %1599
  %1776 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1776, ptr %38, align 8, !tbaa !5
  br label %1547, !llvm.loop !83

1777:                                             ; preds = %1547
  %1778 = load ptr, ptr %42, align 8, !tbaa !5
  %1779 = icmp ne ptr %1778, null
  br i1 %1779, label %1780, label %1783

1780:                                             ; preds = %1777
  %1781 = load ptr, ptr %42, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.UT_hash_handle, ptr %1781, i32 0, i32 2
  store ptr null, ptr %1782, align 8, !tbaa !60
  br label %1783

1783:                                             ; preds = %1780, %1777
  %1784 = load i32, ptr %34, align 4, !tbaa !31
  %1785 = icmp ule i32 %1784, 1
  br i1 %1785, label %1786, label %1805

1786:                                             ; preds = %1783
  store i32 0, ptr %33, align 4, !tbaa !31
  %1787 = load ptr, ptr %42, align 8, !tbaa !5
  %1788 = load ptr, ptr %7, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1788, i32 0, i32 3
  %1790 = getelementptr inbounds %struct.UT_hash_handle, ptr %1789, i32 0, i32 0
  %1791 = load ptr, ptr %1790, align 8, !tbaa !36
  %1792 = getelementptr inbounds %struct.UT_hash_table, ptr %1791, i32 0, i32 4
  store ptr %1787, ptr %1792, align 8, !tbaa !57
  br label %1793

1793:                                             ; preds = %1786
  %1794 = load ptr, ptr %41, align 8, !tbaa !5
  %1795 = load ptr, ptr %7, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1795, i32 0, i32 3
  %1797 = getelementptr inbounds %struct.UT_hash_handle, ptr %1796, i32 0, i32 0
  %1798 = load ptr, ptr %1797, align 8, !tbaa !36
  %1799 = getelementptr inbounds %struct.UT_hash_table, ptr %1798, i32 0, i32 5
  %1800 = load i64, ptr %1799, align 8, !tbaa !44
  %1801 = sub i64 0, %1800
  %1802 = getelementptr inbounds i8, ptr %1794, i64 %1801
  store ptr %1802, ptr %7, align 8, !tbaa !5
  br label %1803

1803:                                             ; preds = %1793
  br label %1804

1804:                                             ; preds = %1803
  br label %1805

1805:                                             ; preds = %1804, %1783
  %1806 = load i32, ptr %35, align 4, !tbaa !31
  %1807 = mul i32 %1806, 2
  store i32 %1807, ptr %35, align 4, !tbaa !31
  br label %1542, !llvm.loop !84

1808:                                             ; preds = %1542
  br label %1809

1809:                                             ; preds = %1808, %1536
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  br label %1810

1810:                                             ; preds = %1809
  br label %1811

1811:                                             ; preds = %1810
  %1812 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_LigCaretTable, ptr @otl_iLigCaretTable, i32 0, i32 12), align 8, !tbaa !85
  %1813 = load ptr, ptr %5, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.table_GDEF, ptr %1813, i32 0, i32 2
  call void %1812(ptr noundef %1814)
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %1815 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1815, ptr %43, align 8, !tbaa !5
  %1816 = load ptr, ptr %7, align 8, !tbaa !5
  %1817 = icmp ne ptr %1816, null
  br i1 %1817, label %1818, label %1823

1818:                                             ; preds = %1811
  %1819 = load ptr, ptr %7, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1819, i32 0, i32 3
  %1821 = getelementptr inbounds %struct.UT_hash_handle, ptr %1820, i32 0, i32 2
  %1822 = load ptr, ptr %1821, align 8, !tbaa !55
  br label %1824

1823:                                             ; preds = %1811
  br label %1824

1824:                                             ; preds = %1823, %1818
  %1825 = phi ptr [ %1822, %1818 ], [ null, %1823 ]
  store ptr %1825, ptr %44, align 8, !tbaa !5
  br label %1826

1826:                                             ; preds = %2040, %1824
  %1827 = load ptr, ptr %43, align 8, !tbaa !5
  %1828 = icmp ne ptr %1827, null
  br i1 %1828, label %1829, label %2042

1829:                                             ; preds = %1826
  call void @llvm.lifetime.start.p0(i64 40, ptr %45) #9
  %1830 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %45, i32 0, i32 0
  %1831 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !87
  %1832 = load ptr, ptr %43, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1832, i32 0, i32 0
  %1834 = load i32, ptr %1833, align 8, !tbaa !50
  %1835 = trunc i32 %1834 to i16
  %1836 = load ptr, ptr %43, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1836, i32 0, i32 1
  %1838 = load ptr, ptr %1837, align 8, !tbaa !51
  %1839 = call { i64, ptr } %1831(i16 noundef zeroext %1835, ptr noundef %1838)
  %1840 = getelementptr inbounds { i64, ptr }, ptr %1830, i32 0, i32 0
  %1841 = extractvalue { i64, ptr } %1839, 0
  store i64 %1841, ptr %1840, align 8
  %1842 = getelementptr inbounds { i64, ptr }, ptr %1830, i32 0, i32 1
  %1843 = extractvalue { i64, ptr } %1839, 1
  store ptr %1843, ptr %1842, align 8
  %1844 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %45, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %1844, i8 0, i64 24, i1 false)
  %1845 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_CaretValueList, ptr @otl_iCaretValueList, i32 0, i32 2), align 8, !tbaa !52
  %1846 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %45, i32 0, i32 1
  %1847 = load ptr, ptr %43, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1847, i32 0, i32 2
  call void %1845(ptr noundef %1846, ptr noundef %1848)
  %1849 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_LigCaretTable, ptr @otl_iLigCaretTable, i32 0, i32 13), align 8, !tbaa !89
  %1850 = load ptr, ptr %5, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.table_GDEF, ptr %1850, i32 0, i32 2
  call void %1849(ptr noundef %1851, ptr noundef byval(%struct.otl_CaretValueRecord) align 8 %45)
  %1852 = load ptr, ptr %43, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1852, i32 0, i32 1
  %1854 = load ptr, ptr %1853, align 8, !tbaa !51
  call void @sdsfree(ptr noundef %1854)
  br label %1855

1855:                                             ; preds = %1829
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %1856 = load ptr, ptr %43, align 8, !tbaa !5
  %1857 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1856, i32 0, i32 3
  store ptr %1857, ptr %46, align 8, !tbaa !5
  %1858 = load ptr, ptr %46, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.UT_hash_handle, ptr %1858, i32 0, i32 1
  %1860 = load ptr, ptr %1859, align 8, !tbaa !81
  %1861 = icmp eq ptr %1860, null
  br i1 %1861, label %1862, label %1878

1862:                                             ; preds = %1855
  %1863 = load ptr, ptr %46, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.UT_hash_handle, ptr %1863, i32 0, i32 2
  %1865 = load ptr, ptr %1864, align 8, !tbaa !60
  %1866 = icmp eq ptr %1865, null
  br i1 %1866, label %1867, label %1878

1867:                                             ; preds = %1862
  %1868 = load ptr, ptr %7, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1868, i32 0, i32 3
  %1870 = getelementptr inbounds %struct.UT_hash_handle, ptr %1869, i32 0, i32 0
  %1871 = load ptr, ptr %1870, align 8, !tbaa !36
  %1872 = getelementptr inbounds %struct.UT_hash_table, ptr %1871, i32 0, i32 0
  %1873 = load ptr, ptr %1872, align 8, !tbaa !41
  call void @free(ptr noundef %1873) #9
  %1874 = load ptr, ptr %7, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1874, i32 0, i32 3
  %1876 = getelementptr inbounds %struct.UT_hash_handle, ptr %1875, i32 0, i32 0
  %1877 = load ptr, ptr %1876, align 8, !tbaa !36
  call void @free(ptr noundef %1877) #9
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %2026

1878:                                             ; preds = %1862, %1855
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  %1879 = load ptr, ptr %46, align 8, !tbaa !5
  %1880 = load ptr, ptr %7, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1880, i32 0, i32 3
  %1882 = getelementptr inbounds %struct.UT_hash_handle, ptr %1881, i32 0, i32 0
  %1883 = load ptr, ptr %1882, align 8, !tbaa !36
  %1884 = getelementptr inbounds %struct.UT_hash_table, ptr %1883, i32 0, i32 4
  %1885 = load ptr, ptr %1884, align 8, !tbaa !57
  %1886 = icmp eq ptr %1879, %1885
  br i1 %1886, label %1887, label %1903

1887:                                             ; preds = %1878
  %1888 = load ptr, ptr %46, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.UT_hash_handle, ptr %1888, i32 0, i32 1
  %1890 = load ptr, ptr %1889, align 8, !tbaa !81
  %1891 = load ptr, ptr %7, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1891, i32 0, i32 3
  %1893 = getelementptr inbounds %struct.UT_hash_handle, ptr %1892, i32 0, i32 0
  %1894 = load ptr, ptr %1893, align 8, !tbaa !36
  %1895 = getelementptr inbounds %struct.UT_hash_table, ptr %1894, i32 0, i32 5
  %1896 = load i64, ptr %1895, align 8, !tbaa !44
  %1897 = getelementptr inbounds i8, ptr %1890, i64 %1896
  %1898 = load ptr, ptr %7, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1898, i32 0, i32 3
  %1900 = getelementptr inbounds %struct.UT_hash_handle, ptr %1899, i32 0, i32 0
  %1901 = load ptr, ptr %1900, align 8, !tbaa !36
  %1902 = getelementptr inbounds %struct.UT_hash_table, ptr %1901, i32 0, i32 4
  store ptr %1897, ptr %1902, align 8, !tbaa !57
  br label %1903

1903:                                             ; preds = %1887, %1878
  %1904 = load ptr, ptr %46, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.UT_hash_handle, ptr %1904, i32 0, i32 1
  %1906 = load ptr, ptr %1905, align 8, !tbaa !81
  %1907 = icmp ne ptr %1906, null
  br i1 %1907, label %1908, label %1923

1908:                                             ; preds = %1903
  %1909 = load ptr, ptr %46, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.UT_hash_handle, ptr %1909, i32 0, i32 2
  %1911 = load ptr, ptr %1910, align 8, !tbaa !60
  %1912 = load ptr, ptr %46, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.UT_hash_handle, ptr %1912, i32 0, i32 1
  %1914 = load ptr, ptr %1913, align 8, !tbaa !81
  %1915 = load ptr, ptr %7, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1915, i32 0, i32 3
  %1917 = getelementptr inbounds %struct.UT_hash_handle, ptr %1916, i32 0, i32 0
  %1918 = load ptr, ptr %1917, align 8, !tbaa !36
  %1919 = getelementptr inbounds %struct.UT_hash_table, ptr %1918, i32 0, i32 5
  %1920 = load i64, ptr %1919, align 8, !tbaa !44
  %1921 = getelementptr inbounds i8, ptr %1914, i64 %1920
  %1922 = getelementptr inbounds %struct.UT_hash_handle, ptr %1921, i32 0, i32 2
  store ptr %1911, ptr %1922, align 8, !tbaa !60
  br label %1930

1923:                                             ; preds = %1903
  br label %1924

1924:                                             ; preds = %1923
  %1925 = load ptr, ptr %46, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.UT_hash_handle, ptr %1925, i32 0, i32 2
  %1927 = load ptr, ptr %1926, align 8, !tbaa !60
  store ptr %1927, ptr %7, align 8, !tbaa !5
  br label %1928

1928:                                             ; preds = %1924
  br label %1929

1929:                                             ; preds = %1928
  br label %1930

1930:                                             ; preds = %1929, %1908
  %1931 = load ptr, ptr %46, align 8, !tbaa !5
  %1932 = getelementptr inbounds %struct.UT_hash_handle, ptr %1931, i32 0, i32 2
  %1933 = load ptr, ptr %1932, align 8, !tbaa !60
  %1934 = icmp ne ptr %1933, null
  br i1 %1934, label %1935, label %1950

1935:                                             ; preds = %1930
  %1936 = load ptr, ptr %46, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.UT_hash_handle, ptr %1936, i32 0, i32 1
  %1938 = load ptr, ptr %1937, align 8, !tbaa !81
  %1939 = load ptr, ptr %46, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.UT_hash_handle, ptr %1939, i32 0, i32 2
  %1941 = load ptr, ptr %1940, align 8, !tbaa !60
  %1942 = load ptr, ptr %7, align 8, !tbaa !5
  %1943 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1942, i32 0, i32 3
  %1944 = getelementptr inbounds %struct.UT_hash_handle, ptr %1943, i32 0, i32 0
  %1945 = load ptr, ptr %1944, align 8, !tbaa !36
  %1946 = getelementptr inbounds %struct.UT_hash_table, ptr %1945, i32 0, i32 5
  %1947 = load i64, ptr %1946, align 8, !tbaa !44
  %1948 = getelementptr inbounds i8, ptr %1941, i64 %1947
  %1949 = getelementptr inbounds %struct.UT_hash_handle, ptr %1948, i32 0, i32 1
  store ptr %1938, ptr %1949, align 8, !tbaa !81
  br label %1950

1950:                                             ; preds = %1935, %1930
  br label %1951

1951:                                             ; preds = %1950
  %1952 = load ptr, ptr %46, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.UT_hash_handle, ptr %1952, i32 0, i32 7
  %1954 = load i32, ptr %1953, align 4, !tbaa !70
  %1955 = load ptr, ptr %7, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1955, i32 0, i32 3
  %1957 = getelementptr inbounds %struct.UT_hash_handle, ptr %1956, i32 0, i32 0
  %1958 = load ptr, ptr %1957, align 8, !tbaa !36
  %1959 = getelementptr inbounds %struct.UT_hash_table, ptr %1958, i32 0, i32 1
  %1960 = load i32, ptr %1959, align 8, !tbaa !39
  %1961 = sub i32 %1960, 1
  %1962 = and i32 %1954, %1961
  store i32 %1962, ptr %47, align 4, !tbaa !31
  br label %1963

1963:                                             ; preds = %1951
  br label %1964

1964:                                             ; preds = %1963
  br label %1965

1965:                                             ; preds = %1964
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %1966 = load ptr, ptr %7, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %1966, i32 0, i32 3
  %1968 = getelementptr inbounds %struct.UT_hash_handle, ptr %1967, i32 0, i32 0
  %1969 = load ptr, ptr %1968, align 8, !tbaa !36
  %1970 = getelementptr inbounds %struct.UT_hash_table, ptr %1969, i32 0, i32 0
  %1971 = load ptr, ptr %1970, align 8, !tbaa !41
  %1972 = load i32, ptr %47, align 4, !tbaa !31
  %1973 = zext i32 %1972 to i64
  %1974 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1971, i64 %1973
  store ptr %1974, ptr %48, align 8, !tbaa !5
  %1975 = load ptr, ptr %48, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1975, i32 0, i32 1
  %1977 = load i32, ptr %1976, align 8, !tbaa !62
  %1978 = add i32 %1977, -1
  store i32 %1978, ptr %1976, align 8, !tbaa !62
  %1979 = load ptr, ptr %48, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1979, i32 0, i32 0
  %1981 = load ptr, ptr %1980, align 8, !tbaa !42
  %1982 = load ptr, ptr %46, align 8, !tbaa !5
  %1983 = icmp eq ptr %1981, %1982
  br i1 %1983, label %1984, label %1990

1984:                                             ; preds = %1965
  %1985 = load ptr, ptr %46, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.UT_hash_handle, ptr %1985, i32 0, i32 4
  %1987 = load ptr, ptr %1986, align 8, !tbaa !69
  %1988 = load ptr, ptr %48, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1988, i32 0, i32 0
  store ptr %1987, ptr %1989, align 8, !tbaa !42
  br label %1990

1990:                                             ; preds = %1984, %1965
  %1991 = load ptr, ptr %46, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.UT_hash_handle, ptr %1991, i32 0, i32 3
  %1993 = load ptr, ptr %1992, align 8, !tbaa !64
  %1994 = icmp ne ptr %1993, null
  br i1 %1994, label %1995, label %2003

1995:                                             ; preds = %1990
  %1996 = load ptr, ptr %46, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.UT_hash_handle, ptr %1996, i32 0, i32 4
  %1998 = load ptr, ptr %1997, align 8, !tbaa !69
  %1999 = load ptr, ptr %46, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.UT_hash_handle, ptr %1999, i32 0, i32 3
  %2001 = load ptr, ptr %2000, align 8, !tbaa !64
  %2002 = getelementptr inbounds %struct.UT_hash_handle, ptr %2001, i32 0, i32 4
  store ptr %1998, ptr %2002, align 8, !tbaa !69
  br label %2003

2003:                                             ; preds = %1995, %1990
  %2004 = load ptr, ptr %46, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.UT_hash_handle, ptr %2004, i32 0, i32 4
  %2006 = load ptr, ptr %2005, align 8, !tbaa !69
  %2007 = icmp ne ptr %2006, null
  br i1 %2007, label %2008, label %2016

2008:                                             ; preds = %2003
  %2009 = load ptr, ptr %46, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.UT_hash_handle, ptr %2009, i32 0, i32 3
  %2011 = load ptr, ptr %2010, align 8, !tbaa !64
  %2012 = load ptr, ptr %46, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.UT_hash_handle, ptr %2012, i32 0, i32 4
  %2014 = load ptr, ptr %2013, align 8, !tbaa !69
  %2015 = getelementptr inbounds %struct.UT_hash_handle, ptr %2014, i32 0, i32 3
  store ptr %2011, ptr %2015, align 8, !tbaa !64
  br label %2016

2016:                                             ; preds = %2008, %2003
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  br label %2017

2017:                                             ; preds = %2016
  br label %2018

2018:                                             ; preds = %2017
  %2019 = load ptr, ptr %7, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %2019, i32 0, i32 3
  %2021 = getelementptr inbounds %struct.UT_hash_handle, ptr %2020, i32 0, i32 0
  %2022 = load ptr, ptr %2021, align 8, !tbaa !36
  %2023 = getelementptr inbounds %struct.UT_hash_table, ptr %2022, i32 0, i32 3
  %2024 = load i32, ptr %2023, align 8, !tbaa !61
  %2025 = add i32 %2024, -1
  store i32 %2025, ptr %2023, align 8, !tbaa !61
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %2026

2026:                                             ; preds = %2018, %1867
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %2027

2027:                                             ; preds = %2026
  br label %2028

2028:                                             ; preds = %2027
  %2029 = load ptr, ptr %43, align 8, !tbaa !5
  call void @free(ptr noundef %2029) #9
  store ptr null, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 40, ptr %45) #9
  br label %2030

2030:                                             ; preds = %2028
  %2031 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %2031, ptr %43, align 8, !tbaa !5
  %2032 = load ptr, ptr %44, align 8, !tbaa !5
  %2033 = icmp ne ptr %2032, null
  br i1 %2033, label %2034, label %2039

2034:                                             ; preds = %2030
  %2035 = load ptr, ptr %44, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.GDEF_ligcaret_hash, ptr %2035, i32 0, i32 3
  %2037 = getelementptr inbounds %struct.UT_hash_handle, ptr %2036, i32 0, i32 2
  %2038 = load ptr, ptr %2037, align 8, !tbaa !55
  br label %2040

2039:                                             ; preds = %2030
  br label %2040

2040:                                             ; preds = %2039, %2034
  %2041 = phi ptr [ %2038, %2034 ], [ null, %2039 ]
  store ptr %2041, ptr %44, align 8, !tbaa !5
  br label %1826, !llvm.loop !90

2042:                                             ; preds = %1826
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  br label %2043

2043:                                             ; preds = %2042, %118, %59
  ret void

2044:                                             ; preds = %1529
  unreachable
}

declare void @fontop_consolidateClassDef(ptr noundef, ptr noundef, ptr noundef) #1

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

declare ptr @sdsdup(ptr noundef) #1

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

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

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

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

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

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

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

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

declare ptr @sdsempty() #1

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

declare void @sdsfree(ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 264}
!10 = !{!"_caryll_font", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 0}
!13 = !{!"", !6, i64 0, !6, i64 8, !14, i64 16}
!14 = !{!"", !15, i64 0, !15, i64 8, !6, i64 16}
!15 = !{!"long", !7, i64 0}
!16 = !{!17, !6, i64 112}
!17 = !{!"__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}
!18 = !{!19, !20, i64 0}
!19 = !{!"", !20, i64 0, !11, i64 4, !20, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"short", !7, i64 0}
!21 = !{!17, !6, i64 56}
!22 = !{!13, !6, i64 8}
!23 = !{!13, !15, i64 16}
!24 = !{!20, !20, i64 0}
!25 = !{!26, !6, i64 88}
!26 = !{!"otfcc_GlyphOrderPackage", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96}
!27 = !{!13, !6, i64 32}
!28 = !{!29, !20, i64 4}
!29 = !{!"", !30, i64 0, !14, i64 16}
!30 = !{!"otfcc_Handle", !11, i64 0, !20, i64 4, !6, i64 8}
!31 = !{!11, !11, i64 0}
!32 = !{!29, !6, i64 8}
!33 = !{!7, !7, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !6, i64 40}
!37 = !{!"", !11, i64 0, !6, i64 8, !14, i64 16, !38, i64 40}
!38 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !11, i64 48, !11, i64 52}
!39 = !{!40, !11, i64 8}
!40 = !{!"UT_hash_table", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !6, i64 24, !15, i64 32, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56}
!41 = !{!40, !6, i64 0}
!42 = !{!43, !6, i64 0}
!43 = !{!"UT_hash_bucket", !6, i64 0, !11, i64 8, !11, i64 12}
!44 = !{!40, !15, i64 32}
!45 = !{!37, !11, i64 92}
!46 = !{!37, !11, i64 88}
!47 = !{!37, !6, i64 80}
!48 = !{!37, !6, i64 72}
!49 = distinct !{!49, !35}
!50 = !{!37, !11, i64 0}
!51 = !{!37, !6, i64 8}
!52 = !{!53, !6, i64 16}
!53 = !{!"__caryll_vectorinterface_otl_CaretValueList", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144}
!54 = distinct !{!54, !35}
!55 = !{!37, !6, i64 56}
!56 = !{!37, !6, i64 48}
!57 = !{!40, !6, i64 24}
!58 = !{!40, !11, i64 12}
!59 = !{!40, !11, i64 56}
!60 = !{!38, !6, i64 16}
!61 = !{!40, !11, i64 16}
!62 = !{!43, !11, i64 8}
!63 = !{!37, !6, i64 64}
!64 = !{!38, !6, i64 24}
!65 = !{!43, !11, i64 12}
!66 = !{!40, !11, i64 52}
!67 = !{!40, !11, i64 40}
!68 = !{!40, !11, i64 44}
!69 = !{!38, !6, i64 32}
!70 = !{!38, !11, i64 52}
!71 = distinct !{!71, !35}
!72 = distinct !{!72, !35}
!73 = !{!40, !11, i64 48}
!74 = !{!75, !6, i64 32}
!75 = !{!"", !76, i64 0, !76, i64 1, !76, i64 2, !76, i64 3, !76, i64 4, !76, i64 5, !76, i64 6, !76, i64 7, !76, i64 8, !76, i64 9, !76, i64 10, !76, i64 11, !76, i64 12, !76, i64 13, !76, i64 14, !76, i64 15, !76, i64 16, !76, i64 17, !76, i64 18, !76, i64 19, !76, i64 20, !76, i64 21, !76, i64 22, !6, i64 24, !6, i64 32}
!76 = !{!"_Bool", !7, i64 0}
!77 = !{!78, !6, i64 48}
!78 = !{!"otfcc_ILogger", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!79 = distinct !{!79, !35}
!80 = distinct !{!80, !35}
!81 = !{!38, !6, i64 8}
!82 = distinct !{!82, !35}
!83 = distinct !{!83, !35}
!84 = distinct !{!84, !35}
!85 = !{!86, !6, i64 96}
!86 = !{!"__caryll_vectorinterface_otl_LigCaretTable", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144}
!87 = !{!88, !6, i64 80}
!88 = !{!"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}
!89 = !{!86, !6, i64 104}
!90 = distinct !{!90, !35}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.__otfcc_IClassDef = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_CaretValueList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LigCaretTable = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_CaretValueRecord = type { %struct.otfcc_Handle, %struct.otl_CaretValueList }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.otl_CaretValueList = type { i64, i64, ptr }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otl_iClassDef = external local_unnamed_addr constant %struct.__otfcc_IClassDef, align 8
@otfcc_pkgGlyphOrder = external local_unnamed_addr constant %struct.otfcc_GlyphOrderPackage, align 8
@otl_iCaretValueList = external local_unnamed_addr constant %struct.__caryll_vectorinterface_otl_CaretValueList, align 8
@.str = external hidden unnamed_addr constant [65 x i8], align 1
@otl_iLigCaretTable = external local_unnamed_addr constant %struct.__caryll_vectorinterface_otl_LigCaretTable, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local void @consolidate_GDEF(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 {
  %4 = alloca i32, align 4
  %5 = alloca %struct.otl_CaretValueRecord, align 8
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.loopexit, label %6

6:                                                ; preds = %3
  %7 = getelementptr inbounds i8, ptr %0, i64 264
  %8 = load ptr, ptr %7, align 8, !tbaa !5
  %9 = icmp ne ptr %8, null
  %10 = icmp ne ptr %1, null
  %or.cond = and i1 %10, %9
  br i1 %or.cond, label %11, label %.loopexit

11:                                               ; preds = %6
  %12 = load ptr, ptr %1, align 8, !tbaa !11
  %.not690 = icmp eq ptr %12, null
  br i1 %.not690, label %20, label %13

13:                                               ; preds = %11
  tail call void @fontop_consolidateClassDef(ptr noundef nonnull %0, ptr noundef nonnull %12, ptr noundef %2) #10
  %14 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 112), align 8, !tbaa !15
  %15 = load ptr, ptr %1, align 8, !tbaa !11
  tail call void %14(ptr noundef %15) #10
  %16 = load ptr, ptr %1, align 8, !tbaa !11
  %17 = load i16, ptr %16, align 8, !tbaa !17
  %.not691 = icmp eq i16 %17, 0
  br i1 %.not691, label %18, label %20

18:                                               ; preds = %13
  %19 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 56), align 8, !tbaa !20
  tail call void %19(ptr noundef nonnull %16) #10
  store ptr null, ptr %1, align 8, !tbaa !11
  br label %20

20:                                               ; preds = %13, %18, %11
  %21 = getelementptr inbounds i8, ptr %1, i64 8
  %22 = load ptr, ptr %21, align 8, !tbaa !21
  %.not692 = icmp eq ptr %22, null
  br i1 %.not692, label %30, label %23

23:                                               ; preds = %20
  tail call void @fontop_consolidateClassDef(ptr noundef nonnull %0, ptr noundef nonnull %22, ptr noundef %2) #10
  %24 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 112), align 8, !tbaa !15
  %25 = load ptr, ptr %21, align 8, !tbaa !21
  tail call void %24(ptr noundef %25) #10
  %26 = load ptr, ptr %21, align 8, !tbaa !21
  %27 = load i16, ptr %26, align 8, !tbaa !17
  %.not693 = icmp eq i16 %27, 0
  br i1 %.not693, label %28, label %30

28:                                               ; preds = %23
  %29 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iClassDef, i64 56), align 8, !tbaa !20
  tail call void %29(ptr noundef nonnull %26) #10
  store ptr null, ptr %21, align 8, !tbaa !21
  br label %30

30:                                               ; preds = %23, %28, %20
  %31 = getelementptr inbounds i8, ptr %1, i64 16
  %32 = load i64, ptr %31, align 8, !tbaa !22
  %.not694 = icmp eq i64 %32, 0
  br i1 %.not694, label %.loopexit, label %.lr.ph797

.lr.ph797:                                        ; preds = %30
  %33 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_pkgGlyphOrder, i64 88), align 8, !tbaa !23
  %34 = getelementptr inbounds i8, ptr %1, i64 32
  %35 = getelementptr inbounds i8, ptr %2, i64 32
  %36 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCaretValueList, i64 16), align 8
  br label %38

._crit_edge798:                                   ; preds = %315
  %.not695 = icmp eq ptr %.3, null
  br i1 %.not695, label %.thread745, label %320

.thread745:                                       ; preds = %._crit_edge798
  %37 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iLigCaretTable, i64 96), align 8, !tbaa !25
  tail call void %37(ptr noundef nonnull %31) #10
  br label %.loopexit

38:                                               ; preds = %.lr.ph797, %315
  %39 = phi i64 [ 0, %.lr.ph797 ], [ %317, %315 ]
  %.0795 = phi ptr [ null, %.lr.ph797 ], [ %.3, %315 ]
  %.0575794 = phi i16 [ 0, %.lr.ph797 ], [ %316, %315 ]
  %40 = load ptr, ptr %7, align 8, !tbaa !5
  %41 = load ptr, ptr %34, align 8, !tbaa !27
  %42 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %41, i64 %39
  %43 = tail call zeroext i1 %33(ptr noundef %40, ptr noundef %42) #10
  br i1 %43, label %44, label %315

44:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #10
  %45 = load ptr, ptr %34, align 8, !tbaa !27
  %46 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %45, i64 %39, i32 0, i32 1
  %47 = load i16, ptr %46, align 4, !tbaa !28
  %48 = zext i16 %47 to i32
  store i32 %48, ptr %4, align 4, !tbaa !31
  %49 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %45, i64 %39, i32 0, i32 2
  %50 = load ptr, ptr %49, align 8, !tbaa !32
  %51 = tail call ptr @sdsdup(ptr noundef %50) #10
  %.not717 = icmp eq ptr %51, null
  br i1 %.not717, label %314, label %52

52:                                               ; preds = %44
  %53 = and i16 %47, -256
  %54 = zext i16 %53 to i32
  %55 = and i16 %47, 255
  %56 = zext nneg i16 %55 to i32
  %57 = add nuw nsw i32 %54, 17973517
  %58 = add nuw nsw i32 %57, %56
  %59 = xor i32 %58, 522093
  %60 = sub nuw nsw i32 -1622558010, %59
  %61 = shl i32 %59, 8
  %62 = xor i32 %60, %61
  %63 = add nuw nsw i32 %59, %62
  %64 = sub nuw nsw i32 -17973517, %63
  %65 = lshr i32 %62, 13
  %66 = xor i32 %64, %65
  %67 = add nuw nsw i32 %62, %66
  %68 = sub nsw i32 %59, %67
  %69 = lshr i32 %66, 12
  %70 = xor i32 %68, %69
  %71 = add nuw nsw i32 %66, %70
  %72 = sub nuw i32 %62, %71
  %73 = shl i32 %70, 16
  %74 = xor i32 %72, %73
  %75 = add i32 %70, %74
  %76 = sub i32 %66, %75
  %77 = lshr i32 %74, 5
  %78 = xor i32 %76, %77
  %79 = add i32 %74, %78
  %80 = sub i32 %70, %79
  %81 = lshr i32 %78, 3
  %82 = xor i32 %80, %81
  %83 = add i32 %78, %82
  %84 = sub i32 %74, %83
  %85 = shl i32 %82, 10
  %86 = xor i32 %84, %85
  %87 = add i32 %82, %86
  %88 = sub i32 %78, %87
  %89 = lshr i32 %86, 15
  %90 = xor i32 %88, %89
  %.not718 = icmp eq ptr %.0795, null
  br i1 %.not718, label %.loopexit780, label %91

91:                                               ; preds = %52
  %92 = getelementptr inbounds i8, ptr %.0795, i64 40
  %93 = load ptr, ptr %92, align 8, !tbaa !33
  %94 = getelementptr inbounds i8, ptr %93, i64 8
  %95 = load i32, ptr %94, align 8, !tbaa !36
  %96 = add i32 %95, -1
  %97 = and i32 %96, %90
  %98 = load ptr, ptr %93, align 8, !tbaa !38
  %99 = zext i32 %97 to i64
  %100 = getelementptr inbounds %struct.UT_hash_bucket, ptr %98, i64 %99
  %101 = load ptr, ptr %100, align 8, !tbaa !39
  %.not719 = icmp eq ptr %101, null
  br i1 %.not719, label %.loopexit780, label %.lr.ph

.lr.ph:                                           ; preds = %91
  %102 = getelementptr inbounds i8, ptr %93, i64 32
  %103 = load i64, ptr %102, align 8, !tbaa !41
  %104 = sub i64 0, %103
  %105 = getelementptr inbounds i8, ptr %101, i64 %104
  %106 = getelementptr inbounds i8, ptr %93, i64 32
  br label %107

107:                                              ; preds = %122, %.lr.ph
  %.1606786 = phi ptr [ %105, %.lr.ph ], [ %125, %122 ]
  %108 = getelementptr inbounds i8, ptr %.1606786, i64 92
  %109 = load i32, ptr %108, align 4, !tbaa !42
  %110 = icmp eq i32 %109, %90
  br i1 %110, label %111, label %119

111:                                              ; preds = %107
  %112 = getelementptr inbounds i8, ptr %.1606786, i64 88
  %113 = load i32, ptr %112, align 8, !tbaa !43
  %114 = icmp eq i32 %113, 4
  br i1 %114, label %115, label %119

115:                                              ; preds = %111
  %116 = getelementptr inbounds i8, ptr %.1606786, i64 80
  %117 = load ptr, ptr %116, align 8, !tbaa !44
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %117, ptr noundef nonnull dereferenceable(4) %4, i64 4)
  %118 = icmp eq i32 %bcmp, 0
  br i1 %118, label %308, label %119

119:                                              ; preds = %115, %111, %107
  %120 = getelementptr inbounds i8, ptr %.1606786, i64 72
  %121 = load ptr, ptr %120, align 8, !tbaa !45
  %.not721 = icmp eq ptr %121, null
  br i1 %.not721, label %.loopexit780, label %122

122:                                              ; preds = %119
  %123 = load i64, ptr %106, align 8, !tbaa !41
  %124 = sub i64 0, %123
  %125 = getelementptr inbounds i8, ptr %121, i64 %124
  br label %107, !llvm.loop !46

.loopexit780:                                     ; preds = %119, %91, %52
  %126 = tail call ptr @__caryll_allocate_clean(i64 noundef 96, i64 noundef 42)
  store i32 %48, ptr %126, align 8, !tbaa !48
  %127 = getelementptr inbounds i8, ptr %126, i64 8
  store ptr %51, ptr %127, align 8, !tbaa !49
  %128 = getelementptr inbounds i8, ptr %126, i64 16
  %129 = load ptr, ptr %34, align 8, !tbaa !27
  %130 = getelementptr inbounds %struct.otl_CaretValueRecord, ptr %129, i64 %39, i32 1
  tail call void %36(ptr noundef nonnull %128, ptr noundef nonnull %130) #10
  %131 = getelementptr inbounds i8, ptr %126, i64 3
  %132 = load i8, ptr %131, align 1, !tbaa !50
  %133 = zext i8 %132 to i32
  %134 = shl nuw i32 %133, 24
  %135 = getelementptr inbounds i8, ptr %126, i64 2
  %136 = load i8, ptr %135, align 1, !tbaa !50
  %137 = zext i8 %136 to i32
  %138 = shl nuw nsw i32 %137, 16
  %139 = getelementptr inbounds i8, ptr %126, i64 1
  %140 = load i8, ptr %139, align 1, !tbaa !50
  %141 = zext i8 %140 to i32
  %142 = shl nuw nsw i32 %141, 8
  %143 = load i8, ptr %126, align 1, !tbaa !50
  %144 = zext i8 %143 to i32
  %145 = add i32 %134, 17973517
  %146 = add i32 %145, %138
  %147 = add i32 %146, %142
  %148 = add i32 %147, %144
  %149 = xor i32 %148, 522093
  %150 = sub i32 -1622558010, %149
  %151 = shl i32 %149, 8
  %152 = xor i32 %150, %151
  %153 = add i32 %149, %152
  %154 = sub i32 -17973517, %153
  %155 = lshr i32 %152, 13
  %156 = xor i32 %154, %155
  %157 = add i32 %152, %156
  %158 = sub i32 %149, %157
  %159 = lshr i32 %156, 12
  %160 = xor i32 %158, %159
  %161 = add i32 %156, %160
  %162 = sub i32 %152, %161
  %163 = shl i32 %160, 16
  %164 = xor i32 %162, %163
  %165 = add i32 %160, %164
  %166 = sub i32 %156, %165
  %167 = lshr i32 %164, 5
  %168 = xor i32 %166, %167
  %169 = add i32 %164, %168
  %170 = sub i32 %160, %169
  %171 = lshr i32 %168, 3
  %172 = xor i32 %170, %171
  %173 = add i32 %168, %172
  %174 = sub i32 %164, %173
  %175 = shl i32 %172, 10
  %176 = xor i32 %174, %175
  %177 = add i32 %172, %176
  %178 = sub i32 %168, %177
  %179 = lshr i32 %176, 15
  %180 = xor i32 %178, %179
  %181 = getelementptr inbounds i8, ptr %126, i64 40
  %182 = getelementptr inbounds i8, ptr %126, i64 92
  store i32 %180, ptr %182, align 4, !tbaa !42
  %183 = getelementptr inbounds i8, ptr %126, i64 80
  store ptr %126, ptr %183, align 8, !tbaa !44
  %184 = getelementptr inbounds i8, ptr %126, i64 88
  store i32 4, ptr %184, align 8, !tbaa !43
  br i1 %.not718, label %185, label %199

185:                                              ; preds = %.loopexit780
  %186 = getelementptr inbounds i8, ptr %126, i64 48
  %187 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #11
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %186, i8 0, i64 16, i1 false)
  store ptr %187, ptr %181, align 8, !tbaa !33
  %.not723 = icmp eq ptr %187, null
  br i1 %.not723, label %188, label %189

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

189:                                              ; preds = %185
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %187, i8 0, i64 64, i1 false)
  %190 = load ptr, ptr %181, align 8, !tbaa !33
  %191 = getelementptr inbounds i8, ptr %190, i64 24
  store ptr %181, ptr %191, align 8, !tbaa !51
  %192 = getelementptr inbounds i8, ptr %190, i64 8
  store i32 32, ptr %192, align 8, !tbaa !36
  %193 = getelementptr inbounds i8, ptr %190, i64 12
  store i32 5, ptr %193, align 4, !tbaa !52
  %194 = getelementptr inbounds i8, ptr %190, i64 32
  store i64 40, ptr %194, align 8, !tbaa !41
  %195 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #11
  store ptr %195, ptr %190, align 8, !tbaa !38
  %196 = getelementptr inbounds i8, ptr %190, i64 56
  store i32 -1609490463, ptr %196, align 8, !tbaa !53
  %.not724 = icmp eq ptr %195, null
  br i1 %.not724, label %197, label %198

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

198:                                              ; preds = %189
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %195, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %181, align 8, !tbaa !33
  br label %211

199:                                              ; preds = %.loopexit780
  %200 = getelementptr inbounds i8, ptr %.0795, i64 40
  %201 = load ptr, ptr %200, align 8, !tbaa !33
  store ptr %201, ptr %181, align 8, !tbaa !33
  %202 = getelementptr inbounds i8, ptr %126, i64 56
  store ptr null, ptr %202, align 8, !tbaa !54
  %203 = getelementptr inbounds i8, ptr %201, i64 24
  %204 = load ptr, ptr %203, align 8, !tbaa !51
  %205 = getelementptr inbounds i8, ptr %201, i64 32
  %206 = load i64, ptr %205, align 8, !tbaa !41
  %207 = sub i64 0, %206
  %208 = getelementptr inbounds i8, ptr %204, i64 %207
  %209 = getelementptr inbounds i8, ptr %126, i64 48
  store ptr %208, ptr %209, align 8, !tbaa !55
  %210 = getelementptr inbounds i8, ptr %204, i64 16
  store ptr %126, ptr %210, align 8, !tbaa !56
  store ptr %181, ptr %203, align 8, !tbaa !51
  br label %211

211:                                              ; preds = %198, %199
  %212 = phi ptr [ %201, %199 ], [ %.pre, %198 ]
  %.1 = phi ptr [ %.0795, %199 ], [ %126, %198 ]
  %213 = getelementptr inbounds i8, ptr %212, i64 16
  %214 = load i32, ptr %213, align 8, !tbaa !57
  %215 = add i32 %214, 1
  store i32 %215, ptr %213, align 8, !tbaa !57
  %216 = getelementptr inbounds i8, ptr %212, i64 8
  %217 = load i32, ptr %216, align 8, !tbaa !36
  %218 = add i32 %217, -1
  %219 = and i32 %218, %180
  %220 = load ptr, ptr %212, align 8, !tbaa !38
  %221 = zext i32 %219 to i64
  %222 = getelementptr inbounds %struct.UT_hash_bucket, ptr %220, i64 %221
  %223 = getelementptr inbounds i8, ptr %222, i64 8
  %224 = load i32, ptr %223, align 8, !tbaa !58
  %225 = add i32 %224, 1
  store i32 %225, ptr %223, align 8, !tbaa !58
  %226 = load ptr, ptr %222, align 8, !tbaa !39
  %227 = getelementptr inbounds i8, ptr %126, i64 72
  store ptr %226, ptr %227, align 8, !tbaa !45
  %228 = getelementptr inbounds i8, ptr %126, i64 64
  store ptr null, ptr %228, align 8, !tbaa !59
  %.not725 = icmp eq ptr %226, null
  br i1 %.not725, label %231, label %229

229:                                              ; preds = %211
  %230 = getelementptr inbounds i8, ptr %226, i64 24
  store ptr %181, ptr %230, align 8, !tbaa !60
  br label %231

231:                                              ; preds = %229, %211
  store ptr %181, ptr %222, align 8, !tbaa !39
  %232 = getelementptr inbounds i8, ptr %222, i64 12
  %233 = load i32, ptr %232, align 4, !tbaa !61
  %234 = mul i32 %233, 10
  %235 = add i32 %234, 10
  %.not726 = icmp ult i32 %225, %235
  br i1 %.not726, label %314, label %236

236:                                              ; preds = %231
  %237 = getelementptr inbounds i8, ptr %212, i64 52
  %238 = load i32, ptr %237, align 4, !tbaa !62
  %.not727 = icmp eq i32 %238, 0
  br i1 %.not727, label %239, label %314

239:                                              ; preds = %236
  %240 = zext i32 %217 to i64
  %241 = shl nuw nsw i64 %240, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %241)
  %.not728 = icmp eq ptr %calloc, null
  br i1 %.not728, label %242, label %243

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

243:                                              ; preds = %239
  %244 = load ptr, ptr %181, align 8, !tbaa !33
  %245 = getelementptr inbounds i8, ptr %244, i64 16
  %246 = load i32, ptr %245, align 8, !tbaa !57
  %247 = getelementptr inbounds i8, ptr %244, i64 12
  %248 = load i32, ptr %247, align 4, !tbaa !52
  %249 = add i32 %248, 1
  %250 = lshr i32 %246, %249
  %251 = getelementptr inbounds i8, ptr %244, i64 8
  %252 = load i32, ptr %251, align 8, !tbaa !36
  %253 = shl i32 %252, 1
  %254 = add i32 %253, -1
  %255 = and i32 %254, %246
  %.not729 = icmp ne i32 %255, 0
  %256 = zext i1 %.not729 to i32
  %257 = add i32 %250, %256
  %258 = getelementptr inbounds i8, ptr %244, i64 40
  store i32 %257, ptr %258, align 8, !tbaa !63
  %259 = getelementptr inbounds i8, ptr %244, i64 44
  store i32 0, ptr %259, align 4, !tbaa !64
  %.not829 = icmp eq i32 %252, 0
  %.pre834 = load ptr, ptr %244, align 8, !tbaa !38
  br i1 %.not829, label %._crit_edge793, label %.lr.ph792

.lr.ph792:                                        ; preds = %243
  %wide.trip.count = zext i32 %252 to i64
  br label %260

260:                                              ; preds = %.lr.ph792, %._crit_edge
  %261 = phi i32 [ 0, %.lr.ph792 ], [ %287, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.lr.ph792 ], [ %indvars.iv.next, %._crit_edge ]
  %262 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre834, i64 %indvars.iv
  %263 = load ptr, ptr %262, align 8, !tbaa !39
  %.not730787 = icmp eq ptr %263, null
  br i1 %.not730787, label %._crit_edge, label %.lr.ph789

.lr.ph789:                                        ; preds = %260, %286
  %264 = phi i32 [ %281, %286 ], [ %261, %260 ]
  %.0624788 = phi ptr [ %266, %286 ], [ %263, %260 ]
  %265 = getelementptr inbounds i8, ptr %.0624788, i64 32
  %266 = load ptr, ptr %265, align 8, !tbaa !65
  %267 = getelementptr inbounds i8, ptr %.0624788, i64 52
  %268 = load i32, ptr %267, align 4, !tbaa !66
  %269 = and i32 %268, %254
  %270 = zext i32 %269 to i64
  %271 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %270
  %272 = getelementptr inbounds i8, ptr %271, i64 8
  %273 = load i32, ptr %272, align 8, !tbaa !58
  %274 = add i32 %273, 1
  store i32 %274, ptr %272, align 8, !tbaa !58
  %275 = icmp ugt i32 %274, %257
  br i1 %275, label %276, label %280

276:                                              ; preds = %.lr.ph789
  %277 = add i32 %264, 1
  store i32 %277, ptr %259, align 4, !tbaa !64
  %278 = udiv i32 %274, %257
  %279 = getelementptr inbounds i8, ptr %271, i64 12
  store i32 %278, ptr %279, align 4, !tbaa !61
  br label %280

280:                                              ; preds = %276, %.lr.ph789
  %281 = phi i32 [ %277, %276 ], [ %264, %.lr.ph789 ]
  %282 = getelementptr inbounds i8, ptr %.0624788, i64 24
  store ptr null, ptr %282, align 8, !tbaa !60
  %283 = load ptr, ptr %271, align 8, !tbaa !39
  store ptr %283, ptr %265, align 8, !tbaa !65
  %.not731 = icmp eq ptr %283, null
  br i1 %.not731, label %286, label %284

284:                                              ; preds = %280
  %285 = getelementptr inbounds i8, ptr %283, i64 24
  store ptr %.0624788, ptr %285, align 8, !tbaa !60
  br label %286

286:                                              ; preds = %284, %280
  store ptr %.0624788, ptr %271, align 8, !tbaa !39
  %.not730 = icmp eq ptr %266, null
  br i1 %.not730, label %._crit_edge, label %.lr.ph789, !llvm.loop !67

._crit_edge:                                      ; preds = %286, %260
  %287 = phi i32 [ %261, %260 ], [ %281, %286 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge793, label %260, !llvm.loop !68

._crit_edge793:                                   ; preds = %._crit_edge, %243
  tail call void @free(ptr noundef %.pre834) #10
  %288 = load ptr, ptr %181, align 8, !tbaa !33
  %289 = getelementptr inbounds i8, ptr %288, i64 8
  %290 = load i32, ptr %289, align 8, !tbaa !36
  %291 = shl i32 %290, 1
  store i32 %291, ptr %289, align 8, !tbaa !36
  %292 = getelementptr inbounds i8, ptr %288, i64 12
  %293 = load i32, ptr %292, align 4, !tbaa !52
  %294 = add i32 %293, 1
  store i32 %294, ptr %292, align 4, !tbaa !52
  store ptr %calloc, ptr %288, align 8, !tbaa !38
  %295 = getelementptr inbounds i8, ptr %288, i64 44
  %296 = load i32, ptr %295, align 4, !tbaa !64
  %297 = getelementptr inbounds i8, ptr %288, i64 16
  %298 = load i32, ptr %297, align 8, !tbaa !57
  %299 = lshr i32 %298, 1
  %300 = icmp ugt i32 %296, %299
  %301 = getelementptr inbounds i8, ptr %288, i64 48
  br i1 %300, label %302, label %.thread734

.thread734:                                       ; preds = %._crit_edge793
  store i32 0, ptr %301, align 8, !tbaa !69
  br label %314

302:                                              ; preds = %._crit_edge793
  %303 = load i32, ptr %301, align 8, !tbaa !69
  %304 = add i32 %303, 1
  store i32 %304, ptr %301, align 8, !tbaa !69
  %305 = icmp ugt i32 %304, 1
  br i1 %305, label %306, label %314

306:                                              ; preds = %302
  %307 = getelementptr inbounds i8, ptr %288, i64 52
  store i32 1, ptr %307, align 4, !tbaa !62
  br label %314

308:                                              ; preds = %115
  %309 = load ptr, ptr %35, align 8, !tbaa !70
  %310 = getelementptr inbounds i8, ptr %309, i64 48
  %311 = load ptr, ptr %310, align 8, !tbaa !73
  %312 = tail call ptr @sdsempty() #10
  %313 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %312, ptr noundef nonnull @.str, ptr noundef nonnull %51) #10
  tail call void %311(ptr noundef %309, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %313) #10
  br label %314

314:                                              ; preds = %.thread734, %231, %236, %302, %306, %308, %44
  %.2 = phi ptr [ %.0795, %308 ], [ %.0795, %44 ], [ %.1, %306 ], [ %.1, %302 ], [ %.1, %236 ], [ %.1, %231 ], [ %.1, %.thread734 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #10
  br label %315

315:                                              ; preds = %38, %314
  %.3 = phi ptr [ %.2, %314 ], [ %.0795, %38 ]
  %316 = add i16 %.0575794, 1
  %317 = zext i16 %316 to i64
  %318 = load i64, ptr %31, align 8, !tbaa !22
  %319 = icmp ugt i64 %318, %317
  br i1 %319, label %38, label %._crit_edge798, !llvm.loop !75

320:                                              ; preds = %._crit_edge798
  %321 = getelementptr inbounds i8, ptr %.3, i64 40
  %322 = getelementptr inbounds i8, ptr %.3, i64 40
  br label %.lr.ph814

.preheader:                                       ; preds = %410
  %323 = shl i32 %.0600819870, 1
  %.not704809 = icmp eq ptr %.2582.ph, null
  br i1 %.not704809, label %.thread852, label %.lr.ph814

.lr.ph814:                                        ; preds = %320, %.preheader
  %.0600819870 = phi i32 [ 1, %320 ], [ %323, %.preheader ]
  %.0580820869 = phi ptr [ %321, %320 ], [ %.2582.ph, %.preheader ]
  %.not830 = icmp eq i32 %.0600819870, 0
  br label %324

.loopexit779:                                     ; preds = %334
  %.not704 = icmp eq ptr %.2587, null
  br i1 %.not704, label %._crit_edge815, label %324, !llvm.loop !76

324:                                              ; preds = %.lr.ph814, %.loopexit779
  %.0578813 = phi ptr [ null, %.lr.ph814 ], [ %.1579, %.loopexit779 ]
  %.1581812 = phi ptr [ null, %.lr.ph814 ], [ %.2582.ph, %.loopexit779 ]
  %.0589811 = phi ptr [ %.0580820869, %.lr.ph814 ], [ %.2587, %.loopexit779 ]
  %.0601810 = phi i32 [ 0, %.lr.ph814 ], [ %325, %.loopexit779 ]
  %325 = add i32 %.0601810, 1
  br i1 %.not830, label %.thread735.preheader, label %.lr.ph803

.lr.ph803:                                        ; preds = %324, %329
  %.0585801 = phi ptr [ %333, %329 ], [ %.0589811, %324 ]
  %.0596800 = phi i32 [ %326, %329 ], [ 0, %324 ]
  %326 = add nuw i32 %.0596800, 1
  %327 = getelementptr inbounds i8, ptr %.0585801, i64 16
  %328 = load ptr, ptr %327, align 8, !tbaa !56
  %.not706 = icmp eq ptr %328, null
  br i1 %.not706, label %.thread735.preheader, label %329

329:                                              ; preds = %.lr.ph803
  %330 = load ptr, ptr %322, align 8, !tbaa !33
  %331 = getelementptr inbounds i8, ptr %330, i64 32
  %332 = load i64, ptr %331, align 8, !tbaa !41
  %333 = getelementptr inbounds i8, ptr %328, i64 %332
  %exitcond833.not = icmp eq i32 %326, %.0600819870
  br i1 %exitcond833.not, label %.thread735.preheader, label %.lr.ph803, !llvm.loop !77

.thread735.preheader:                             ; preds = %329, %.lr.ph803, %324
  %.2598.ph = phi i32 [ 0, %324 ], [ %326, %.lr.ph803 ], [ %.0600819870, %329 ]
  %.2587.ph = phi ptr [ %.0589811, %324 ], [ null, %.lr.ph803 ], [ %333, %329 ]
  br label %.thread735.outer

.thread735.outer:                                 ; preds = %.thread735.outer.backedge, %.thread735.preheader
  %.2598.ph871 = phi i32 [ %.2598.ph, %.thread735.preheader ], [ %.3599, %.thread735.outer.backedge ]
  %.0594.ph = phi i32 [ %.0600819870, %.thread735.preheader ], [ %.1595, %.thread735.outer.backedge ]
  %.1590.ph = phi ptr [ %.0589811, %.thread735.preheader ], [ %.4593, %.thread735.outer.backedge ]
  %.2587.ph872 = phi ptr [ %.2587.ph, %.thread735.preheader ], [ %.3588, %.thread735.outer.backedge ]
  %.2582.ph = phi ptr [ %.1581812, %.thread735.preheader ], [ %.2582.ph.be, %.thread735.outer.backedge ]
  %.1579.ph = phi ptr [ %.0578813, %.thread735.preheader ], [ %.0584, %.thread735.outer.backedge ]
  br label %.thread735

.thread735:                                       ; preds = %.thread735.outer, %.thread736.thread
  %.2598 = phi i32 [ %.3599, %.thread736.thread ], [ %.2598.ph871, %.thread735.outer ]
  %.0594 = phi i32 [ %.1595, %.thread736.thread ], [ %.0594.ph, %.thread735.outer ]
  %.1590 = phi ptr [ %.4593, %.thread736.thread ], [ %.1590.ph, %.thread735.outer ]
  %.2587 = phi ptr [ %.3588, %.thread736.thread ], [ %.2587.ph872, %.thread735.outer ]
  %.1579 = phi ptr [ %.0584, %.thread736.thread ], [ %.1579.ph, %.thread735.outer ]
  %cond = icmp eq i32 %.2598, 0
  br i1 %cond, label %334, label %348

334:                                              ; preds = %.thread735
  %335 = icmp ne i32 %.0594, 0
  %336 = icmp ne ptr %.2587, null
  %337 = select i1 %335, i1 %336, i1 false
  br i1 %337, label %.critedge, label %.loopexit779

.critedge:                                        ; preds = %334
  %338 = getelementptr inbounds i8, ptr %.2587, i64 16
  %339 = load ptr, ptr %338, align 8, !tbaa !56
  %.not713 = icmp eq ptr %339, null
  br i1 %.not713, label %345, label %340

340:                                              ; preds = %.critedge
  %341 = load ptr, ptr %322, align 8, !tbaa !33
  %342 = getelementptr inbounds i8, ptr %341, i64 32
  %343 = load i64, ptr %342, align 8, !tbaa !41
  %344 = getelementptr inbounds i8, ptr %339, i64 %343
  br label %345

345:                                              ; preds = %.critedge, %340
  %346 = phi ptr [ %344, %340 ], [ null, %.critedge ]
  %347 = add i32 %.0594, -1
  br label %393

348:                                              ; preds = %.thread735
  %349 = icmp eq i32 %.0594, 0
  %350 = icmp eq ptr %.2587, null
  %or.cond3 = select i1 %349, i1 true, i1 %350
  br i1 %or.cond3, label %351, label %362

351:                                              ; preds = %348
  %.not711 = icmp eq ptr %.1590, null
  br i1 %.not711, label %360, label %352

352:                                              ; preds = %351
  %353 = getelementptr inbounds i8, ptr %.1590, i64 16
  %354 = load ptr, ptr %353, align 8, !tbaa !56
  %.not712 = icmp eq ptr %354, null
  br i1 %.not712, label %360, label %355

355:                                              ; preds = %352
  %356 = load ptr, ptr %322, align 8, !tbaa !33
  %357 = getelementptr inbounds i8, ptr %356, i64 32
  %358 = load i64, ptr %357, align 8, !tbaa !41
  %359 = getelementptr inbounds i8, ptr %354, i64 %358
  br label %360

360:                                              ; preds = %355, %352, %351
  %.2591 = phi ptr [ null, %351 ], [ %359, %355 ], [ null, %352 ]
  %361 = add i32 %.2598, -1
  br label %393

362:                                              ; preds = %348
  %363 = load ptr, ptr %322, align 8, !tbaa !33
  %364 = getelementptr inbounds i8, ptr %363, i64 32
  %365 = load i64, ptr %364, align 8, !tbaa !41
  %366 = sub i64 0, %365
  %367 = getelementptr inbounds i8, ptr %.1590, i64 %366
  %368 = getelementptr inbounds i8, ptr %.2587, i64 %366
  %369 = tail call i32 @by_gid(ptr noundef %367, ptr noundef %368)
  %370 = icmp slt i32 %369, 1
  br i1 %370, label %371, label %382

371:                                              ; preds = %362
  %.not709 = icmp eq ptr %.1590, null
  br i1 %.not709, label %380, label %372

372:                                              ; preds = %371
  %373 = getelementptr inbounds i8, ptr %.1590, i64 16
  %374 = load ptr, ptr %373, align 8, !tbaa !56
  %.not710 = icmp eq ptr %374, null
  br i1 %.not710, label %380, label %375

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

380:                                              ; preds = %375, %372, %371
  %.3592 = phi ptr [ null, %371 ], [ %379, %375 ], [ null, %372 ]
  %381 = add i32 %.2598, -1
  br label %393

382:                                              ; preds = %362
  %383 = getelementptr inbounds i8, ptr %.2587, i64 16
  %384 = load ptr, ptr %383, align 8, !tbaa !56
  %.not708 = icmp eq ptr %384, null
  br i1 %.not708, label %390, label %385

385:                                              ; preds = %382
  %386 = load ptr, ptr %322, align 8, !tbaa !33
  %387 = getelementptr inbounds i8, ptr %386, i64 32
  %388 = load i64, ptr %387, align 8, !tbaa !41
  %389 = getelementptr inbounds i8, ptr %384, i64 %388
  br label %390

390:                                              ; preds = %382, %385
  %391 = phi ptr [ %389, %385 ], [ null, %382 ]
  %392 = add i32 %.0594, -1
  br label %393

393:                                              ; preds = %360, %390, %380, %345
  %.3599 = phi i32 [ 0, %345 ], [ %361, %360 ], [ %381, %380 ], [ %.2598, %390 ]
  %.1595 = phi i32 [ %347, %345 ], [ %.0594, %360 ], [ %.0594, %380 ], [ %392, %390 ]
  %.4593 = phi ptr [ %.1590, %345 ], [ %.2591, %360 ], [ %.3592, %380 ], [ %.1590, %390 ]
  %.3588 = phi ptr [ %346, %345 ], [ %.2587, %360 ], [ %.2587, %380 ], [ %391, %390 ]
  %.0584 = phi ptr [ %.2587, %345 ], [ %.1590, %360 ], [ %.1590, %380 ], [ %.2587, %390 ]
  %.not714 = icmp eq ptr %.1579, null
  %.not716 = icmp eq ptr %.0584, null
  br i1 %.not714, label %396, label %394

394:                                              ; preds = %393
  br i1 %.not716, label %.thread736.thread, label %397

.thread736.thread:                                ; preds = %394
  %395 = getelementptr inbounds i8, ptr %.1579, i64 16
  store ptr null, ptr %395, align 8, !tbaa !56
  br label %.thread735, !llvm.loop !78

396:                                              ; preds = %393
  br i1 %.not716, label %.thread735.outer.backedge, label %405

397:                                              ; preds = %394
  %398 = load ptr, ptr %322, align 8, !tbaa !33
  %399 = getelementptr inbounds i8, ptr %398, i64 32
  %400 = load i64, ptr %399, align 8, !tbaa !41
  %401 = sub i64 0, %400
  %402 = getelementptr inbounds i8, ptr %.0584, i64 %401
  %403 = getelementptr inbounds i8, ptr %.1579, i64 16
  store ptr %402, ptr %403, align 8, !tbaa !56
  %404 = getelementptr inbounds i8, ptr %.1579, i64 %401
  br label %405

405:                                              ; preds = %396, %397
  %.3583739744 = phi ptr [ %.2582.ph, %397 ], [ %.0584, %396 ]
  %406 = phi ptr [ %404, %397 ], [ null, %396 ]
  %407 = getelementptr inbounds i8, ptr %.0584, i64 8
  store ptr %406, ptr %407, align 8, !tbaa !79
  br label %.thread735.outer.backedge

.thread735.outer.backedge:                        ; preds = %405, %396
  %.2582.ph.be = phi ptr [ null, %396 ], [ %.3583739744, %405 ]
  br label %.thread735.outer, !llvm.loop !78

._crit_edge815:                                   ; preds = %.loopexit779
  %.not705 = icmp eq ptr %.1579, null
  br i1 %.not705, label %410, label %408

408:                                              ; preds = %._crit_edge815
  %409 = getelementptr inbounds i8, ptr %.1579, i64 16
  store ptr null, ptr %409, align 8, !tbaa !56
  br label %410

410:                                              ; preds = %408, %._crit_edge815
  %.0578.lcssa851 = phi ptr [ %.1579, %408 ], [ null, %._crit_edge815 ]
  %411 = icmp ult i32 %325, 2
  br i1 %411, label %.thread852, label %.preheader

.thread852:                                       ; preds = %.preheader, %410
  %.1581.lcssa850857 = phi ptr [ %.2582.ph, %410 ], [ null, %.preheader ]
  %.0578.lcssa851856 = phi ptr [ %.0578.lcssa851, %410 ], [ null, %.preheader ]
  %412 = getelementptr inbounds i8, ptr %.3, i64 40
  %413 = load ptr, ptr %412, align 8, !tbaa !33
  %414 = getelementptr inbounds i8, ptr %413, i64 24
  store ptr %.0578.lcssa851856, ptr %414, align 8, !tbaa !51
  %415 = getelementptr inbounds i8, ptr %413, i64 32
  %416 = load i64, ptr %415, align 8, !tbaa !41
  %417 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iLigCaretTable, i64 96), align 8, !tbaa !25
  tail call void %417(ptr noundef nonnull %31) #10
  %.not697 = icmp eq ptr %.1581.lcssa850857, null
  br i1 %.not697, label %.loopexit, label %.lr.ph827

.lr.ph827:                                        ; preds = %.thread852
  %418 = sub i64 0, %416
  %419 = getelementptr inbounds i8, ptr %.1581.lcssa850857, i64 %418
  %420 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 80), align 8, !tbaa !80
  %421 = getelementptr inbounds i8, ptr %5, i64 8
  %422 = getelementptr inbounds i8, ptr %5, i64 16
  %423 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iCaretValueList, i64 16), align 8
  %424 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iLigCaretTable, i64 104), align 8
  br label %425

425:                                              ; preds = %500, %.lr.ph827
  %.7825 = phi ptr [ %419, %.lr.ph827 ], [ %.9, %500 ]
  %.0577823 = phi ptr [ %419, %.lr.ph827 ], [ %.0576824, %500 ]
  %.0576824.in = getelementptr inbounds i8, ptr %.0577823, i64 56
  %.0576824 = load ptr, ptr %.0576824.in, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #10
  %426 = load i32, ptr %.0577823, align 8, !tbaa !48
  %427 = trunc i32 %426 to i16
  %428 = getelementptr inbounds i8, ptr %.0577823, i64 8
  %429 = load ptr, ptr %428, align 8, !tbaa !49
  %430 = call { i64, ptr } %420(i16 noundef zeroext %427, ptr noundef %429) #10
  %431 = extractvalue { i64, ptr } %430, 0
  store i64 %431, ptr %5, align 8
  %432 = extractvalue { i64, ptr } %430, 1
  store ptr %432, ptr %421, align 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %422, i8 0, i64 24, i1 false)
  %433 = getelementptr inbounds i8, ptr %.0577823, i64 16
  call void %423(ptr noundef nonnull %422, ptr noundef nonnull %433) #10
  call void %424(ptr noundef nonnull %31, ptr noundef nonnull byval(%struct.otl_CaretValueRecord) align 8 %5) #10
  %434 = load ptr, ptr %428, align 8, !tbaa !49
  call void @sdsfree(ptr noundef %434) #10
  %435 = getelementptr inbounds i8, ptr %.0577823, i64 40
  %436 = getelementptr inbounds i8, ptr %.0577823, i64 48
  %437 = load ptr, ptr %436, align 8, !tbaa !79
  %438 = icmp eq ptr %437, null
  br i1 %438, label %439, label %448

439:                                              ; preds = %425
  %440 = getelementptr inbounds i8, ptr %.0577823, i64 56
  %441 = load ptr, ptr %440, align 8, !tbaa !56
  %442 = icmp eq ptr %441, null
  br i1 %442, label %443, label %448

443:                                              ; preds = %439
  %444 = getelementptr inbounds i8, ptr %.7825, i64 40
  %445 = load ptr, ptr %444, align 8, !tbaa !33
  %446 = load ptr, ptr %445, align 8, !tbaa !38
  call void @free(ptr noundef %446) #10
  %447 = load ptr, ptr %444, align 8, !tbaa !33
  call void @free(ptr noundef %447) #10
  br label %500

448:                                              ; preds = %439, %425
  %449 = getelementptr inbounds i8, ptr %.7825, i64 40
  %450 = load ptr, ptr %449, align 8, !tbaa !33
  %451 = getelementptr inbounds i8, ptr %450, i64 24
  %452 = load ptr, ptr %451, align 8, !tbaa !51
  %453 = icmp eq ptr %435, %452
  br i1 %453, label %454, label %458

454:                                              ; preds = %448
  %455 = getelementptr inbounds i8, ptr %450, i64 32
  %456 = load i64, ptr %455, align 8, !tbaa !41
  %457 = getelementptr inbounds i8, ptr %437, i64 %456
  store ptr %457, ptr %451, align 8, !tbaa !51
  br label %458

458:                                              ; preds = %454, %448
  %459 = getelementptr inbounds i8, ptr %.0577823, i64 56
  %460 = load ptr, ptr %459, align 8, !tbaa !56
  br i1 %438, label %466, label %461

461:                                              ; preds = %458
  %462 = getelementptr inbounds i8, ptr %450, i64 32
  %463 = load i64, ptr %462, align 8, !tbaa !41
  %464 = getelementptr inbounds i8, ptr %437, i64 %463
  %465 = getelementptr inbounds i8, ptr %464, i64 16
  store ptr %460, ptr %465, align 8, !tbaa !56
  br label %466

466:                                              ; preds = %458, %461
  %.8 = phi ptr [ %.7825, %461 ], [ %460, %458 ]
  %.not700 = icmp eq ptr %460, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.8, i64 40
  %.pre836 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !33
  br i1 %.not700, label %._crit_edge835, label %467

467:                                              ; preds = %466
  %468 = getelementptr inbounds i8, ptr %.pre836, i64 32
  %469 = load i64, ptr %468, align 8, !tbaa !41
  %470 = getelementptr inbounds i8, ptr %460, i64 %469
  %471 = getelementptr inbounds i8, ptr %470, i64 8
  store ptr %437, ptr %471, align 8, !tbaa !79
  br label %._crit_edge835

._crit_edge835:                                   ; preds = %466, %467
  %472 = getelementptr inbounds i8, ptr %.0577823, i64 92
  %473 = load i32, ptr %472, align 4, !tbaa !66
  %474 = getelementptr inbounds i8, ptr %.pre836, i64 8
  %475 = load i32, ptr %474, align 8, !tbaa !36
  %476 = add i32 %475, -1
  %477 = and i32 %476, %473
  %478 = load ptr, ptr %.pre836, align 8, !tbaa !38
  %479 = zext i32 %477 to i64
  %480 = getelementptr inbounds %struct.UT_hash_bucket, ptr %478, i64 %479
  %481 = getelementptr inbounds i8, ptr %480, i64 8
  %482 = load i32, ptr %481, align 8, !tbaa !58
  %483 = add i32 %482, -1
  store i32 %483, ptr %481, align 8, !tbaa !58
  %484 = load ptr, ptr %480, align 8, !tbaa !39
  %485 = icmp eq ptr %484, %435
  br i1 %485, label %486, label %489

486:                                              ; preds = %._crit_edge835
  %487 = getelementptr inbounds i8, ptr %.0577823, i64 72
  %488 = load ptr, ptr %487, align 8, !tbaa !65
  store ptr %488, ptr %480, align 8, !tbaa !39
  br label %489

489:                                              ; preds = %486, %._crit_edge835
  %490 = getelementptr inbounds i8, ptr %.0577823, i64 64
  %491 = load ptr, ptr %490, align 8, !tbaa !60
  %.not701 = icmp eq ptr %491, null
  %.phi.trans.insert838 = getelementptr inbounds i8, ptr %.0577823, i64 72
  %.pre839 = load ptr, ptr %.phi.trans.insert838, align 8, !tbaa !65
  br i1 %.not701, label %._crit_edge837, label %492

492:                                              ; preds = %489
  %493 = getelementptr inbounds i8, ptr %491, i64 32
  store ptr %.pre839, ptr %493, align 8, !tbaa !65
  br label %._crit_edge837

._crit_edge837:                                   ; preds = %489, %492
  %.not702 = icmp eq ptr %.pre839, null
  br i1 %.not702, label %496, label %494

494:                                              ; preds = %._crit_edge837
  %495 = getelementptr inbounds i8, ptr %.pre839, i64 24
  store ptr %491, ptr %495, align 8, !tbaa !60
  br label %496

496:                                              ; preds = %494, %._crit_edge837
  %497 = getelementptr inbounds i8, ptr %.pre836, i64 16
  %498 = load i32, ptr %497, align 8, !tbaa !57
  %499 = add i32 %498, -1
  store i32 %499, ptr %497, align 8, !tbaa !57
  br label %500

500:                                              ; preds = %496, %443
  %.9 = phi ptr [ null, %443 ], [ %.8, %496 ]
  call void @free(ptr noundef nonnull %.0577823) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #10
  %.not703 = icmp eq ptr %.0576824, null
  br i1 %.not703, label %.loopexit, label %425, !llvm.loop !82

.loopexit:                                        ; preds = %500, %.thread745, %.thread852, %3, %6, %30
  ret void
}

declare void @fontop_consolidateClassDef(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare ptr @sdsdup(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

declare ptr @sdsempty() local_unnamed_addr #1

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

declare void @sdsfree(ptr noundef) local_unnamed_addr #1

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

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

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

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

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


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