; LLVM IR from caryll/otfcc :: lib/consolidate/otl (gsub-multi)

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

%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gsub_multi = 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_GsubMultiEntry = type { %struct.otfcc_Handle, ptr }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.subtable_gsub_multi = type { i64, i64, ptr }
%struct._caryll_font = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_Coverage = type { i16, i32, ptr }
%struct.gsub_multi_hash = type { i32, ptr, ptr, %struct.UT_hash_handle }
%struct.UT_hash_handle = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.UT_hash_table = type { ptr, i32, i32, i32, ptr, i64, i32, i32, i32, i32, i32 }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otfcc_pkgGlyphOrder = external constant %struct.otfcc_GlyphOrderPackage, align 8
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@otl_iCoverage = external constant %struct.__otfcc_ICoverage, align 8
@.str.1 = external hidden unnamed_addr constant [84 x i8], align 1
@iSubtable_gsub_multi = external constant %struct.__caryll_vectorinterface_subtable_gsub_multi, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

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

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

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

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

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

92:                                               ; preds = %59
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %94, i32 0, i32 2
  %96 = load ptr, ptr %95, align 8, !tbaa !19
  %97 = load i16, ptr %11, align 2, !tbaa !9
  %98 = zext i16 %97 to i64
  %99 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %96, i64 %98
  %100 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %99, i32 0, i32 1
  %101 = load ptr, ptr %100, align 8, !tbaa !28
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  call void @fontop_consolidateCoverage(ptr noundef %93, ptr noundef %101, ptr noundef %102)
  %103 = load ptr, ptr getelementptr inbounds (%struct.__otfcc_ICoverage, ptr @otl_iCoverage, i32 0, i32 14), align 8, !tbaa !29
  %104 = load ptr, ptr %9, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %104, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8, !tbaa !19
  %107 = load i16, ptr %11, align 2, !tbaa !9
  %108 = zext i16 %107 to i64
  %109 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %106, i64 %108
  %110 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %109, i32 0, i32 1
  %111 = load ptr, ptr %110, align 8, !tbaa !28
  call void %103(ptr noundef %111, i1 noundef zeroext false)
  %112 = load ptr, ptr %9, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %112, i32 0, i32 2
  %114 = load ptr, ptr %113, align 8, !tbaa !19
  %115 = load i16, ptr %11, align 2, !tbaa !9
  %116 = zext i16 %115 to i64
  %117 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %114, i64 %116
  %118 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %117, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !28
  %120 = getelementptr inbounds %struct.otl_Coverage, ptr %119, i32 0, i32 0
  %121 = load i16, ptr %120, align 8, !tbaa !31
  %122 = icmp ne i16 %121, 0
  br i1 %122, label %143, label %123

123:                                              ; preds = %92
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.otfcc_Options, ptr %124, i32 0, i32 24
  %126 = load ptr, ptr %125, align 8, !tbaa !20
  %127 = getelementptr inbounds %struct.otfcc_ILogger, ptr %126, i32 0, i32 6
  %128 = load ptr, ptr %127, align 8, !tbaa !23
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.otfcc_Options, ptr %129, i32 0, i32 24
  %131 = load ptr, ptr %130, align 8, !tbaa !20
  %132 = call ptr @sdsempty()
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %133, i32 0, i32 2
  %135 = load ptr, ptr %134, align 8, !tbaa !19
  %136 = load i16, ptr %11, align 2, !tbaa !9
  %137 = zext i16 %136 to i64
  %138 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %135, i64 %137
  %139 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %138, i32 0, i32 0
  %140 = getelementptr inbounds %struct.otfcc_Handle, ptr %139, i32 0, i32 2
  %141 = load ptr, ptr %140, align 8, !tbaa !25
  %142 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %132, ptr noundef @.str.1, ptr noundef %141)
  call void %128(ptr noundef %131, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %142)
  br label %1519

143:                                              ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %144, i32 0, i32 2
  %146 = load ptr, ptr %145, align 8, !tbaa !19
  %147 = load i16, ptr %11, align 2, !tbaa !9
  %148 = zext i16 %147 to i64
  %149 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %146, i64 %148
  %150 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %149, i32 0, i32 0
  %151 = getelementptr inbounds %struct.otfcc_Handle, ptr %150, i32 0, i32 1
  %152 = load i16, ptr %151, align 4, !tbaa !33
  %153 = zext i16 %152 to i32
  store i32 %153, ptr %13, align 4, !tbaa !34
  br label %154

154:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  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 4, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  store ptr %13, ptr %18, align 8, !tbaa !5
  store i32 -17973521, ptr %14, align 4, !tbaa !34
  store i32 -1640531527, ptr %16, align 4, !tbaa !34
  store i32 -1640531527, ptr %15, align 4, !tbaa !34
  store i32 4, ptr %17, align 4, !tbaa !34
  br label %157

157:                                              ; preds = %325, %156
  %158 = load i32, ptr %17, align 4, !tbaa !34
  %159 = icmp uge i32 %158, 12
  br i1 %159, label %160, label %330

160:                                              ; preds = %157
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 0
  %163 = load i8, ptr %162, align 1, !tbaa !35
  %164 = zext i8 %163 to i32
  %165 = load ptr, ptr %18, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 1
  %167 = load i8, ptr %166, align 1, !tbaa !35
  %168 = zext i8 %167 to i32
  %169 = shl i32 %168, 8
  %170 = add i32 %164, %169
  %171 = load ptr, ptr %18, align 8, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %171, i64 2
  %173 = load i8, ptr %172, align 1, !tbaa !35
  %174 = zext i8 %173 to i32
  %175 = shl i32 %174, 16
  %176 = add i32 %170, %175
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %177, i64 3
  %179 = load i8, ptr %178, align 1, !tbaa !35
  %180 = zext i8 %179 to i32
  %181 = shl i32 %180, 24
  %182 = add i32 %176, %181
  %183 = load i32, ptr %15, align 4, !tbaa !34
  %184 = add i32 %183, %182
  store i32 %184, ptr %15, align 4, !tbaa !34
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 4
  %187 = load i8, ptr %186, align 1, !tbaa !35
  %188 = zext i8 %187 to i32
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 5
  %191 = load i8, ptr %190, align 1, !tbaa !35
  %192 = zext i8 %191 to i32
  %193 = shl i32 %192, 8
  %194 = add i32 %188, %193
  %195 = load ptr, ptr %18, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i64 6
  %197 = load i8, ptr %196, align 1, !tbaa !35
  %198 = zext i8 %197 to i32
  %199 = shl i32 %198, 16
  %200 = add i32 %194, %199
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 7
  %203 = load i8, ptr %202, align 1, !tbaa !35
  %204 = zext i8 %203 to i32
  %205 = shl i32 %204, 24
  %206 = add i32 %200, %205
  %207 = load i32, ptr %16, align 4, !tbaa !34
  %208 = add i32 %207, %206
  store i32 %208, ptr %16, align 4, !tbaa !34
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = getelementptr inbounds i8, ptr %209, i64 8
  %211 = load i8, ptr %210, align 1, !tbaa !35
  %212 = zext i8 %211 to i32
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = getelementptr inbounds i8, ptr %213, i64 9
  %215 = load i8, ptr %214, align 1, !tbaa !35
  %216 = zext i8 %215 to i32
  %217 = shl i32 %216, 8
  %218 = add i32 %212, %217
  %219 = load ptr, ptr %18, align 8, !tbaa !5
  %220 = getelementptr inbounds i8, ptr %219, i64 10
  %221 = load i8, ptr %220, align 1, !tbaa !35
  %222 = zext i8 %221 to i32
  %223 = shl i32 %222, 16
  %224 = add i32 %218, %223
  %225 = load ptr, ptr %18, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i64 11
  %227 = load i8, ptr %226, align 1, !tbaa !35
  %228 = zext i8 %227 to i32
  %229 = shl i32 %228, 24
  %230 = add i32 %224, %229
  %231 = load i32, ptr %14, align 4, !tbaa !34
  %232 = add i32 %231, %230
  store i32 %232, ptr %14, align 4, !tbaa !34
  br label %233

233:                                              ; preds = %160
  %234 = load i32, ptr %16, align 4, !tbaa !34
  %235 = load i32, ptr %15, align 4, !tbaa !34
  %236 = sub i32 %235, %234
  store i32 %236, ptr %15, align 4, !tbaa !34
  %237 = load i32, ptr %14, align 4, !tbaa !34
  %238 = load i32, ptr %15, align 4, !tbaa !34
  %239 = sub i32 %238, %237
  store i32 %239, ptr %15, align 4, !tbaa !34
  %240 = load i32, ptr %14, align 4, !tbaa !34
  %241 = lshr i32 %240, 13
  %242 = load i32, ptr %15, align 4, !tbaa !34
  %243 = xor i32 %242, %241
  store i32 %243, ptr %15, align 4, !tbaa !34
  %244 = load i32, ptr %14, align 4, !tbaa !34
  %245 = load i32, ptr %16, align 4, !tbaa !34
  %246 = sub i32 %245, %244
  store i32 %246, ptr %16, align 4, !tbaa !34
  %247 = load i32, ptr %15, align 4, !tbaa !34
  %248 = load i32, ptr %16, align 4, !tbaa !34
  %249 = sub i32 %248, %247
  store i32 %249, ptr %16, align 4, !tbaa !34
  %250 = load i32, ptr %15, align 4, !tbaa !34
  %251 = shl i32 %250, 8
  %252 = load i32, ptr %16, align 4, !tbaa !34
  %253 = xor i32 %252, %251
  store i32 %253, ptr %16, align 4, !tbaa !34
  %254 = load i32, ptr %15, align 4, !tbaa !34
  %255 = load i32, ptr %14, align 4, !tbaa !34
  %256 = sub i32 %255, %254
  store i32 %256, ptr %14, align 4, !tbaa !34
  %257 = load i32, ptr %16, align 4, !tbaa !34
  %258 = load i32, ptr %14, align 4, !tbaa !34
  %259 = sub i32 %258, %257
  store i32 %259, ptr %14, align 4, !tbaa !34
  %260 = load i32, ptr %16, align 4, !tbaa !34
  %261 = lshr i32 %260, 13
  %262 = load i32, ptr %14, align 4, !tbaa !34
  %263 = xor i32 %262, %261
  store i32 %263, ptr %14, align 4, !tbaa !34
  %264 = load i32, ptr %16, align 4, !tbaa !34
  %265 = load i32, ptr %15, align 4, !tbaa !34
  %266 = sub i32 %265, %264
  store i32 %266, ptr %15, align 4, !tbaa !34
  %267 = load i32, ptr %14, align 4, !tbaa !34
  %268 = load i32, ptr %15, align 4, !tbaa !34
  %269 = sub i32 %268, %267
  store i32 %269, ptr %15, align 4, !tbaa !34
  %270 = load i32, ptr %14, align 4, !tbaa !34
  %271 = lshr i32 %270, 12
  %272 = load i32, ptr %15, align 4, !tbaa !34
  %273 = xor i32 %272, %271
  store i32 %273, ptr %15, align 4, !tbaa !34
  %274 = load i32, ptr %14, align 4, !tbaa !34
  %275 = load i32, ptr %16, align 4, !tbaa !34
  %276 = sub i32 %275, %274
  store i32 %276, ptr %16, align 4, !tbaa !34
  %277 = load i32, ptr %15, align 4, !tbaa !34
  %278 = load i32, ptr %16, align 4, !tbaa !34
  %279 = sub i32 %278, %277
  store i32 %279, ptr %16, align 4, !tbaa !34
  %280 = load i32, ptr %15, align 4, !tbaa !34
  %281 = shl i32 %280, 16
  %282 = load i32, ptr %16, align 4, !tbaa !34
  %283 = xor i32 %282, %281
  store i32 %283, ptr %16, align 4, !tbaa !34
  %284 = load i32, ptr %15, align 4, !tbaa !34
  %285 = load i32, ptr %14, align 4, !tbaa !34
  %286 = sub i32 %285, %284
  store i32 %286, ptr %14, align 4, !tbaa !34
  %287 = load i32, ptr %16, align 4, !tbaa !34
  %288 = load i32, ptr %14, align 4, !tbaa !34
  %289 = sub i32 %288, %287
  store i32 %289, ptr %14, align 4, !tbaa !34
  %290 = load i32, ptr %16, align 4, !tbaa !34
  %291 = lshr i32 %290, 5
  %292 = load i32, ptr %14, align 4, !tbaa !34
  %293 = xor i32 %292, %291
  store i32 %293, ptr %14, align 4, !tbaa !34
  %294 = load i32, ptr %16, align 4, !tbaa !34
  %295 = load i32, ptr %15, align 4, !tbaa !34
  %296 = sub i32 %295, %294
  store i32 %296, ptr %15, align 4, !tbaa !34
  %297 = load i32, ptr %14, align 4, !tbaa !34
  %298 = load i32, ptr %15, align 4, !tbaa !34
  %299 = sub i32 %298, %297
  store i32 %299, ptr %15, align 4, !tbaa !34
  %300 = load i32, ptr %14, align 4, !tbaa !34
  %301 = lshr i32 %300, 3
  %302 = load i32, ptr %15, align 4, !tbaa !34
  %303 = xor i32 %302, %301
  store i32 %303, ptr %15, align 4, !tbaa !34
  %304 = load i32, ptr %14, align 4, !tbaa !34
  %305 = load i32, ptr %16, align 4, !tbaa !34
  %306 = sub i32 %305, %304
  store i32 %306, ptr %16, align 4, !tbaa !34
  %307 = load i32, ptr %15, align 4, !tbaa !34
  %308 = load i32, ptr %16, align 4, !tbaa !34
  %309 = sub i32 %308, %307
  store i32 %309, ptr %16, align 4, !tbaa !34
  %310 = load i32, ptr %15, align 4, !tbaa !34
  %311 = shl i32 %310, 10
  %312 = load i32, ptr %16, align 4, !tbaa !34
  %313 = xor i32 %312, %311
  store i32 %313, ptr %16, align 4, !tbaa !34
  %314 = load i32, ptr %15, align 4, !tbaa !34
  %315 = load i32, ptr %14, align 4, !tbaa !34
  %316 = sub i32 %315, %314
  store i32 %316, ptr %14, align 4, !tbaa !34
  %317 = load i32, ptr %16, align 4, !tbaa !34
  %318 = load i32, ptr %14, align 4, !tbaa !34
  %319 = sub i32 %318, %317
  store i32 %319, ptr %14, align 4, !tbaa !34
  %320 = load i32, ptr %16, align 4, !tbaa !34
  %321 = lshr i32 %320, 15
  %322 = load i32, ptr %14, align 4, !tbaa !34
  %323 = xor i32 %322, %321
  store i32 %323, ptr %14, align 4, !tbaa !34
  br label %324

324:                                              ; preds = %233
  br label %325

325:                                              ; preds = %324
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = getelementptr inbounds i8, ptr %326, i64 12
  store ptr %327, ptr %18, align 8, !tbaa !5
  %328 = load i32, ptr %17, align 4, !tbaa !34
  %329 = sub i32 %328, 12
  store i32 %329, ptr %17, align 4, !tbaa !34
  br label %157, !llvm.loop !36

330:                                              ; preds = %157
  %331 = load i32, ptr %14, align 4, !tbaa !34
  %332 = add i32 %331, 4
  store i32 %332, ptr %14, align 4, !tbaa !34
  %333 = load i32, ptr %17, align 4, !tbaa !34
  switch i32 %333, label %420 [
    i32 11, label %334
    i32 10, label %342
    i32 9, label %350
    i32 8, label %358
    i32 7, label %366
    i32 6, label %374
    i32 5, label %382
    i32 4, label %389
    i32 3, label %397
    i32 2, label %405
    i32 1, label %413
  ]

334:                                              ; preds = %330
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = getelementptr inbounds i8, ptr %335, i64 10
  %337 = load i8, ptr %336, align 1, !tbaa !35
  %338 = zext i8 %337 to i32
  %339 = shl i32 %338, 24
  %340 = load i32, ptr %14, align 4, !tbaa !34
  %341 = add i32 %340, %339
  store i32 %341, ptr %14, align 4, !tbaa !34
  br label %342

342:                                              ; preds = %334, %330
  %343 = load ptr, ptr %18, align 8, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %343, i64 9
  %345 = load i8, ptr %344, align 1, !tbaa !35
  %346 = zext i8 %345 to i32
  %347 = shl i32 %346, 16
  %348 = load i32, ptr %14, align 4, !tbaa !34
  %349 = add i32 %348, %347
  store i32 %349, ptr %14, align 4, !tbaa !34
  br label %350

350:                                              ; preds = %342, %330
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %351, i64 8
  %353 = load i8, ptr %352, align 1, !tbaa !35
  %354 = zext i8 %353 to i32
  %355 = shl i32 %354, 8
  %356 = load i32, ptr %14, align 4, !tbaa !34
  %357 = add i32 %356, %355
  store i32 %357, ptr %14, align 4, !tbaa !34
  br label %358

358:                                              ; preds = %350, %330
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 7
  %361 = load i8, ptr %360, align 1, !tbaa !35
  %362 = zext i8 %361 to i32
  %363 = shl i32 %362, 24
  %364 = load i32, ptr %16, align 4, !tbaa !34
  %365 = add i32 %364, %363
  store i32 %365, ptr %16, align 4, !tbaa !34
  br label %366

366:                                              ; preds = %358, %330
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i64 6
  %369 = load i8, ptr %368, align 1, !tbaa !35
  %370 = zext i8 %369 to i32
  %371 = shl i32 %370, 16
  %372 = load i32, ptr %16, align 4, !tbaa !34
  %373 = add i32 %372, %371
  store i32 %373, ptr %16, align 4, !tbaa !34
  br label %374

374:                                              ; preds = %366, %330
  %375 = load ptr, ptr %18, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 5
  %377 = load i8, ptr %376, align 1, !tbaa !35
  %378 = zext i8 %377 to i32
  %379 = shl i32 %378, 8
  %380 = load i32, ptr %16, align 4, !tbaa !34
  %381 = add i32 %380, %379
  store i32 %381, ptr %16, align 4, !tbaa !34
  br label %382

382:                                              ; preds = %374, %330
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %383, i64 4
  %385 = load i8, ptr %384, align 1, !tbaa !35
  %386 = zext i8 %385 to i32
  %387 = load i32, ptr %16, align 4, !tbaa !34
  %388 = add i32 %387, %386
  store i32 %388, ptr %16, align 4, !tbaa !34
  br label %389

389:                                              ; preds = %382, %330
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %390, i64 3
  %392 = load i8, ptr %391, align 1, !tbaa !35
  %393 = zext i8 %392 to i32
  %394 = shl i32 %393, 24
  %395 = load i32, ptr %15, align 4, !tbaa !34
  %396 = add i32 %395, %394
  store i32 %396, ptr %15, align 4, !tbaa !34
  br label %397

397:                                              ; preds = %389, %330
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = getelementptr inbounds i8, ptr %398, i64 2
  %400 = load i8, ptr %399, align 1, !tbaa !35
  %401 = zext i8 %400 to i32
  %402 = shl i32 %401, 16
  %403 = load i32, ptr %15, align 4, !tbaa !34
  %404 = add i32 %403, %402
  store i32 %404, ptr %15, align 4, !tbaa !34
  br label %405

405:                                              ; preds = %397, %330
  %406 = load ptr, ptr %18, align 8, !tbaa !5
  %407 = getelementptr inbounds i8, ptr %406, i64 1
  %408 = load i8, ptr %407, align 1, !tbaa !35
  %409 = zext i8 %408 to i32
  %410 = shl i32 %409, 8
  %411 = load i32, ptr %15, align 4, !tbaa !34
  %412 = add i32 %411, %410
  store i32 %412, ptr %15, align 4, !tbaa !34
  br label %413

413:                                              ; preds = %405, %330
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = getelementptr inbounds i8, ptr %414, i64 0
  %416 = load i8, ptr %415, align 1, !tbaa !35
  %417 = zext i8 %416 to i32
  %418 = load i32, ptr %15, align 4, !tbaa !34
  %419 = add i32 %418, %417
  store i32 %419, ptr %15, align 4, !tbaa !34
  br label %420

420:                                              ; preds = %413, %330
  br label %421

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

512:                                              ; preds = %421
  br label %513

513:                                              ; preds = %512
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  br label %514

514:                                              ; preds = %513
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515
  br label %517

517:                                              ; preds = %516
  br label %518

518:                                              ; preds = %517
  store ptr null, ptr %12, align 8, !tbaa !5
  %519 = load ptr, ptr %10, align 8, !tbaa !5
  %520 = icmp ne ptr %519, null
  br i1 %520, label %521, label %625

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

522:                                              ; preds = %521
  %523 = load i32, ptr %14, align 4, !tbaa !34
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.gsub_multi_hash, ptr %524, i32 0, i32 3
  %526 = getelementptr inbounds %struct.UT_hash_handle, ptr %525, i32 0, i32 0
  %527 = load ptr, ptr %526, align 8, !tbaa !38
  %528 = getelementptr inbounds %struct.UT_hash_table, ptr %527, i32 0, i32 1
  %529 = load i32, ptr %528, align 8, !tbaa !41
  %530 = sub i32 %529, 1
  %531 = and i32 %523, %530
  store i32 %531, ptr %19, align 4, !tbaa !34
  br label %532

532:                                              ; preds = %522
  br label %533

533:                                              ; preds = %532
  br label %534

534:                                              ; preds = %533
  %535 = load ptr, ptr %10, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.gsub_multi_hash, ptr %535, i32 0, i32 3
  %537 = getelementptr inbounds %struct.UT_hash_handle, ptr %536, i32 0, i32 0
  %538 = load ptr, ptr %537, align 8, !tbaa !38
  %539 = getelementptr inbounds %struct.UT_hash_table, ptr %538, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !43
  %541 = load i32, ptr %19, align 4, !tbaa !34
  %542 = zext i32 %541 to i64
  %543 = getelementptr inbounds %struct.UT_hash_bucket, ptr %540, i64 %542
  %544 = getelementptr inbounds %struct.UT_hash_bucket, ptr %543, i32 0, i32 0
  %545 = load ptr, ptr %544, align 8, !tbaa !44
  %546 = icmp ne ptr %545, null
  br i1 %546, label %547, label %570

547:                                              ; preds = %534
  br label %548

548:                                              ; preds = %547
  %549 = load ptr, ptr %10, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.gsub_multi_hash, ptr %549, i32 0, i32 3
  %551 = getelementptr inbounds %struct.UT_hash_handle, ptr %550, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !38
  %553 = getelementptr inbounds %struct.UT_hash_table, ptr %552, i32 0, i32 0
  %554 = load ptr, ptr %553, align 8, !tbaa !43
  %555 = load i32, ptr %19, align 4, !tbaa !34
  %556 = zext i32 %555 to i64
  %557 = getelementptr inbounds %struct.UT_hash_bucket, ptr %554, i64 %556
  %558 = getelementptr inbounds %struct.UT_hash_bucket, ptr %557, i32 0, i32 0
  %559 = load ptr, ptr %558, align 8, !tbaa !44
  %560 = load ptr, ptr %10, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.gsub_multi_hash, ptr %560, i32 0, i32 3
  %562 = getelementptr inbounds %struct.UT_hash_handle, ptr %561, i32 0, i32 0
  %563 = load ptr, ptr %562, align 8, !tbaa !38
  %564 = getelementptr inbounds %struct.UT_hash_table, ptr %563, i32 0, i32 5
  %565 = load i64, ptr %564, align 8, !tbaa !46
  %566 = sub i64 0, %565
  %567 = getelementptr inbounds i8, ptr %559, i64 %566
  store ptr %567, ptr %12, align 8, !tbaa !5
  br label %568

568:                                              ; preds = %548
  br label %569

569:                                              ; preds = %568
  br label %571

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

571:                                              ; preds = %570, %569
  br label %572

572:                                              ; preds = %621, %571
  %573 = load ptr, ptr %12, align 8, !tbaa !5
  %574 = icmp ne ptr %573, null
  br i1 %574, label %575, label %622

575:                                              ; preds = %572
  %576 = load ptr, ptr %12, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.gsub_multi_hash, ptr %576, i32 0, i32 3
  %578 = getelementptr inbounds %struct.UT_hash_handle, ptr %577, i32 0, i32 7
  %579 = load i32, ptr %578, align 4, !tbaa !47
  %580 = load i32, ptr %14, align 4, !tbaa !34
  %581 = icmp eq i32 %579, %580
  br i1 %581, label %582, label %598

582:                                              ; preds = %575
  %583 = load ptr, ptr %12, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.gsub_multi_hash, ptr %583, i32 0, i32 3
  %585 = getelementptr inbounds %struct.UT_hash_handle, ptr %584, i32 0, i32 6
  %586 = load i32, ptr %585, align 8, !tbaa !48
  %587 = zext i32 %586 to i64
  %588 = icmp eq i64 %587, 4
  br i1 %588, label %589, label %598

589:                                              ; preds = %582
  %590 = load ptr, ptr %12, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.gsub_multi_hash, ptr %590, i32 0, i32 3
  %592 = getelementptr inbounds %struct.UT_hash_handle, ptr %591, i32 0, i32 5
  %593 = load ptr, ptr %592, align 8, !tbaa !49
  %594 = call i32 @memcmp(ptr noundef %593, ptr noundef %13, i64 noundef 4) #10
  %595 = icmp eq i32 %594, 0
  br i1 %595, label %596, label %597

596:                                              ; preds = %589
  br label %622

597:                                              ; preds = %589
  br label %598

598:                                              ; preds = %597, %582, %575
  %599 = load ptr, ptr %12, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.gsub_multi_hash, ptr %599, i32 0, i32 3
  %601 = getelementptr inbounds %struct.UT_hash_handle, ptr %600, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !50
  %603 = icmp ne ptr %602, null
  br i1 %603, label %604, label %620

604:                                              ; preds = %598
  br label %605

605:                                              ; preds = %604
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.gsub_multi_hash, ptr %606, i32 0, i32 3
  %608 = getelementptr inbounds %struct.UT_hash_handle, ptr %607, i32 0, i32 4
  %609 = load ptr, ptr %608, align 8, !tbaa !50
  %610 = load ptr, ptr %10, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.gsub_multi_hash, ptr %610, i32 0, i32 3
  %612 = getelementptr inbounds %struct.UT_hash_handle, ptr %611, i32 0, i32 0
  %613 = load ptr, ptr %612, align 8, !tbaa !38
  %614 = getelementptr inbounds %struct.UT_hash_table, ptr %613, i32 0, i32 5
  %615 = load i64, ptr %614, align 8, !tbaa !46
  %616 = sub i64 0, %615
  %617 = getelementptr inbounds i8, ptr %609, i64 %616
  store ptr %617, ptr %12, align 8, !tbaa !5
  br label %618

618:                                              ; preds = %605
  br label %619

619:                                              ; preds = %618
  br label %621

620:                                              ; preds = %598
  store ptr null, ptr %12, align 8, !tbaa !5
  br label %621

621:                                              ; preds = %620, %619
  br label %572, !llvm.loop !51

622:                                              ; preds = %596, %572
  br label %623

623:                                              ; preds = %622
  br label %624

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

625:                                              ; preds = %624, %518
  br label %626

626:                                              ; preds = %625
  br label %627

627:                                              ; preds = %626
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628
  %630 = load ptr, ptr %12, align 8, !tbaa !5
  %631 = icmp ne ptr %630, null
  br i1 %631, label %1518, label %632

632:                                              ; preds = %629
  %633 = call ptr @__caryll_allocate_clean(i64 noundef 80, i64 noundef 36)
  store ptr %633, ptr %12, align 8, !tbaa !5
  %634 = load ptr, ptr %9, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %634, i32 0, i32 2
  %636 = load ptr, ptr %635, align 8, !tbaa !19
  %637 = load i16, ptr %11, align 2, !tbaa !9
  %638 = zext i16 %637 to i64
  %639 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %636, i64 %638
  %640 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %639, i32 0, i32 0
  %641 = getelementptr inbounds %struct.otfcc_Handle, ptr %640, i32 0, i32 1
  %642 = load i16, ptr %641, align 4, !tbaa !33
  %643 = zext i16 %642 to i32
  %644 = load ptr, ptr %12, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.gsub_multi_hash, ptr %644, i32 0, i32 0
  store i32 %643, ptr %645, align 8, !tbaa !52
  %646 = load ptr, ptr %9, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %646, i32 0, i32 2
  %648 = load ptr, ptr %647, align 8, !tbaa !19
  %649 = load i16, ptr %11, align 2, !tbaa !9
  %650 = zext i16 %649 to i64
  %651 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %648, i64 %650
  %652 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %651, i32 0, i32 0
  %653 = getelementptr inbounds %struct.otfcc_Handle, ptr %652, i32 0, i32 2
  %654 = load ptr, ptr %653, align 8, !tbaa !25
  %655 = call ptr @sdsdup(ptr noundef %654)
  %656 = load ptr, ptr %12, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.gsub_multi_hash, ptr %656, i32 0, i32 1
  store ptr %655, ptr %657, align 8, !tbaa !53
  %658 = load ptr, ptr %9, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %658, i32 0, i32 2
  %660 = load ptr, ptr %659, align 8, !tbaa !19
  %661 = load i16, ptr %11, align 2, !tbaa !9
  %662 = zext i16 %661 to i64
  %663 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %660, i64 %662
  %664 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %663, i32 0, i32 1
  %665 = load ptr, ptr %664, align 8, !tbaa !28
  %666 = load ptr, ptr %12, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.gsub_multi_hash, ptr %666, i32 0, i32 2
  store ptr %665, ptr %667, align 8, !tbaa !54
  %668 = load ptr, ptr %9, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %668, i32 0, i32 2
  %670 = load ptr, ptr %669, align 8, !tbaa !19
  %671 = load i16, ptr %11, align 2, !tbaa !9
  %672 = zext i16 %671 to i64
  %673 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %670, i64 %672
  %674 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %673, i32 0, i32 1
  store ptr null, ptr %674, align 8, !tbaa !28
  br label %675

675:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  br label %676

676:                                              ; preds = %675
  br label %677

677:                                              ; preds = %676
  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 4, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %678 = load ptr, ptr %12, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.gsub_multi_hash, ptr %678, i32 0, i32 0
  store ptr %679, ptr %24, align 8, !tbaa !5
  store i32 -17973521, ptr %20, align 4, !tbaa !34
  store i32 -1640531527, ptr %22, align 4, !tbaa !34
  store i32 -1640531527, ptr %21, align 4, !tbaa !34
  store i32 4, ptr %23, align 4, !tbaa !34
  br label %680

680:                                              ; preds = %848, %677
  %681 = load i32, ptr %23, align 4, !tbaa !34
  %682 = icmp uge i32 %681, 12
  br i1 %682, label %683, label %853

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

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

847:                                              ; preds = %756
  br label %848

848:                                              ; preds = %847
  %849 = load ptr, ptr %24, align 8, !tbaa !5
  %850 = getelementptr inbounds i8, ptr %849, i64 12
  store ptr %850, ptr %24, align 8, !tbaa !5
  %851 = load i32, ptr %23, align 4, !tbaa !34
  %852 = sub i32 %851, 12
  store i32 %852, ptr %23, align 4, !tbaa !34
  br label %680, !llvm.loop !55

853:                                              ; preds = %680
  %854 = load i32, ptr %20, align 4, !tbaa !34
  %855 = add i32 %854, 4
  store i32 %855, ptr %20, align 4, !tbaa !34
  %856 = load i32, ptr %23, align 4, !tbaa !34
  switch i32 %856, label %943 [
    i32 11, label %857
    i32 10, label %865
    i32 9, label %873
    i32 8, label %881
    i32 7, label %889
    i32 6, label %897
    i32 5, label %905
    i32 4, label %912
    i32 3, label %920
    i32 2, label %928
    i32 1, label %936
  ]

857:                                              ; preds = %853
  %858 = load ptr, ptr %24, align 8, !tbaa !5
  %859 = getelementptr inbounds i8, ptr %858, i64 10
  %860 = load i8, ptr %859, align 1, !tbaa !35
  %861 = zext i8 %860 to i32
  %862 = shl i32 %861, 24
  %863 = load i32, ptr %20, align 4, !tbaa !34
  %864 = add i32 %863, %862
  store i32 %864, ptr %20, align 4, !tbaa !34
  br label %865

865:                                              ; preds = %857, %853
  %866 = load ptr, ptr %24, align 8, !tbaa !5
  %867 = getelementptr inbounds i8, ptr %866, i64 9
  %868 = load i8, ptr %867, align 1, !tbaa !35
  %869 = zext i8 %868 to i32
  %870 = shl i32 %869, 16
  %871 = load i32, ptr %20, align 4, !tbaa !34
  %872 = add i32 %871, %870
  store i32 %872, ptr %20, align 4, !tbaa !34
  br label %873

873:                                              ; preds = %865, %853
  %874 = load ptr, ptr %24, align 8, !tbaa !5
  %875 = getelementptr inbounds i8, ptr %874, i64 8
  %876 = load i8, ptr %875, align 1, !tbaa !35
  %877 = zext i8 %876 to i32
  %878 = shl i32 %877, 8
  %879 = load i32, ptr %20, align 4, !tbaa !34
  %880 = add i32 %879, %878
  store i32 %880, ptr %20, align 4, !tbaa !34
  br label %881

881:                                              ; preds = %873, %853
  %882 = load ptr, ptr %24, align 8, !tbaa !5
  %883 = getelementptr inbounds i8, ptr %882, i64 7
  %884 = load i8, ptr %883, align 1, !tbaa !35
  %885 = zext i8 %884 to i32
  %886 = shl i32 %885, 24
  %887 = load i32, ptr %22, align 4, !tbaa !34
  %888 = add i32 %887, %886
  store i32 %888, ptr %22, align 4, !tbaa !34
  br label %889

889:                                              ; preds = %881, %853
  %890 = load ptr, ptr %24, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 6
  %892 = load i8, ptr %891, align 1, !tbaa !35
  %893 = zext i8 %892 to i32
  %894 = shl i32 %893, 16
  %895 = load i32, ptr %22, align 4, !tbaa !34
  %896 = add i32 %895, %894
  store i32 %896, ptr %22, align 4, !tbaa !34
  br label %897

897:                                              ; preds = %889, %853
  %898 = load ptr, ptr %24, align 8, !tbaa !5
  %899 = getelementptr inbounds i8, ptr %898, i64 5
  %900 = load i8, ptr %899, align 1, !tbaa !35
  %901 = zext i8 %900 to i32
  %902 = shl i32 %901, 8
  %903 = load i32, ptr %22, align 4, !tbaa !34
  %904 = add i32 %903, %902
  store i32 %904, ptr %22, align 4, !tbaa !34
  br label %905

905:                                              ; preds = %897, %853
  %906 = load ptr, ptr %24, align 8, !tbaa !5
  %907 = getelementptr inbounds i8, ptr %906, i64 4
  %908 = load i8, ptr %907, align 1, !tbaa !35
  %909 = zext i8 %908 to i32
  %910 = load i32, ptr %22, align 4, !tbaa !34
  %911 = add i32 %910, %909
  store i32 %911, ptr %22, align 4, !tbaa !34
  br label %912

912:                                              ; preds = %905, %853
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = getelementptr inbounds i8, ptr %913, i64 3
  %915 = load i8, ptr %914, align 1, !tbaa !35
  %916 = zext i8 %915 to i32
  %917 = shl i32 %916, 24
  %918 = load i32, ptr %21, align 4, !tbaa !34
  %919 = add i32 %918, %917
  store i32 %919, ptr %21, align 4, !tbaa !34
  br label %920

920:                                              ; preds = %912, %853
  %921 = load ptr, ptr %24, align 8, !tbaa !5
  %922 = getelementptr inbounds i8, ptr %921, i64 2
  %923 = load i8, ptr %922, align 1, !tbaa !35
  %924 = zext i8 %923 to i32
  %925 = shl i32 %924, 16
  %926 = load i32, ptr %21, align 4, !tbaa !34
  %927 = add i32 %926, %925
  store i32 %927, ptr %21, align 4, !tbaa !34
  br label %928

928:                                              ; preds = %920, %853
  %929 = load ptr, ptr %24, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i64 1
  %931 = load i8, ptr %930, align 1, !tbaa !35
  %932 = zext i8 %931 to i32
  %933 = shl i32 %932, 8
  %934 = load i32, ptr %21, align 4, !tbaa !34
  %935 = add i32 %934, %933
  store i32 %935, ptr %21, align 4, !tbaa !34
  br label %936

936:                                              ; preds = %928, %853
  %937 = load ptr, ptr %24, align 8, !tbaa !5
  %938 = getelementptr inbounds i8, ptr %937, i64 0
  %939 = load i8, ptr %938, align 1, !tbaa !35
  %940 = zext i8 %939 to i32
  %941 = load i32, ptr %21, align 4, !tbaa !34
  %942 = add i32 %941, %940
  store i32 %942, ptr %21, align 4, !tbaa !34
  br label %943

943:                                              ; preds = %936, %853
  br label %944

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

1035:                                             ; preds = %944
  br label %1036

1036:                                             ; preds = %1035
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  br label %1037

1037:                                             ; preds = %1036
  br label %1038

1038:                                             ; preds = %1037
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  br label %1041

1041:                                             ; preds = %1040
  %1042 = load i32, ptr %20, align 4, !tbaa !34
  %1043 = load ptr, ptr %12, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1043, i32 0, i32 3
  %1045 = getelementptr inbounds %struct.UT_hash_handle, ptr %1044, i32 0, i32 7
  store i32 %1042, ptr %1045, align 4, !tbaa !47
  %1046 = load ptr, ptr %12, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1046, i32 0, i32 0
  %1048 = load ptr, ptr %12, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1048, i32 0, i32 3
  %1050 = getelementptr inbounds %struct.UT_hash_handle, ptr %1049, i32 0, i32 5
  store ptr %1047, ptr %1050, align 8, !tbaa !49
  %1051 = load ptr, ptr %12, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1051, i32 0, i32 3
  %1053 = getelementptr inbounds %struct.UT_hash_handle, ptr %1052, i32 0, i32 6
  store i32 4, ptr %1053, align 8, !tbaa !48
  %1054 = load ptr, ptr %10, align 8, !tbaa !5
  %1055 = icmp ne ptr %1054, null
  br i1 %1055, label %1138, label %1056

1056:                                             ; preds = %1041
  %1057 = load ptr, ptr %12, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1057, i32 0, i32 3
  %1059 = getelementptr inbounds %struct.UT_hash_handle, ptr %1058, i32 0, i32 2
  store ptr null, ptr %1059, align 8, !tbaa !56
  %1060 = load ptr, ptr %12, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1060, i32 0, i32 3
  %1062 = getelementptr inbounds %struct.UT_hash_handle, ptr %1061, i32 0, i32 1
  store ptr null, ptr %1062, align 8, !tbaa !57
  br label %1063

1063:                                             ; preds = %1056
  %1064 = call noalias ptr @malloc(i64 noundef 64) #11
  %1065 = load ptr, ptr %12, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1065, i32 0, i32 3
  %1067 = getelementptr inbounds %struct.UT_hash_handle, ptr %1066, i32 0, i32 0
  store ptr %1064, ptr %1067, align 8, !tbaa !38
  %1068 = load ptr, ptr %12, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1068, i32 0, i32 3
  %1070 = getelementptr inbounds %struct.UT_hash_handle, ptr %1069, i32 0, i32 0
  %1071 = load ptr, ptr %1070, align 8, !tbaa !38
  %1072 = icmp ne ptr %1071, null
  br i1 %1072, label %1074, label %1073

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

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

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

1126:                                             ; preds = %1074
  %1127 = load ptr, ptr %12, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1127, i32 0, i32 3
  %1129 = getelementptr inbounds %struct.UT_hash_handle, ptr %1128, i32 0, i32 0
  %1130 = load ptr, ptr %1129, align 8, !tbaa !38
  %1131 = getelementptr inbounds %struct.UT_hash_table, ptr %1130, i32 0, i32 0
  %1132 = load ptr, ptr %1131, align 8, !tbaa !43
  call void @llvm.memset.p0.i64(ptr align 8 %1132, i8 0, i64 512, i1 false)
  br label %1133

1133:                                             ; preds = %1126
  br label %1134

1134:                                             ; preds = %1133
  br label %1135

1135:                                             ; preds = %1134
  br label %1136

1136:                                             ; preds = %1135
  %1137 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1137, ptr %10, align 8, !tbaa !5
  br label %1184

1138:                                             ; preds = %1041
  %1139 = load ptr, ptr %10, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1139, i32 0, i32 3
  %1141 = getelementptr inbounds %struct.UT_hash_handle, ptr %1140, i32 0, i32 0
  %1142 = load ptr, ptr %1141, align 8, !tbaa !38
  %1143 = load ptr, ptr %12, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1143, i32 0, i32 3
  %1145 = getelementptr inbounds %struct.UT_hash_handle, ptr %1144, i32 0, i32 0
  store ptr %1142, ptr %1145, align 8, !tbaa !38
  br label %1146

1146:                                             ; preds = %1138
  %1147 = load ptr, ptr %12, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1147, i32 0, i32 3
  %1149 = getelementptr inbounds %struct.UT_hash_handle, ptr %1148, i32 0, i32 2
  store ptr null, ptr %1149, align 8, !tbaa !56
  %1150 = load ptr, ptr %10, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1150, i32 0, i32 3
  %1152 = getelementptr inbounds %struct.UT_hash_handle, ptr %1151, i32 0, i32 0
  %1153 = load ptr, ptr %1152, align 8, !tbaa !38
  %1154 = getelementptr inbounds %struct.UT_hash_table, ptr %1153, i32 0, i32 4
  %1155 = load ptr, ptr %1154, align 8, !tbaa !58
  %1156 = load ptr, ptr %10, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1156, i32 0, i32 3
  %1158 = getelementptr inbounds %struct.UT_hash_handle, ptr %1157, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8, !tbaa !38
  %1160 = getelementptr inbounds %struct.UT_hash_table, ptr %1159, i32 0, i32 5
  %1161 = load i64, ptr %1160, align 8, !tbaa !46
  %1162 = sub i64 0, %1161
  %1163 = getelementptr inbounds i8, ptr %1155, i64 %1162
  %1164 = load ptr, ptr %12, align 8, !tbaa !5
  %1165 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1164, i32 0, i32 3
  %1166 = getelementptr inbounds %struct.UT_hash_handle, ptr %1165, i32 0, i32 1
  store ptr %1163, ptr %1166, align 8, !tbaa !57
  %1167 = load ptr, ptr %12, align 8, !tbaa !5
  %1168 = load ptr, ptr %10, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1168, i32 0, i32 3
  %1170 = getelementptr inbounds %struct.UT_hash_handle, ptr %1169, i32 0, i32 0
  %1171 = load ptr, ptr %1170, align 8, !tbaa !38
  %1172 = getelementptr inbounds %struct.UT_hash_table, ptr %1171, i32 0, i32 4
  %1173 = load ptr, ptr %1172, align 8, !tbaa !58
  %1174 = getelementptr inbounds %struct.UT_hash_handle, ptr %1173, i32 0, i32 2
  store ptr %1167, ptr %1174, align 8, !tbaa !61
  %1175 = load ptr, ptr %12, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1175, i32 0, i32 3
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1177, i32 0, i32 3
  %1179 = getelementptr inbounds %struct.UT_hash_handle, ptr %1178, i32 0, i32 0
  %1180 = load ptr, ptr %1179, align 8, !tbaa !38
  %1181 = getelementptr inbounds %struct.UT_hash_table, ptr %1180, i32 0, i32 4
  store ptr %1176, ptr %1181, align 8, !tbaa !58
  br label %1182

1182:                                             ; preds = %1146
  br label %1183

1183:                                             ; preds = %1182
  br label %1184

1184:                                             ; preds = %1183, %1136
  br label %1185

1185:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1186, i32 0, i32 3
  %1188 = getelementptr inbounds %struct.UT_hash_handle, ptr %1187, i32 0, i32 0
  %1189 = load ptr, ptr %1188, align 8, !tbaa !38
  %1190 = getelementptr inbounds %struct.UT_hash_table, ptr %1189, i32 0, i32 3
  %1191 = load i32, ptr %1190, align 8, !tbaa !62
  %1192 = add i32 %1191, 1
  store i32 %1192, ptr %1190, align 8, !tbaa !62
  br label %1193

1193:                                             ; preds = %1185
  %1194 = load i32, ptr %20, align 4, !tbaa !34
  %1195 = load ptr, ptr %10, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1195, i32 0, i32 3
  %1197 = getelementptr inbounds %struct.UT_hash_handle, ptr %1196, i32 0, i32 0
  %1198 = load ptr, ptr %1197, align 8, !tbaa !38
  %1199 = getelementptr inbounds %struct.UT_hash_table, ptr %1198, i32 0, i32 1
  %1200 = load i32, ptr %1199, align 8, !tbaa !41
  %1201 = sub i32 %1200, 1
  %1202 = and i32 %1194, %1201
  store i32 %1202, ptr %25, align 4, !tbaa !34
  br label %1203

1203:                                             ; preds = %1193
  br label %1204

1204:                                             ; preds = %1203
  br label %1205

1205:                                             ; preds = %1204
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %1206 = load ptr, ptr %10, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1206, i32 0, i32 3
  %1208 = getelementptr inbounds %struct.UT_hash_handle, ptr %1207, i32 0, i32 0
  %1209 = load ptr, ptr %1208, align 8, !tbaa !38
  %1210 = getelementptr inbounds %struct.UT_hash_table, ptr %1209, i32 0, i32 0
  %1211 = load ptr, ptr %1210, align 8, !tbaa !43
  %1212 = load i32, ptr %25, align 4, !tbaa !34
  %1213 = zext i32 %1212 to i64
  %1214 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1211, i64 %1213
  store ptr %1214, ptr %26, align 8, !tbaa !5
  %1215 = load ptr, ptr %26, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1215, i32 0, i32 1
  %1217 = load i32, ptr %1216, align 8, !tbaa !63
  %1218 = add i32 %1217, 1
  store i32 %1218, ptr %1216, align 8, !tbaa !63
  %1219 = load ptr, ptr %26, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1219, i32 0, i32 0
  %1221 = load ptr, ptr %1220, align 8, !tbaa !44
  %1222 = load ptr, ptr %12, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1222, i32 0, i32 3
  %1224 = getelementptr inbounds %struct.UT_hash_handle, ptr %1223, i32 0, i32 4
  store ptr %1221, ptr %1224, align 8, !tbaa !50
  %1225 = load ptr, ptr %12, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1225, i32 0, i32 3
  %1227 = getelementptr inbounds %struct.UT_hash_handle, ptr %1226, i32 0, i32 3
  store ptr null, ptr %1227, align 8, !tbaa !64
  %1228 = load ptr, ptr %26, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1228, i32 0, i32 0
  %1230 = load ptr, ptr %1229, align 8, !tbaa !44
  %1231 = icmp ne ptr %1230, null
  br i1 %1231, label %1232, label %1239

1232:                                             ; preds = %1205
  %1233 = load ptr, ptr %12, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1233, i32 0, i32 3
  %1235 = load ptr, ptr %26, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1235, i32 0, i32 0
  %1237 = load ptr, ptr %1236, align 8, !tbaa !44
  %1238 = getelementptr inbounds %struct.UT_hash_handle, ptr %1237, i32 0, i32 3
  store ptr %1234, ptr %1238, align 8, !tbaa !65
  br label %1239

1239:                                             ; preds = %1232, %1205
  %1240 = load ptr, ptr %12, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1240, i32 0, i32 3
  %1242 = load ptr, ptr %26, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1242, i32 0, i32 0
  store ptr %1241, ptr %1243, align 8, !tbaa !44
  %1244 = load ptr, ptr %26, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1244, i32 0, i32 1
  %1246 = load i32, ptr %1245, align 8, !tbaa !63
  %1247 = load ptr, ptr %26, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1247, i32 0, i32 2
  %1249 = load i32, ptr %1248, align 4, !tbaa !66
  %1250 = add i32 %1249, 1
  %1251 = mul i32 %1250, 10
  %1252 = icmp uge i32 %1246, %1251
  br i1 %1252, label %1253, label %1509

1253:                                             ; preds = %1239
  %1254 = load ptr, ptr %12, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1254, i32 0, i32 3
  %1256 = getelementptr inbounds %struct.UT_hash_handle, ptr %1255, i32 0, i32 0
  %1257 = load ptr, ptr %1256, align 8, !tbaa !38
  %1258 = getelementptr inbounds %struct.UT_hash_table, ptr %1257, i32 0, i32 9
  %1259 = load i32, ptr %1258, align 4, !tbaa !67
  %1260 = icmp ne i32 %1259, 0
  br i1 %1260, label %1509, label %1261

1261:                                             ; preds = %1253
  br label %1262

1262:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 4, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %1263 = load ptr, ptr %12, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1263, i32 0, i32 3
  %1265 = getelementptr inbounds %struct.UT_hash_handle, ptr %1264, i32 0, i32 0
  %1266 = load ptr, ptr %1265, align 8, !tbaa !38
  %1267 = getelementptr inbounds %struct.UT_hash_table, ptr %1266, i32 0, i32 1
  %1268 = load i32, ptr %1267, align 8, !tbaa !41
  %1269 = zext i32 %1268 to i64
  %1270 = mul i64 2, %1269
  %1271 = mul i64 %1270, 16
  %1272 = call noalias ptr @malloc(i64 noundef %1271) #11
  store ptr %1272, ptr %31, align 8, !tbaa !5
  %1273 = load ptr, ptr %31, align 8, !tbaa !5
  %1274 = icmp ne ptr %1273, null
  br i1 %1274, label %1276, label %1275

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

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

1330:                                             ; preds = %1432, %1276
  %1331 = load i32, ptr %28, align 4, !tbaa !34
  %1332 = load ptr, ptr %12, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1332, i32 0, i32 3
  %1334 = getelementptr inbounds %struct.UT_hash_handle, ptr %1333, i32 0, i32 0
  %1335 = load ptr, ptr %1334, align 8, !tbaa !38
  %1336 = getelementptr inbounds %struct.UT_hash_table, ptr %1335, i32 0, i32 1
  %1337 = load i32, ptr %1336, align 8, !tbaa !41
  %1338 = icmp ult i32 %1331, %1337
  br i1 %1338, label %1339, label %1435

1339:                                             ; preds = %1330
  %1340 = load ptr, ptr %12, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1340, i32 0, i32 3
  %1342 = getelementptr inbounds %struct.UT_hash_handle, ptr %1341, i32 0, i32 0
  %1343 = load ptr, ptr %1342, align 8, !tbaa !38
  %1344 = getelementptr inbounds %struct.UT_hash_table, ptr %1343, i32 0, i32 0
  %1345 = load ptr, ptr %1344, align 8, !tbaa !43
  %1346 = load i32, ptr %28, align 4, !tbaa !34
  %1347 = zext i32 %1346 to i64
  %1348 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1345, i64 %1347
  %1349 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1348, i32 0, i32 0
  %1350 = load ptr, ptr %1349, align 8, !tbaa !44
  store ptr %1350, ptr %29, align 8, !tbaa !5
  br label %1351

1351:                                             ; preds = %1426, %1339
  %1352 = load ptr, ptr %29, align 8, !tbaa !5
  %1353 = icmp ne ptr %1352, null
  br i1 %1353, label %1354, label %1431

1354:                                             ; preds = %1351
  %1355 = load ptr, ptr %29, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.UT_hash_handle, ptr %1355, i32 0, i32 4
  %1357 = load ptr, ptr %1356, align 8, !tbaa !70
  store ptr %1357, ptr %30, align 8, !tbaa !5
  br label %1358

1358:                                             ; preds = %1354
  %1359 = load ptr, ptr %29, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.UT_hash_handle, ptr %1359, i32 0, i32 7
  %1361 = load i32, ptr %1360, align 4, !tbaa !71
  %1362 = load ptr, ptr %12, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1362, i32 0, i32 3
  %1364 = getelementptr inbounds %struct.UT_hash_handle, ptr %1363, i32 0, i32 0
  %1365 = load ptr, ptr %1364, align 8, !tbaa !38
  %1366 = getelementptr inbounds %struct.UT_hash_table, ptr %1365, i32 0, i32 1
  %1367 = load i32, ptr %1366, align 8, !tbaa !41
  %1368 = mul i32 %1367, 2
  %1369 = sub i32 %1368, 1
  %1370 = and i32 %1361, %1369
  store i32 %1370, ptr %27, align 4, !tbaa !34
  br label %1371

1371:                                             ; preds = %1358
  br label %1372

1372:                                             ; preds = %1371
  %1373 = load ptr, ptr %31, align 8, !tbaa !5
  %1374 = load i32, ptr %27, align 4, !tbaa !34
  %1375 = zext i32 %1374 to i64
  %1376 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1373, i64 %1375
  store ptr %1376, ptr %32, align 8, !tbaa !5
  %1377 = load ptr, ptr %32, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1377, i32 0, i32 1
  %1379 = load i32, ptr %1378, align 8, !tbaa !63
  %1380 = add i32 %1379, 1
  store i32 %1380, ptr %1378, align 8, !tbaa !63
  %1381 = load ptr, ptr %12, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1381, i32 0, i32 3
  %1383 = getelementptr inbounds %struct.UT_hash_handle, ptr %1382, i32 0, i32 0
  %1384 = load ptr, ptr %1383, align 8, !tbaa !38
  %1385 = getelementptr inbounds %struct.UT_hash_table, ptr %1384, i32 0, i32 6
  %1386 = load i32, ptr %1385, align 8, !tbaa !68
  %1387 = icmp ugt i32 %1380, %1386
  br i1 %1387, label %1388, label %1408

1388:                                             ; preds = %1372
  %1389 = load ptr, ptr %12, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1389, i32 0, i32 3
  %1391 = getelementptr inbounds %struct.UT_hash_handle, ptr %1390, i32 0, i32 0
  %1392 = load ptr, ptr %1391, align 8, !tbaa !38
  %1393 = getelementptr inbounds %struct.UT_hash_table, ptr %1392, i32 0, i32 7
  %1394 = load i32, ptr %1393, align 4, !tbaa !69
  %1395 = add i32 %1394, 1
  store i32 %1395, ptr %1393, align 4, !tbaa !69
  %1396 = load ptr, ptr %32, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1396, i32 0, i32 1
  %1398 = load i32, ptr %1397, align 8, !tbaa !63
  %1399 = load ptr, ptr %12, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1399, i32 0, i32 3
  %1401 = getelementptr inbounds %struct.UT_hash_handle, ptr %1400, i32 0, i32 0
  %1402 = load ptr, ptr %1401, align 8, !tbaa !38
  %1403 = getelementptr inbounds %struct.UT_hash_table, ptr %1402, i32 0, i32 6
  %1404 = load i32, ptr %1403, align 8, !tbaa !68
  %1405 = udiv i32 %1398, %1404
  %1406 = load ptr, ptr %32, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1406, i32 0, i32 2
  store i32 %1405, ptr %1407, align 4, !tbaa !66
  br label %1408

1408:                                             ; preds = %1388, %1372
  %1409 = load ptr, ptr %29, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.UT_hash_handle, ptr %1409, i32 0, i32 3
  store ptr null, ptr %1410, align 8, !tbaa !65
  %1411 = load ptr, ptr %32, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1411, i32 0, i32 0
  %1413 = load ptr, ptr %1412, align 8, !tbaa !44
  %1414 = load ptr, ptr %29, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.UT_hash_handle, ptr %1414, i32 0, i32 4
  store ptr %1413, ptr %1415, align 8, !tbaa !70
  %1416 = load ptr, ptr %32, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1416, i32 0, i32 0
  %1418 = load ptr, ptr %1417, align 8, !tbaa !44
  %1419 = icmp ne ptr %1418, null
  br i1 %1419, label %1420, label %1426

1420:                                             ; preds = %1408
  %1421 = load ptr, ptr %29, align 8, !tbaa !5
  %1422 = load ptr, ptr %32, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1422, i32 0, i32 0
  %1424 = load ptr, ptr %1423, align 8, !tbaa !44
  %1425 = getelementptr inbounds %struct.UT_hash_handle, ptr %1424, i32 0, i32 3
  store ptr %1421, ptr %1425, align 8, !tbaa !65
  br label %1426

1426:                                             ; preds = %1420, %1408
  %1427 = load ptr, ptr %29, align 8, !tbaa !5
  %1428 = load ptr, ptr %32, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1428, i32 0, i32 0
  store ptr %1427, ptr %1429, align 8, !tbaa !44
  %1430 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1430, ptr %29, align 8, !tbaa !5
  br label %1351, !llvm.loop !72

1431:                                             ; preds = %1351
  br label %1432

1432:                                             ; preds = %1431
  %1433 = load i32, ptr %28, align 4, !tbaa !34
  %1434 = add i32 %1433, 1
  store i32 %1434, ptr %28, align 4, !tbaa !34
  br label %1330, !llvm.loop !73

1435:                                             ; preds = %1330
  %1436 = load ptr, ptr %12, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1436, i32 0, i32 3
  %1438 = getelementptr inbounds %struct.UT_hash_handle, ptr %1437, i32 0, i32 0
  %1439 = load ptr, ptr %1438, align 8, !tbaa !38
  %1440 = getelementptr inbounds %struct.UT_hash_table, ptr %1439, i32 0, i32 0
  %1441 = load ptr, ptr %1440, align 8, !tbaa !43
  call void @free(ptr noundef %1441) #9
  %1442 = load ptr, ptr %12, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1442, i32 0, i32 3
  %1444 = getelementptr inbounds %struct.UT_hash_handle, ptr %1443, i32 0, i32 0
  %1445 = load ptr, ptr %1444, align 8, !tbaa !38
  %1446 = getelementptr inbounds %struct.UT_hash_table, ptr %1445, i32 0, i32 1
  %1447 = load i32, ptr %1446, align 8, !tbaa !41
  %1448 = mul i32 %1447, 2
  store i32 %1448, ptr %1446, align 8, !tbaa !41
  %1449 = load ptr, ptr %12, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1449, i32 0, i32 3
  %1451 = getelementptr inbounds %struct.UT_hash_handle, ptr %1450, i32 0, i32 0
  %1452 = load ptr, ptr %1451, align 8, !tbaa !38
  %1453 = getelementptr inbounds %struct.UT_hash_table, ptr %1452, i32 0, i32 2
  %1454 = load i32, ptr %1453, align 4, !tbaa !59
  %1455 = add i32 %1454, 1
  store i32 %1455, ptr %1453, align 4, !tbaa !59
  %1456 = load ptr, ptr %31, align 8, !tbaa !5
  %1457 = load ptr, ptr %12, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1457, i32 0, i32 3
  %1459 = getelementptr inbounds %struct.UT_hash_handle, ptr %1458, i32 0, i32 0
  %1460 = load ptr, ptr %1459, align 8, !tbaa !38
  %1461 = getelementptr inbounds %struct.UT_hash_table, ptr %1460, i32 0, i32 0
  store ptr %1456, ptr %1461, align 8, !tbaa !43
  %1462 = load ptr, ptr %12, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1462, i32 0, i32 3
  %1464 = getelementptr inbounds %struct.UT_hash_handle, ptr %1463, i32 0, i32 0
  %1465 = load ptr, ptr %1464, align 8, !tbaa !38
  %1466 = getelementptr inbounds %struct.UT_hash_table, ptr %1465, i32 0, i32 7
  %1467 = load i32, ptr %1466, align 4, !tbaa !69
  %1468 = load ptr, ptr %12, align 8, !tbaa !5
  %1469 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1468, i32 0, i32 3
  %1470 = getelementptr inbounds %struct.UT_hash_handle, ptr %1469, i32 0, i32 0
  %1471 = load ptr, ptr %1470, align 8, !tbaa !38
  %1472 = getelementptr inbounds %struct.UT_hash_table, ptr %1471, i32 0, i32 3
  %1473 = load i32, ptr %1472, align 8, !tbaa !62
  %1474 = lshr i32 %1473, 1
  %1475 = icmp ugt i32 %1467, %1474
  br i1 %1475, label %1476, label %1484

1476:                                             ; preds = %1435
  %1477 = load ptr, ptr %12, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1477, i32 0, i32 3
  %1479 = getelementptr inbounds %struct.UT_hash_handle, ptr %1478, i32 0, i32 0
  %1480 = load ptr, ptr %1479, align 8, !tbaa !38
  %1481 = getelementptr inbounds %struct.UT_hash_table, ptr %1480, i32 0, i32 8
  %1482 = load i32, ptr %1481, align 8, !tbaa !74
  %1483 = add i32 %1482, 1
  br label %1485

1484:                                             ; preds = %1435
  br label %1485

1485:                                             ; preds = %1484, %1476
  %1486 = phi i32 [ %1483, %1476 ], [ 0, %1484 ]
  %1487 = load ptr, ptr %12, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1487, i32 0, i32 3
  %1489 = getelementptr inbounds %struct.UT_hash_handle, ptr %1488, i32 0, i32 0
  %1490 = load ptr, ptr %1489, align 8, !tbaa !38
  %1491 = getelementptr inbounds %struct.UT_hash_table, ptr %1490, i32 0, i32 8
  store i32 %1486, ptr %1491, align 8, !tbaa !74
  %1492 = load ptr, ptr %12, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1492, i32 0, i32 3
  %1494 = getelementptr inbounds %struct.UT_hash_handle, ptr %1493, i32 0, i32 0
  %1495 = load ptr, ptr %1494, align 8, !tbaa !38
  %1496 = getelementptr inbounds %struct.UT_hash_table, ptr %1495, i32 0, i32 8
  %1497 = load i32, ptr %1496, align 8, !tbaa !74
  %1498 = icmp ugt i32 %1497, 1
  br i1 %1498, label %1499, label %1505

1499:                                             ; preds = %1485
  %1500 = load ptr, ptr %12, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1500, i32 0, i32 3
  %1502 = getelementptr inbounds %struct.UT_hash_handle, ptr %1501, i32 0, i32 0
  %1503 = load ptr, ptr %1502, align 8, !tbaa !38
  %1504 = getelementptr inbounds %struct.UT_hash_table, ptr %1503, i32 0, i32 9
  store i32 1, ptr %1504, align 4, !tbaa !67
  br label %1505

1505:                                             ; preds = %1499, %1485
  br label %1506

1506:                                             ; preds = %1505
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  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 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %1507

1507:                                             ; preds = %1506
  br label %1508

1508:                                             ; preds = %1507
  br label %1509

1509:                                             ; preds = %1508, %1253, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %1510

1510:                                             ; preds = %1509
  br label %1511

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

1512:                                             ; preds = %1511
  br label %1513

1513:                                             ; preds = %1512
  br label %1514

1514:                                             ; preds = %1513
  br label %1515

1515:                                             ; preds = %1514
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %1516

1516:                                             ; preds = %1515
  br label %1517

1517:                                             ; preds = %1516
  br label %1518

1518:                                             ; preds = %1517, %629
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %1519

1519:                                             ; preds = %1518, %123, %72
  %1520 = load i16, ptr %11, align 2, !tbaa !9
  %1521 = add i16 %1520, 1
  store i16 %1521, ptr %11, align 2, !tbaa !9
  br label %51, !llvm.loop !75

1522:                                             ; preds = %58
  br label %1523

1523:                                             ; preds = %1522
  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 4, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %1524 = load ptr, ptr %10, align 8, !tbaa !5
  %1525 = icmp ne ptr %1524, null
  br i1 %1525, label %1526, label %1796

1526:                                             ; preds = %1523
  store i32 1, ptr %36, align 4, !tbaa !34
  store i32 1, ptr %34, align 4, !tbaa !34
  %1527 = load ptr, ptr %10, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1527, i32 0, i32 3
  store ptr %1528, ptr %42, align 8, !tbaa !5
  br label %1529

1529:                                             ; preds = %1792, %1526
  %1530 = load i32, ptr %34, align 4, !tbaa !34
  %1531 = icmp ne i32 %1530, 0
  br i1 %1531, label %1532, label %1795

1532:                                             ; preds = %1529
  %1533 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1533, ptr %39, align 8, !tbaa !5
  store ptr null, ptr %42, align 8, !tbaa !5
  store ptr null, ptr %43, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !34
  br label %1534

1534:                                             ; preds = %1762, %1532
  %1535 = load ptr, ptr %39, align 8, !tbaa !5
  %1536 = icmp ne ptr %1535, null
  br i1 %1536, label %1537, label %1764

1537:                                             ; preds = %1534
  %1538 = load i32, ptr %35, align 4, !tbaa !34
  %1539 = add i32 %1538, 1
  store i32 %1539, ptr %35, align 4, !tbaa !34
  %1540 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1540, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %37, align 4, !tbaa !34
  store i32 0, ptr %33, align 4, !tbaa !34
  br label %1541

1541:                                             ; preds = %1570, %1537
  %1542 = load i32, ptr %33, align 4, !tbaa !34
  %1543 = load i32, ptr %36, align 4, !tbaa !34
  %1544 = icmp ult i32 %1542, %1543
  br i1 %1544, label %1545, label %1573

1545:                                             ; preds = %1541
  %1546 = load i32, ptr %37, align 4, !tbaa !34
  %1547 = add i32 %1546, 1
  store i32 %1547, ptr %37, align 4, !tbaa !34
  %1548 = load ptr, ptr %40, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.UT_hash_handle, ptr %1548, i32 0, i32 2
  %1550 = load ptr, ptr %1549, align 8, !tbaa !61
  %1551 = icmp ne ptr %1550, null
  br i1 %1551, label %1552, label %1563

1552:                                             ; preds = %1545
  %1553 = load ptr, ptr %40, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.UT_hash_handle, ptr %1553, i32 0, i32 2
  %1555 = load ptr, ptr %1554, align 8, !tbaa !61
  %1556 = load ptr, ptr %10, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1556, i32 0, i32 3
  %1558 = getelementptr inbounds %struct.UT_hash_handle, ptr %1557, i32 0, i32 0
  %1559 = load ptr, ptr %1558, align 8, !tbaa !38
  %1560 = getelementptr inbounds %struct.UT_hash_table, ptr %1559, i32 0, i32 5
  %1561 = load i64, ptr %1560, align 8, !tbaa !46
  %1562 = getelementptr inbounds i8, ptr %1555, i64 %1561
  br label %1564

1563:                                             ; preds = %1545
  br label %1564

1564:                                             ; preds = %1563, %1552
  %1565 = phi ptr [ %1562, %1552 ], [ null, %1563 ]
  store ptr %1565, ptr %40, align 8, !tbaa !5
  %1566 = load ptr, ptr %40, align 8, !tbaa !5
  %1567 = icmp eq ptr %1566, null
  br i1 %1567, label %1568, label %1569

1568:                                             ; preds = %1564
  br label %1573

1569:                                             ; preds = %1564
  br label %1570

1570:                                             ; preds = %1569
  %1571 = load i32, ptr %33, align 4, !tbaa !34
  %1572 = add i32 %1571, 1
  store i32 %1572, ptr %33, align 4, !tbaa !34
  br label %1541, !llvm.loop !76

1573:                                             ; preds = %1568, %1541
  %1574 = load i32, ptr %36, align 4, !tbaa !34
  store i32 %1574, ptr %38, align 4, !tbaa !34
  br label %1575

1575:                                             ; preds = %1760, %1573
  %1576 = load i32, ptr %37, align 4, !tbaa !34
  %1577 = icmp ne i32 %1576, 0
  br i1 %1577, label %1586, label %1578

1578:                                             ; preds = %1575
  %1579 = load i32, ptr %38, align 4, !tbaa !34
  %1580 = icmp ne i32 %1579, 0
  br i1 %1580, label %1581, label %1584

1581:                                             ; preds = %1578
  %1582 = load ptr, ptr %40, align 8, !tbaa !5
  %1583 = icmp ne ptr %1582, null
  br label %1584

1584:                                             ; preds = %1581, %1578
  %1585 = phi i1 [ false, %1578 ], [ %1583, %1581 ]
  br label %1586

1586:                                             ; preds = %1584, %1575
  %1587 = phi i1 [ true, %1575 ], [ %1585, %1584 ]
  br i1 %1587, label %1588, label %1762

1588:                                             ; preds = %1586
  %1589 = load i32, ptr %37, align 4, !tbaa !34
  %1590 = icmp eq i32 %1589, 0
  br i1 %1590, label %1591, label %1613

1591:                                             ; preds = %1588
  %1592 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1592, ptr %41, align 8, !tbaa !5
  %1593 = load ptr, ptr %40, align 8, !tbaa !5
  %1594 = getelementptr inbounds %struct.UT_hash_handle, ptr %1593, i32 0, i32 2
  %1595 = load ptr, ptr %1594, align 8, !tbaa !61
  %1596 = icmp ne ptr %1595, null
  br i1 %1596, label %1597, label %1608

1597:                                             ; preds = %1591
  %1598 = load ptr, ptr %40, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.UT_hash_handle, ptr %1598, i32 0, i32 2
  %1600 = load ptr, ptr %1599, align 8, !tbaa !61
  %1601 = load ptr, ptr %10, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1601, i32 0, i32 3
  %1603 = getelementptr inbounds %struct.UT_hash_handle, ptr %1602, i32 0, i32 0
  %1604 = load ptr, ptr %1603, align 8, !tbaa !38
  %1605 = getelementptr inbounds %struct.UT_hash_table, ptr %1604, i32 0, i32 5
  %1606 = load i64, ptr %1605, align 8, !tbaa !46
  %1607 = getelementptr inbounds i8, ptr %1600, i64 %1606
  br label %1609

1608:                                             ; preds = %1591
  br label %1609

1609:                                             ; preds = %1608, %1597
  %1610 = phi ptr [ %1607, %1597 ], [ null, %1608 ]
  store ptr %1610, ptr %40, align 8, !tbaa !5
  %1611 = load i32, ptr %38, align 4, !tbaa !34
  %1612 = add i32 %1611, -1
  store i32 %1612, ptr %38, align 4, !tbaa !34
  br label %1716

1613:                                             ; preds = %1588
  %1614 = load i32, ptr %38, align 4, !tbaa !34
  %1615 = icmp eq i32 %1614, 0
  br i1 %1615, label %1619, label %1616

1616:                                             ; preds = %1613
  %1617 = load ptr, ptr %40, align 8, !tbaa !5
  %1618 = icmp eq ptr %1617, null
  br i1 %1618, label %1619, label %1645

1619:                                             ; preds = %1616, %1613
  %1620 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1620, ptr %41, align 8, !tbaa !5
  %1621 = load ptr, ptr %39, align 8, !tbaa !5
  %1622 = icmp ne ptr %1621, null
  br i1 %1622, label %1623, label %1642

1623:                                             ; preds = %1619
  %1624 = load ptr, ptr %39, align 8, !tbaa !5
  %1625 = getelementptr inbounds %struct.UT_hash_handle, ptr %1624, i32 0, i32 2
  %1626 = load ptr, ptr %1625, align 8, !tbaa !61
  %1627 = icmp ne ptr %1626, null
  br i1 %1627, label %1628, label %1639

1628:                                             ; preds = %1623
  %1629 = load ptr, ptr %39, align 8, !tbaa !5
  %1630 = getelementptr inbounds %struct.UT_hash_handle, ptr %1629, i32 0, i32 2
  %1631 = load ptr, ptr %1630, align 8, !tbaa !61
  %1632 = load ptr, ptr %10, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1632, i32 0, i32 3
  %1634 = getelementptr inbounds %struct.UT_hash_handle, ptr %1633, i32 0, i32 0
  %1635 = load ptr, ptr %1634, align 8, !tbaa !38
  %1636 = getelementptr inbounds %struct.UT_hash_table, ptr %1635, i32 0, i32 5
  %1637 = load i64, ptr %1636, align 8, !tbaa !46
  %1638 = getelementptr inbounds i8, ptr %1631, i64 %1637
  br label %1640

1639:                                             ; preds = %1623
  br label %1640

1640:                                             ; preds = %1639, %1628
  %1641 = phi ptr [ %1638, %1628 ], [ null, %1639 ]
  store ptr %1641, ptr %39, align 8, !tbaa !5
  br label %1642

1642:                                             ; preds = %1640, %1619
  %1643 = load i32, ptr %37, align 4, !tbaa !34
  %1644 = add i32 %1643, -1
  store i32 %1644, ptr %37, align 4, !tbaa !34
  br label %1715

1645:                                             ; preds = %1616
  %1646 = load ptr, ptr %39, align 8, !tbaa !5
  %1647 = load ptr, ptr %10, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1647, i32 0, i32 3
  %1649 = getelementptr inbounds %struct.UT_hash_handle, ptr %1648, i32 0, i32 0
  %1650 = load ptr, ptr %1649, align 8, !tbaa !38
  %1651 = getelementptr inbounds %struct.UT_hash_table, ptr %1650, i32 0, i32 5
  %1652 = load i64, ptr %1651, align 8, !tbaa !46
  %1653 = sub i64 0, %1652
  %1654 = getelementptr inbounds i8, ptr %1646, i64 %1653
  %1655 = load ptr, ptr %40, align 8, !tbaa !5
  %1656 = load ptr, ptr %10, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1656, i32 0, i32 3
  %1658 = getelementptr inbounds %struct.UT_hash_handle, ptr %1657, i32 0, i32 0
  %1659 = load ptr, ptr %1658, align 8, !tbaa !38
  %1660 = getelementptr inbounds %struct.UT_hash_table, ptr %1659, i32 0, i32 5
  %1661 = load i64, ptr %1660, align 8, !tbaa !46
  %1662 = sub i64 0, %1661
  %1663 = getelementptr inbounds i8, ptr %1655, i64 %1662
  %1664 = call i32 @by_from_id_multi(ptr noundef %1654, ptr noundef %1663)
  %1665 = icmp sle i32 %1664, 0
  br i1 %1665, label %1666, label %1692

1666:                                             ; preds = %1645
  %1667 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1667, ptr %41, align 8, !tbaa !5
  %1668 = load ptr, ptr %39, align 8, !tbaa !5
  %1669 = icmp ne ptr %1668, null
  br i1 %1669, label %1670, label %1689

1670:                                             ; preds = %1666
  %1671 = load ptr, ptr %39, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct.UT_hash_handle, ptr %1671, i32 0, i32 2
  %1673 = load ptr, ptr %1672, align 8, !tbaa !61
  %1674 = icmp ne ptr %1673, null
  br i1 %1674, label %1675, label %1686

1675:                                             ; preds = %1670
  %1676 = load ptr, ptr %39, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.UT_hash_handle, ptr %1676, i32 0, i32 2
  %1678 = load ptr, ptr %1677, align 8, !tbaa !61
  %1679 = load ptr, ptr %10, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1679, i32 0, i32 3
  %1681 = getelementptr inbounds %struct.UT_hash_handle, ptr %1680, i32 0, i32 0
  %1682 = load ptr, ptr %1681, align 8, !tbaa !38
  %1683 = getelementptr inbounds %struct.UT_hash_table, ptr %1682, i32 0, i32 5
  %1684 = load i64, ptr %1683, align 8, !tbaa !46
  %1685 = getelementptr inbounds i8, ptr %1678, i64 %1684
  br label %1687

1686:                                             ; preds = %1670
  br label %1687

1687:                                             ; preds = %1686, %1675
  %1688 = phi ptr [ %1685, %1675 ], [ null, %1686 ]
  store ptr %1688, ptr %39, align 8, !tbaa !5
  br label %1689

1689:                                             ; preds = %1687, %1666
  %1690 = load i32, ptr %37, align 4, !tbaa !34
  %1691 = add i32 %1690, -1
  store i32 %1691, ptr %37, align 4, !tbaa !34
  br label %1714

1692:                                             ; preds = %1645
  %1693 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1693, ptr %41, align 8, !tbaa !5
  %1694 = load ptr, ptr %40, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.UT_hash_handle, ptr %1694, i32 0, i32 2
  %1696 = load ptr, ptr %1695, align 8, !tbaa !61
  %1697 = icmp ne ptr %1696, null
  br i1 %1697, label %1698, label %1709

1698:                                             ; preds = %1692
  %1699 = load ptr, ptr %40, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.UT_hash_handle, ptr %1699, i32 0, i32 2
  %1701 = load ptr, ptr %1700, align 8, !tbaa !61
  %1702 = load ptr, ptr %10, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1702, i32 0, i32 3
  %1704 = getelementptr inbounds %struct.UT_hash_handle, ptr %1703, i32 0, i32 0
  %1705 = load ptr, ptr %1704, align 8, !tbaa !38
  %1706 = getelementptr inbounds %struct.UT_hash_table, ptr %1705, i32 0, i32 5
  %1707 = load i64, ptr %1706, align 8, !tbaa !46
  %1708 = getelementptr inbounds i8, ptr %1701, i64 %1707
  br label %1710

1709:                                             ; preds = %1692
  br label %1710

1710:                                             ; preds = %1709, %1698
  %1711 = phi ptr [ %1708, %1698 ], [ null, %1709 ]
  store ptr %1711, ptr %40, align 8, !tbaa !5
  %1712 = load i32, ptr %38, align 4, !tbaa !34
  %1713 = add i32 %1712, -1
  store i32 %1713, ptr %38, align 4, !tbaa !34
  br label %1714

1714:                                             ; preds = %1710, %1689
  br label %1715

1715:                                             ; preds = %1714, %1642
  br label %1716

1716:                                             ; preds = %1715, %1609
  %1717 = load ptr, ptr %43, align 8, !tbaa !5
  %1718 = icmp ne ptr %1717, null
  br i1 %1718, label %1719, label %1737

1719:                                             ; preds = %1716
  %1720 = load ptr, ptr %41, align 8, !tbaa !5
  %1721 = icmp ne ptr %1720, null
  br i1 %1721, label %1722, label %1732

1722:                                             ; preds = %1719
  %1723 = load ptr, ptr %41, align 8, !tbaa !5
  %1724 = load ptr, ptr %10, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1724, i32 0, i32 3
  %1726 = getelementptr inbounds %struct.UT_hash_handle, ptr %1725, i32 0, i32 0
  %1727 = load ptr, ptr %1726, align 8, !tbaa !38
  %1728 = getelementptr inbounds %struct.UT_hash_table, ptr %1727, i32 0, i32 5
  %1729 = load i64, ptr %1728, align 8, !tbaa !46
  %1730 = sub i64 0, %1729
  %1731 = getelementptr inbounds i8, ptr %1723, i64 %1730
  br label %1733

1732:                                             ; preds = %1719
  br label %1733

1733:                                             ; preds = %1732, %1722
  %1734 = phi ptr [ %1731, %1722 ], [ null, %1732 ]
  %1735 = load ptr, ptr %43, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.UT_hash_handle, ptr %1735, i32 0, i32 2
  store ptr %1734, ptr %1736, align 8, !tbaa !61
  br label %1739

1737:                                             ; preds = %1716
  %1738 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1738, ptr %42, align 8, !tbaa !5
  br label %1739

1739:                                             ; preds = %1737, %1733
  %1740 = load ptr, ptr %41, align 8, !tbaa !5
  %1741 = icmp ne ptr %1740, null
  br i1 %1741, label %1742, label %1760

1742:                                             ; preds = %1739
  %1743 = load ptr, ptr %43, align 8, !tbaa !5
  %1744 = icmp ne ptr %1743, null
  br i1 %1744, label %1745, label %1755

1745:                                             ; preds = %1742
  %1746 = load ptr, ptr %43, align 8, !tbaa !5
  %1747 = load ptr, ptr %10, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1747, i32 0, i32 3
  %1749 = getelementptr inbounds %struct.UT_hash_handle, ptr %1748, i32 0, i32 0
  %1750 = load ptr, ptr %1749, align 8, !tbaa !38
  %1751 = getelementptr inbounds %struct.UT_hash_table, ptr %1750, i32 0, i32 5
  %1752 = load i64, ptr %1751, align 8, !tbaa !46
  %1753 = sub i64 0, %1752
  %1754 = getelementptr inbounds i8, ptr %1746, i64 %1753
  br label %1756

1755:                                             ; preds = %1742
  br label %1756

1756:                                             ; preds = %1755, %1745
  %1757 = phi ptr [ %1754, %1745 ], [ null, %1755 ]
  %1758 = load ptr, ptr %41, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.UT_hash_handle, ptr %1758, i32 0, i32 1
  store ptr %1757, ptr %1759, align 8, !tbaa !77
  br label %1760

1760:                                             ; preds = %1756, %1739
  %1761 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1761, ptr %43, align 8, !tbaa !5
  br label %1575, !llvm.loop !78

1762:                                             ; preds = %1586
  %1763 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1763, ptr %39, align 8, !tbaa !5
  br label %1534, !llvm.loop !79

1764:                                             ; preds = %1534
  %1765 = load ptr, ptr %43, align 8, !tbaa !5
  %1766 = icmp ne ptr %1765, null
  br i1 %1766, label %1767, label %1770

1767:                                             ; preds = %1764
  %1768 = load ptr, ptr %43, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.UT_hash_handle, ptr %1768, i32 0, i32 2
  store ptr null, ptr %1769, align 8, !tbaa !61
  br label %1770

1770:                                             ; preds = %1767, %1764
  %1771 = load i32, ptr %35, align 4, !tbaa !34
  %1772 = icmp ule i32 %1771, 1
  br i1 %1772, label %1773, label %1792

1773:                                             ; preds = %1770
  store i32 0, ptr %34, align 4, !tbaa !34
  %1774 = load ptr, ptr %43, align 8, !tbaa !5
  %1775 = load ptr, ptr %10, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1775, i32 0, i32 3
  %1777 = getelementptr inbounds %struct.UT_hash_handle, ptr %1776, i32 0, i32 0
  %1778 = load ptr, ptr %1777, align 8, !tbaa !38
  %1779 = getelementptr inbounds %struct.UT_hash_table, ptr %1778, i32 0, i32 4
  store ptr %1774, ptr %1779, align 8, !tbaa !58
  br label %1780

1780:                                             ; preds = %1773
  %1781 = load ptr, ptr %42, align 8, !tbaa !5
  %1782 = load ptr, ptr %10, align 8, !tbaa !5
  %1783 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1782, i32 0, i32 3
  %1784 = getelementptr inbounds %struct.UT_hash_handle, ptr %1783, i32 0, i32 0
  %1785 = load ptr, ptr %1784, align 8, !tbaa !38
  %1786 = getelementptr inbounds %struct.UT_hash_table, ptr %1785, i32 0, i32 5
  %1787 = load i64, ptr %1786, align 8, !tbaa !46
  %1788 = sub i64 0, %1787
  %1789 = getelementptr inbounds i8, ptr %1781, i64 %1788
  store ptr %1789, ptr %10, align 8, !tbaa !5
  br label %1790

1790:                                             ; preds = %1780
  br label %1791

1791:                                             ; preds = %1790
  br label %1792

1792:                                             ; preds = %1791, %1770
  %1793 = load i32, ptr %36, align 4, !tbaa !34
  %1794 = mul i32 %1793, 2
  store i32 %1794, ptr %36, align 4, !tbaa !34
  br label %1529, !llvm.loop !80

1795:                                             ; preds = %1529
  br label %1796

1796:                                             ; preds = %1795, %1523
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  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 4, 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
  br label %1797

1797:                                             ; preds = %1796
  br label %1798

1798:                                             ; preds = %1797
  %1799 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gsub_multi, ptr @iSubtable_gsub_multi, i32 0, i32 12), align 8, !tbaa !81
  %1800 = load ptr, ptr %9, align 8, !tbaa !5
  call void %1799(ptr noundef %1800)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %1801 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1801, ptr %44, align 8, !tbaa !5
  %1802 = load ptr, ptr %10, align 8, !tbaa !5
  %1803 = icmp ne ptr %1802, null
  br i1 %1803, label %1804, label %1809

1804:                                             ; preds = %1798
  %1805 = load ptr, ptr %10, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1805, i32 0, i32 3
  %1807 = getelementptr inbounds %struct.UT_hash_handle, ptr %1806, i32 0, i32 2
  %1808 = load ptr, ptr %1807, align 8, !tbaa !56
  br label %1810

1809:                                             ; preds = %1798
  br label %1810

1810:                                             ; preds = %1809, %1804
  %1811 = phi ptr [ %1808, %1804 ], [ null, %1809 ]
  store ptr %1811, ptr %45, align 8, !tbaa !5
  br label %1812

1812:                                             ; preds = %2024, %1810
  %1813 = load ptr, ptr %44, align 8, !tbaa !5
  %1814 = icmp ne ptr %1813, null
  br i1 %1814, label %1815, label %2026

1815:                                             ; preds = %1812
  %1816 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gsub_multi, ptr @iSubtable_gsub_multi, i32 0, i32 13), align 8, !tbaa !83
  %1817 = load ptr, ptr %9, align 8, !tbaa !5
  %1818 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %46, i32 0, i32 0
  %1819 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !84
  %1820 = load ptr, ptr %44, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1820, i32 0, i32 0
  %1822 = load i32, ptr %1821, align 8, !tbaa !52
  %1823 = trunc i32 %1822 to i16
  %1824 = load ptr, ptr %44, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1824, i32 0, i32 1
  %1826 = load ptr, ptr %1825, align 8, !tbaa !53
  %1827 = call { i64, ptr } %1819(i16 noundef zeroext %1823, ptr noundef %1826)
  %1828 = getelementptr inbounds { i64, ptr }, ptr %1818, i32 0, i32 0
  %1829 = extractvalue { i64, ptr } %1827, 0
  store i64 %1829, ptr %1828, align 8
  %1830 = getelementptr inbounds { i64, ptr }, ptr %1818, i32 0, i32 1
  %1831 = extractvalue { i64, ptr } %1827, 1
  store ptr %1831, ptr %1830, align 8
  %1832 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %46, i32 0, i32 1
  %1833 = load ptr, ptr %44, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1833, i32 0, i32 2
  %1835 = load ptr, ptr %1834, align 8, !tbaa !54
  store ptr %1835, ptr %1832, align 8, !tbaa !28
  call void %1816(ptr noundef %1817, ptr noundef byval(%struct.otl_GsubMultiEntry) align 8 %46)
  %1836 = load ptr, ptr %44, align 8, !tbaa !5
  %1837 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1836, i32 0, i32 1
  %1838 = load ptr, ptr %1837, align 8, !tbaa !53
  call void @sdsfree(ptr noundef %1838)
  br label %1839

1839:                                             ; preds = %1815
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %1840 = load ptr, ptr %44, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1840, i32 0, i32 3
  store ptr %1841, ptr %47, align 8, !tbaa !5
  %1842 = load ptr, ptr %47, align 8, !tbaa !5
  %1843 = getelementptr inbounds %struct.UT_hash_handle, ptr %1842, i32 0, i32 1
  %1844 = load ptr, ptr %1843, align 8, !tbaa !77
  %1845 = icmp eq ptr %1844, null
  br i1 %1845, label %1846, label %1862

1846:                                             ; preds = %1839
  %1847 = load ptr, ptr %47, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.UT_hash_handle, ptr %1847, i32 0, i32 2
  %1849 = load ptr, ptr %1848, align 8, !tbaa !61
  %1850 = icmp eq ptr %1849, null
  br i1 %1850, label %1851, label %1862

1851:                                             ; preds = %1846
  %1852 = load ptr, ptr %10, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1852, i32 0, i32 3
  %1854 = getelementptr inbounds %struct.UT_hash_handle, ptr %1853, i32 0, i32 0
  %1855 = load ptr, ptr %1854, align 8, !tbaa !38
  %1856 = getelementptr inbounds %struct.UT_hash_table, ptr %1855, i32 0, i32 0
  %1857 = load ptr, ptr %1856, align 8, !tbaa !43
  call void @free(ptr noundef %1857) #9
  %1858 = load ptr, ptr %10, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1858, i32 0, i32 3
  %1860 = getelementptr inbounds %struct.UT_hash_handle, ptr %1859, i32 0, i32 0
  %1861 = load ptr, ptr %1860, align 8, !tbaa !38
  call void @free(ptr noundef %1861) #9
  store ptr null, ptr %10, align 8, !tbaa !5
  br label %2010

1862:                                             ; preds = %1846, %1839
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %1863 = load ptr, ptr %47, align 8, !tbaa !5
  %1864 = load ptr, ptr %10, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1864, i32 0, i32 3
  %1866 = getelementptr inbounds %struct.UT_hash_handle, ptr %1865, i32 0, i32 0
  %1867 = load ptr, ptr %1866, align 8, !tbaa !38
  %1868 = getelementptr inbounds %struct.UT_hash_table, ptr %1867, i32 0, i32 4
  %1869 = load ptr, ptr %1868, align 8, !tbaa !58
  %1870 = icmp eq ptr %1863, %1869
  br i1 %1870, label %1871, label %1887

1871:                                             ; preds = %1862
  %1872 = load ptr, ptr %47, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.UT_hash_handle, ptr %1872, i32 0, i32 1
  %1874 = load ptr, ptr %1873, align 8, !tbaa !77
  %1875 = load ptr, ptr %10, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1875, i32 0, i32 3
  %1877 = getelementptr inbounds %struct.UT_hash_handle, ptr %1876, i32 0, i32 0
  %1878 = load ptr, ptr %1877, align 8, !tbaa !38
  %1879 = getelementptr inbounds %struct.UT_hash_table, ptr %1878, i32 0, i32 5
  %1880 = load i64, ptr %1879, align 8, !tbaa !46
  %1881 = getelementptr inbounds i8, ptr %1874, i64 %1880
  %1882 = load ptr, ptr %10, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1882, i32 0, i32 3
  %1884 = getelementptr inbounds %struct.UT_hash_handle, ptr %1883, i32 0, i32 0
  %1885 = load ptr, ptr %1884, align 8, !tbaa !38
  %1886 = getelementptr inbounds %struct.UT_hash_table, ptr %1885, i32 0, i32 4
  store ptr %1881, ptr %1886, align 8, !tbaa !58
  br label %1887

1887:                                             ; preds = %1871, %1862
  %1888 = load ptr, ptr %47, 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 !77
  %1891 = icmp ne ptr %1890, null
  br i1 %1891, label %1892, label %1907

1892:                                             ; preds = %1887
  %1893 = load ptr, ptr %47, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.UT_hash_handle, ptr %1893, i32 0, i32 2
  %1895 = load ptr, ptr %1894, align 8, !tbaa !61
  %1896 = load ptr, ptr %47, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.UT_hash_handle, ptr %1896, i32 0, i32 1
  %1898 = load ptr, ptr %1897, align 8, !tbaa !77
  %1899 = load ptr, ptr %10, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1899, i32 0, i32 3
  %1901 = getelementptr inbounds %struct.UT_hash_handle, ptr %1900, i32 0, i32 0
  %1902 = load ptr, ptr %1901, align 8, !tbaa !38
  %1903 = getelementptr inbounds %struct.UT_hash_table, ptr %1902, i32 0, i32 5
  %1904 = load i64, ptr %1903, align 8, !tbaa !46
  %1905 = getelementptr inbounds i8, ptr %1898, i64 %1904
  %1906 = getelementptr inbounds %struct.UT_hash_handle, ptr %1905, i32 0, i32 2
  store ptr %1895, ptr %1906, align 8, !tbaa !61
  br label %1914

1907:                                             ; preds = %1887
  br label %1908

1908:                                             ; preds = %1907
  %1909 = load ptr, ptr %47, 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 !61
  store ptr %1911, ptr %10, align 8, !tbaa !5
  br label %1912

1912:                                             ; preds = %1908
  br label %1913

1913:                                             ; preds = %1912
  br label %1914

1914:                                             ; preds = %1913, %1892
  %1915 = load ptr, ptr %47, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.UT_hash_handle, ptr %1915, i32 0, i32 2
  %1917 = load ptr, ptr %1916, align 8, !tbaa !61
  %1918 = icmp ne ptr %1917, null
  br i1 %1918, label %1919, label %1934

1919:                                             ; preds = %1914
  %1920 = load ptr, ptr %47, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.UT_hash_handle, ptr %1920, i32 0, i32 1
  %1922 = load ptr, ptr %1921, align 8, !tbaa !77
  %1923 = load ptr, ptr %47, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.UT_hash_handle, ptr %1923, i32 0, i32 2
  %1925 = load ptr, ptr %1924, align 8, !tbaa !61
  %1926 = load ptr, ptr %10, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1926, i32 0, i32 3
  %1928 = getelementptr inbounds %struct.UT_hash_handle, ptr %1927, i32 0, i32 0
  %1929 = load ptr, ptr %1928, align 8, !tbaa !38
  %1930 = getelementptr inbounds %struct.UT_hash_table, ptr %1929, i32 0, i32 5
  %1931 = load i64, ptr %1930, align 8, !tbaa !46
  %1932 = getelementptr inbounds i8, ptr %1925, i64 %1931
  %1933 = getelementptr inbounds %struct.UT_hash_handle, ptr %1932, i32 0, i32 1
  store ptr %1922, ptr %1933, align 8, !tbaa !77
  br label %1934

1934:                                             ; preds = %1919, %1914
  br label %1935

1935:                                             ; preds = %1934
  %1936 = load ptr, ptr %47, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.UT_hash_handle, ptr %1936, i32 0, i32 7
  %1938 = load i32, ptr %1937, align 4, !tbaa !71
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1939, i32 0, i32 3
  %1941 = getelementptr inbounds %struct.UT_hash_handle, ptr %1940, i32 0, i32 0
  %1942 = load ptr, ptr %1941, align 8, !tbaa !38
  %1943 = getelementptr inbounds %struct.UT_hash_table, ptr %1942, i32 0, i32 1
  %1944 = load i32, ptr %1943, align 8, !tbaa !41
  %1945 = sub i32 %1944, 1
  %1946 = and i32 %1938, %1945
  store i32 %1946, ptr %48, align 4, !tbaa !34
  br label %1947

1947:                                             ; preds = %1935
  br label %1948

1948:                                             ; preds = %1947
  br label %1949

1949:                                             ; preds = %1948
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %1950 = load ptr, ptr %10, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.gsub_multi_hash, ptr %1950, i32 0, i32 3
  %1952 = getelementptr inbounds %struct.UT_hash_handle, ptr %1951, i32 0, i32 0
  %1953 = load ptr, ptr %1952, align 8, !tbaa !38
  %1954 = getelementptr inbounds %struct.UT_hash_table, ptr %1953, i32 0, i32 0
  %1955 = load ptr, ptr %1954, align 8, !tbaa !43
  %1956 = load i32, ptr %48, align 4, !tbaa !34
  %1957 = zext i32 %1956 to i64
  %1958 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1955, i64 %1957
  store ptr %1958, ptr %49, align 8, !tbaa !5
  %1959 = load ptr, ptr %49, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1959, i32 0, i32 1
  %1961 = load i32, ptr %1960, align 8, !tbaa !63
  %1962 = add i32 %1961, -1
  store i32 %1962, ptr %1960, align 8, !tbaa !63
  %1963 = load ptr, ptr %49, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1963, i32 0, i32 0
  %1965 = load ptr, ptr %1964, align 8, !tbaa !44
  %1966 = load ptr, ptr %47, align 8, !tbaa !5
  %1967 = icmp eq ptr %1965, %1966
  br i1 %1967, label %1968, label %1974

1968:                                             ; preds = %1949
  %1969 = load ptr, ptr %47, align 8, !tbaa !5
  %1970 = getelementptr inbounds %struct.UT_hash_handle, ptr %1969, i32 0, i32 4
  %1971 = load ptr, ptr %1970, align 8, !tbaa !70
  %1972 = load ptr, ptr %49, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1972, i32 0, i32 0
  store ptr %1971, ptr %1973, align 8, !tbaa !44
  br label %1974

1974:                                             ; preds = %1968, %1949
  %1975 = load ptr, ptr %47, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.UT_hash_handle, ptr %1975, i32 0, i32 3
  %1977 = load ptr, ptr %1976, align 8, !tbaa !65
  %1978 = icmp ne ptr %1977, null
  br i1 %1978, label %1979, label %1987

1979:                                             ; preds = %1974
  %1980 = load ptr, ptr %47, align 8, !tbaa !5
  %1981 = getelementptr inbounds %struct.UT_hash_handle, ptr %1980, i32 0, i32 4
  %1982 = load ptr, ptr %1981, align 8, !tbaa !70
  %1983 = load ptr, ptr %47, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.UT_hash_handle, ptr %1983, i32 0, i32 3
  %1985 = load ptr, ptr %1984, align 8, !tbaa !65
  %1986 = getelementptr inbounds %struct.UT_hash_handle, ptr %1985, i32 0, i32 4
  store ptr %1982, ptr %1986, align 8, !tbaa !70
  br label %1987

1987:                                             ; preds = %1979, %1974
  %1988 = load ptr, ptr %47, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.UT_hash_handle, ptr %1988, i32 0, i32 4
  %1990 = load ptr, ptr %1989, align 8, !tbaa !70
  %1991 = icmp ne ptr %1990, null
  br i1 %1991, label %1992, label %2000

1992:                                             ; preds = %1987
  %1993 = load ptr, ptr %47, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.UT_hash_handle, ptr %1993, i32 0, i32 3
  %1995 = load ptr, ptr %1994, align 8, !tbaa !65
  %1996 = load ptr, ptr %47, 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 !70
  %1999 = getelementptr inbounds %struct.UT_hash_handle, ptr %1998, i32 0, i32 3
  store ptr %1995, ptr %1999, align 8, !tbaa !65
  br label %2000

2000:                                             ; preds = %1992, %1987
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %2001

2001:                                             ; preds = %2000
  br label %2002

2002:                                             ; preds = %2001
  %2003 = load ptr, ptr %10, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.gsub_multi_hash, ptr %2003, i32 0, i32 3
  %2005 = getelementptr inbounds %struct.UT_hash_handle, ptr %2004, i32 0, i32 0
  %2006 = load ptr, ptr %2005, align 8, !tbaa !38
  %2007 = getelementptr inbounds %struct.UT_hash_table, ptr %2006, i32 0, i32 3
  %2008 = load i32, ptr %2007, align 8, !tbaa !62
  %2009 = add i32 %2008, -1
  store i32 %2009, ptr %2007, align 8, !tbaa !62
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %2010

2010:                                             ; preds = %2002, %1851
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %2011

2011:                                             ; preds = %2010
  br label %2012

2012:                                             ; preds = %2011
  %2013 = load ptr, ptr %44, align 8, !tbaa !5
  call void @free(ptr noundef %2013) #9
  store ptr null, ptr %44, align 8, !tbaa !5
  br label %2014

2014:                                             ; preds = %2012
  %2015 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %2015, ptr %44, align 8, !tbaa !5
  %2016 = load ptr, ptr %45, align 8, !tbaa !5
  %2017 = icmp ne ptr %2016, null
  br i1 %2017, label %2018, label %2023

2018:                                             ; preds = %2014
  %2019 = load ptr, ptr %45, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.gsub_multi_hash, ptr %2019, i32 0, i32 3
  %2021 = getelementptr inbounds %struct.UT_hash_handle, ptr %2020, i32 0, i32 2
  %2022 = load ptr, ptr %2021, align 8, !tbaa !56
  br label %2024

2023:                                             ; preds = %2014
  br label %2024

2024:                                             ; preds = %2023, %2018
  %2025 = phi ptr [ %2022, %2018 ], [ null, %2023 ]
  store ptr %2025, ptr %45, align 8, !tbaa !5
  br label %1812, !llvm.loop !86

2026:                                             ; preds = %1812
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  %2027 = load ptr, ptr %9, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.subtable_gsub_multi, ptr %2027, i32 0, i32 0
  %2029 = load i64, ptr %2028, align 8, !tbaa !11
  %2030 = icmp eq i64 %2029, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  ret i1 %2030
}

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

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

declare ptr @sdsempty() #2

declare void @fontop_consolidateCoverage(ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

declare ptr @sdsdup(ptr noundef) #2

; Function Attrs: 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

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

declare void @sdsfree(ptr noundef) #2

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


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

%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__otfcc_ICoverage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gsub_multi = 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_GsubMultiEntry = type { %struct.otfcc_Handle, ptr }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otfcc_pkgGlyphOrder = external local_unnamed_addr constant %struct.otfcc_GlyphOrderPackage, align 8
@.str = external hidden unnamed_addr constant [42 x i8], align 1
@otl_iCoverage = external local_unnamed_addr constant %struct.__otfcc_ICoverage, align 8
@.str.1 = external hidden unnamed_addr constant [84 x i8], align 1
@iSubtable_gsub_multi = external local_unnamed_addr constant %struct.__caryll_vectorinterface_subtable_gsub_multi, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

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

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

._crit_edge782:                                   ; preds = %316
  %.not = icmp eq ptr %.3, null
  br i1 %.not, label %.thread729, label %321

.thread729:                                       ; preds = %4, %._crit_edge782
  %13 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gsub_multi, i64 96), align 8, !tbaa !13
  tail call void %13(ptr noundef nonnull %2) #10
  br label %._crit_edge812

14:                                               ; preds = %.lr.ph781, %316
  %15 = phi i64 [ 0, %.lr.ph781 ], [ %318, %316 ]
  %.0778 = phi ptr [ null, %.lr.ph781 ], [ %.3, %316 ]
  %.0570777 = phi i16 [ 0, %.lr.ph781 ], [ %317, %316 ]
  %16 = load ptr, ptr %9, align 8, !tbaa !15
  %17 = load ptr, ptr %10, align 8, !tbaa !18
  %18 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %17, i64 %15
  %19 = tail call zeroext i1 %8(ptr noundef %16, ptr noundef %18) #10
  br i1 %19, label %29, label %20

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

29:                                               ; preds = %14
  %30 = load ptr, ptr %10, align 8, !tbaa !18
  %31 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %30, i64 %15, i32 1
  %32 = load ptr, ptr %31, align 8, !tbaa !28
  tail call void @fontop_consolidateCoverage(ptr noundef nonnull %0, ptr noundef %32, ptr noundef %3) #10
  %33 = load ptr, ptr %10, align 8, !tbaa !18
  %34 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %33, i64 %15, i32 1
  %35 = load ptr, ptr %34, align 8, !tbaa !28
  tail call void %12(ptr noundef %35, i1 noundef zeroext false) #10
  %36 = load ptr, ptr %10, align 8, !tbaa !18
  %37 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %36, i64 %15, i32 1
  %38 = load ptr, ptr %37, align 8, !tbaa !28
  %39 = load i16, ptr %38, align 8, !tbaa !29
  %.not701 = icmp eq i16 %39, 0
  br i1 %.not701, label %40, label %49

40:                                               ; preds = %29
  %41 = load ptr, ptr %11, align 8, !tbaa !19
  %42 = getelementptr inbounds i8, ptr %41, i64 48
  %43 = load ptr, ptr %42, align 8, !tbaa !22
  %44 = tail call ptr @sdsempty() #10
  %45 = load ptr, ptr %10, align 8, !tbaa !18
  %46 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %45, i64 %15, i32 0, i32 2
  %47 = load ptr, ptr %46, align 8, !tbaa !24
  %48 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %44, ptr noundef nonnull @.str.1, ptr noundef %47) #10
  tail call void %43(ptr noundef %41, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %48) #10
  br label %316

49:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  %50 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %36, i64 %15, i32 0, i32 1
  %51 = load i16, ptr %50, align 4, !tbaa !31
  %52 = zext i16 %51 to i32
  store i32 %52, ptr %5, align 4, !tbaa !32
  %53 = and i16 %51, -256
  %54 = zext i16 %53 to i32
  %55 = and i16 %51, 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
  %.not702 = icmp eq ptr %.0778, null
  br i1 %.not702, label %.loopexit763, label %91

91:                                               ; preds = %49
  %92 = getelementptr inbounds i8, ptr %.0778, i64 24
  %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
  %.not703 = icmp eq ptr %101, null
  br i1 %.not703, label %.loopexit763, 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
  %.1572769 = phi ptr [ %105, %.lr.ph ], [ %125, %122 ]
  %108 = getelementptr inbounds i8, ptr %.1572769, i64 76
  %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 %.1572769, i64 72
  %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 %.1572769, i64 64
  %117 = load ptr, ptr %116, align 8, !tbaa !44
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %117, ptr noundef nonnull dereferenceable(4) %5, i64 4)
  %118 = icmp eq i32 %bcmp, 0
  br i1 %118, label %.loopexit764, label %119

119:                                              ; preds = %115, %111, %107
  %120 = getelementptr inbounds i8, ptr %.1572769, i64 56
  %121 = load ptr, ptr %120, align 8, !tbaa !45
  %.not705 = icmp eq ptr %121, null
  br i1 %.not705, label %.loopexit763, 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

.loopexit763:                                     ; preds = %119, %91, %49
  %126 = tail call ptr @__caryll_allocate_clean(i64 noundef 80, i64 noundef 36)
  %127 = load ptr, ptr %10, align 8, !tbaa !18
  %128 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %127, i64 %15, i32 0, i32 1
  %129 = load i16, ptr %128, align 4, !tbaa !31
  %130 = zext i16 %129 to i32
  store i32 %130, ptr %126, align 8, !tbaa !48
  %131 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %127, i64 %15, i32 0, i32 2
  %132 = load ptr, ptr %131, align 8, !tbaa !24
  %133 = tail call ptr @sdsdup(ptr noundef %132) #10
  %134 = getelementptr inbounds i8, ptr %126, i64 8
  store ptr %133, ptr %134, align 8, !tbaa !49
  %135 = load ptr, ptr %10, align 8, !tbaa !18
  %136 = getelementptr inbounds %struct.otl_GsubMultiEntry, ptr %135, i64 %15, i32 1
  %137 = load ptr, ptr %136, align 8, !tbaa !28
  %138 = getelementptr inbounds i8, ptr %126, i64 16
  store ptr %137, ptr %138, align 8, !tbaa !50
  store ptr null, ptr %136, align 8, !tbaa !28
  %139 = getelementptr inbounds i8, ptr %126, i64 3
  %140 = load i8, ptr %139, align 1, !tbaa !51
  %141 = zext i8 %140 to i32
  %142 = shl nuw i32 %141, 24
  %143 = getelementptr inbounds i8, ptr %126, i64 2
  %144 = load i8, ptr %143, align 1, !tbaa !51
  %145 = zext i8 %144 to i32
  %146 = shl nuw nsw i32 %145, 16
  %147 = getelementptr inbounds i8, ptr %126, i64 1
  %148 = load i8, ptr %147, align 1, !tbaa !51
  %149 = zext i8 %148 to i32
  %150 = shl nuw nsw i32 %149, 8
  %151 = load i8, ptr %126, align 1, !tbaa !51
  %152 = zext i8 %151 to i32
  %153 = add i32 %142, 17973517
  %154 = add i32 %153, %146
  %155 = add i32 %154, %150
  %156 = add i32 %155, %152
  %157 = xor i32 %156, 522093
  %158 = sub i32 -1622558010, %157
  %159 = shl i32 %157, 8
  %160 = xor i32 %158, %159
  %161 = add i32 %157, %160
  %162 = sub i32 -17973517, %161
  %163 = lshr i32 %160, 13
  %164 = xor i32 %162, %163
  %165 = add i32 %160, %164
  %166 = sub i32 %157, %165
  %167 = lshr i32 %164, 12
  %168 = xor i32 %166, %167
  %169 = add i32 %164, %168
  %170 = sub i32 %160, %169
  %171 = shl i32 %168, 16
  %172 = xor i32 %170, %171
  %173 = add i32 %168, %172
  %174 = sub i32 %164, %173
  %175 = lshr i32 %172, 5
  %176 = xor i32 %174, %175
  %177 = add i32 %172, %176
  %178 = sub i32 %168, %177
  %179 = lshr i32 %176, 3
  %180 = xor i32 %178, %179
  %181 = add i32 %176, %180
  %182 = sub i32 %172, %181
  %183 = shl i32 %180, 10
  %184 = xor i32 %182, %183
  %185 = add i32 %180, %184
  %186 = sub i32 %176, %185
  %187 = lshr i32 %184, 15
  %188 = xor i32 %186, %187
  %189 = getelementptr inbounds i8, ptr %126, i64 24
  %190 = getelementptr inbounds i8, ptr %126, i64 76
  store i32 %188, ptr %190, align 4, !tbaa !42
  %191 = getelementptr inbounds i8, ptr %126, i64 64
  store ptr %126, ptr %191, align 8, !tbaa !44
  %192 = getelementptr inbounds i8, ptr %126, i64 72
  store i32 4, ptr %192, align 8, !tbaa !43
  br i1 %.not702, label %193, label %207

193:                                              ; preds = %.loopexit763
  %194 = getelementptr inbounds i8, ptr %126, i64 32
  %195 = 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) %194, i8 0, i64 16, i1 false)
  store ptr %195, ptr %189, align 8, !tbaa !33
  %.not707 = icmp eq ptr %195, null
  br i1 %.not707, label %196, label %197

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

197:                                              ; preds = %193
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %195, i8 0, i64 64, i1 false)
  %198 = load ptr, ptr %189, align 8, !tbaa !33
  %199 = getelementptr inbounds i8, ptr %198, i64 24
  store ptr %189, ptr %199, align 8, !tbaa !52
  %200 = getelementptr inbounds i8, ptr %198, i64 8
  store i32 32, ptr %200, align 8, !tbaa !36
  %201 = getelementptr inbounds i8, ptr %198, i64 12
  store i32 5, ptr %201, align 4, !tbaa !53
  %202 = getelementptr inbounds i8, ptr %198, i64 32
  store i64 24, ptr %202, align 8, !tbaa !41
  %203 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #11
  store ptr %203, ptr %198, align 8, !tbaa !38
  %204 = getelementptr inbounds i8, ptr %198, i64 56
  store i32 -1609490463, ptr %204, align 8, !tbaa !54
  %.not708 = icmp eq ptr %203, null
  br i1 %.not708, label %205, label %206

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

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

207:                                              ; preds = %.loopexit763
  %208 = getelementptr inbounds i8, ptr %.0778, i64 24
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  store ptr %209, ptr %189, align 8, !tbaa !33
  %210 = getelementptr inbounds i8, ptr %126, i64 40
  store ptr null, ptr %210, align 8, !tbaa !55
  %211 = getelementptr inbounds i8, ptr %209, i64 24
  %212 = load ptr, ptr %211, align 8, !tbaa !52
  %213 = getelementptr inbounds i8, ptr %209, i64 32
  %214 = load i64, ptr %213, align 8, !tbaa !41
  %215 = sub i64 0, %214
  %216 = getelementptr inbounds i8, ptr %212, i64 %215
  %217 = getelementptr inbounds i8, ptr %126, i64 32
  store ptr %216, ptr %217, align 8, !tbaa !56
  %218 = getelementptr inbounds i8, ptr %212, i64 16
  store ptr %126, ptr %218, align 8, !tbaa !57
  store ptr %189, ptr %211, align 8, !tbaa !52
  br label %219

219:                                              ; preds = %206, %207
  %220 = phi ptr [ %209, %207 ], [ %.pre, %206 ]
  %.1 = phi ptr [ %.0778, %207 ], [ %126, %206 ]
  %221 = getelementptr inbounds i8, ptr %220, i64 16
  %222 = load i32, ptr %221, align 8, !tbaa !58
  %223 = add i32 %222, 1
  store i32 %223, ptr %221, align 8, !tbaa !58
  %224 = getelementptr inbounds i8, ptr %220, i64 8
  %225 = load i32, ptr %224, align 8, !tbaa !36
  %226 = add i32 %225, -1
  %227 = and i32 %226, %188
  %228 = load ptr, ptr %220, align 8, !tbaa !38
  %229 = zext i32 %227 to i64
  %230 = getelementptr inbounds %struct.UT_hash_bucket, ptr %228, i64 %229
  %231 = getelementptr inbounds i8, ptr %230, i64 8
  %232 = load i32, ptr %231, align 8, !tbaa !59
  %233 = add i32 %232, 1
  store i32 %233, ptr %231, align 8, !tbaa !59
  %234 = load ptr, ptr %230, align 8, !tbaa !39
  %235 = getelementptr inbounds i8, ptr %126, i64 56
  store ptr %234, ptr %235, align 8, !tbaa !45
  %236 = getelementptr inbounds i8, ptr %126, i64 48
  store ptr null, ptr %236, align 8, !tbaa !60
  %.not709 = icmp eq ptr %234, null
  br i1 %.not709, label %239, label %237

237:                                              ; preds = %219
  %238 = getelementptr inbounds i8, ptr %234, i64 24
  store ptr %189, ptr %238, align 8, !tbaa !61
  br label %239

239:                                              ; preds = %237, %219
  store ptr %189, ptr %230, align 8, !tbaa !39
  %240 = getelementptr inbounds i8, ptr %230, i64 12
  %241 = load i32, ptr %240, align 4, !tbaa !62
  %242 = mul i32 %241, 10
  %243 = add i32 %242, 10
  %.not710 = icmp ult i32 %233, %243
  br i1 %.not710, label %.loopexit764, label %244

244:                                              ; preds = %239
  %245 = getelementptr inbounds i8, ptr %220, i64 52
  %246 = load i32, ptr %245, align 4, !tbaa !63
  %.not711 = icmp eq i32 %246, 0
  br i1 %.not711, label %247, label %.loopexit764

247:                                              ; preds = %244
  %248 = zext i32 %225 to i64
  %249 = shl nuw nsw i64 %248, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %249)
  %.not712 = icmp eq ptr %calloc, null
  br i1 %.not712, label %250, label %251

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

251:                                              ; preds = %247
  %252 = load ptr, ptr %189, align 8, !tbaa !33
  %253 = getelementptr inbounds i8, ptr %252, i64 16
  %254 = load i32, ptr %253, align 8, !tbaa !58
  %255 = getelementptr inbounds i8, ptr %252, i64 12
  %256 = load i32, ptr %255, align 4, !tbaa !53
  %257 = add i32 %256, 1
  %258 = lshr i32 %254, %257
  %259 = getelementptr inbounds i8, ptr %252, i64 8
  %260 = load i32, ptr %259, align 8, !tbaa !36
  %261 = shl i32 %260, 1
  %262 = add i32 %261, -1
  %263 = and i32 %262, %254
  %.not713 = icmp ne i32 %263, 0
  %264 = zext i1 %.not713 to i32
  %265 = add i32 %258, %264
  %266 = getelementptr inbounds i8, ptr %252, i64 40
  store i32 %265, ptr %266, align 8, !tbaa !64
  %267 = getelementptr inbounds i8, ptr %252, i64 44
  store i32 0, ptr %267, align 4, !tbaa !65
  %.not814 = icmp eq i32 %260, 0
  %.pre819 = load ptr, ptr %252, align 8, !tbaa !38
  br i1 %.not814, label %._crit_edge776, label %.lr.ph775

.lr.ph775:                                        ; preds = %251
  %wide.trip.count = zext i32 %260 to i64
  br label %268

268:                                              ; preds = %.lr.ph775, %._crit_edge
  %269 = phi i32 [ 0, %.lr.ph775 ], [ %295, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.lr.ph775 ], [ %indvars.iv.next, %._crit_edge ]
  %270 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre819, i64 %indvars.iv
  %271 = load ptr, ptr %270, align 8, !tbaa !39
  %.not714770 = icmp eq ptr %271, null
  br i1 %.not714770, label %._crit_edge, label %.lr.ph772

.lr.ph772:                                        ; preds = %268, %294
  %272 = phi i32 [ %289, %294 ], [ %269, %268 ]
  %.0628771 = phi ptr [ %274, %294 ], [ %271, %268 ]
  %273 = getelementptr inbounds i8, ptr %.0628771, i64 32
  %274 = load ptr, ptr %273, align 8, !tbaa !66
  %275 = getelementptr inbounds i8, ptr %.0628771, i64 52
  %276 = load i32, ptr %275, align 4, !tbaa !67
  %277 = and i32 %276, %262
  %278 = zext i32 %277 to i64
  %279 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %278
  %280 = getelementptr inbounds i8, ptr %279, i64 8
  %281 = load i32, ptr %280, align 8, !tbaa !59
  %282 = add i32 %281, 1
  store i32 %282, ptr %280, align 8, !tbaa !59
  %283 = icmp ugt i32 %282, %265
  br i1 %283, label %284, label %288

284:                                              ; preds = %.lr.ph772
  %285 = add i32 %272, 1
  store i32 %285, ptr %267, align 4, !tbaa !65
  %286 = udiv i32 %282, %265
  %287 = getelementptr inbounds i8, ptr %279, i64 12
  store i32 %286, ptr %287, align 4, !tbaa !62
  br label %288

288:                                              ; preds = %284, %.lr.ph772
  %289 = phi i32 [ %285, %284 ], [ %272, %.lr.ph772 ]
  %290 = getelementptr inbounds i8, ptr %.0628771, i64 24
  store ptr null, ptr %290, align 8, !tbaa !61
  %291 = load ptr, ptr %279, align 8, !tbaa !39
  store ptr %291, ptr %273, align 8, !tbaa !66
  %.not715 = icmp eq ptr %291, null
  br i1 %.not715, label %294, label %292

292:                                              ; preds = %288
  %293 = getelementptr inbounds i8, ptr %291, i64 24
  store ptr %.0628771, ptr %293, align 8, !tbaa !61
  br label %294

294:                                              ; preds = %292, %288
  store ptr %.0628771, ptr %279, align 8, !tbaa !39
  %.not714 = icmp eq ptr %274, null
  br i1 %.not714, label %._crit_edge, label %.lr.ph772, !llvm.loop !68

._crit_edge:                                      ; preds = %294, %268
  %295 = phi i32 [ %269, %268 ], [ %289, %294 ]
  %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_edge776, label %268, !llvm.loop !69

._crit_edge776:                                   ; preds = %._crit_edge, %251
  tail call void @free(ptr noundef %.pre819) #10
  %296 = load ptr, ptr %189, align 8, !tbaa !33
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  %298 = load i32, ptr %297, align 8, !tbaa !36
  %299 = shl i32 %298, 1
  store i32 %299, ptr %297, align 8, !tbaa !36
  %300 = getelementptr inbounds i8, ptr %296, i64 12
  %301 = load i32, ptr %300, align 4, !tbaa !53
  %302 = add i32 %301, 1
  store i32 %302, ptr %300, align 4, !tbaa !53
  store ptr %calloc, ptr %296, align 8, !tbaa !38
  %303 = getelementptr inbounds i8, ptr %296, i64 44
  %304 = load i32, ptr %303, align 4, !tbaa !65
  %305 = getelementptr inbounds i8, ptr %296, i64 16
  %306 = load i32, ptr %305, align 8, !tbaa !58
  %307 = lshr i32 %306, 1
  %308 = icmp ugt i32 %304, %307
  %309 = getelementptr inbounds i8, ptr %296, i64 48
  br i1 %308, label %310, label %.thread718

.thread718:                                       ; preds = %._crit_edge776
  store i32 0, ptr %309, align 8, !tbaa !70
  br label %.loopexit764

310:                                              ; preds = %._crit_edge776
  %311 = load i32, ptr %309, align 8, !tbaa !70
  %312 = add i32 %311, 1
  store i32 %312, ptr %309, align 8, !tbaa !70
  %313 = icmp ugt i32 %312, 1
  br i1 %313, label %314, label %.loopexit764

314:                                              ; preds = %310
  %315 = getelementptr inbounds i8, ptr %296, i64 52
  store i32 1, ptr %315, align 4, !tbaa !63
  br label %.loopexit764

.loopexit764:                                     ; preds = %115, %.thread718, %239, %244, %310, %314
  %.2 = phi ptr [ %.1, %314 ], [ %.1, %310 ], [ %.1, %244 ], [ %.1, %239 ], [ %.1, %.thread718 ], [ %.0778, %115 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  br label %316

316:                                              ; preds = %.loopexit764, %40, %20
  %.3 = phi ptr [ %.2, %.loopexit764 ], [ %.0778, %40 ], [ %.0778, %20 ]
  %317 = add i16 %.0570777, 1
  %318 = zext i16 %317 to i64
  %319 = load i64, ptr %2, align 8, !tbaa !5
  %320 = icmp ugt i64 %319, %318
  br i1 %320, label %14, label %._crit_edge782, !llvm.loop !71

321:                                              ; preds = %._crit_edge782
  %322 = getelementptr inbounds i8, ptr %.3, i64 24
  %323 = getelementptr inbounds i8, ptr %.3, i64 24
  br label %.lr.ph798

.preheader:                                       ; preds = %411
  %324 = shl i32 %.0599803857, 1
  %.not688793 = icmp eq ptr %.2581.ph, null
  br i1 %.not688793, label %.thread839, label %.lr.ph798

.lr.ph798:                                        ; preds = %321, %.preheader
  %.0599803857 = phi i32 [ 1, %321 ], [ %324, %.preheader ]
  %.0579804856 = phi ptr [ %322, %321 ], [ %.2581.ph, %.preheader ]
  %.not815 = icmp eq i32 %.0599803857, 0
  br label %325

.loopexit:                                        ; preds = %335
  %.not688 = icmp eq ptr %.2586, null
  br i1 %.not688, label %._crit_edge799, label %325, !llvm.loop !72

325:                                              ; preds = %.lr.ph798, %.loopexit
  %.0577797 = phi ptr [ null, %.lr.ph798 ], [ %.1578, %.loopexit ]
  %.1580796 = phi ptr [ null, %.lr.ph798 ], [ %.2581.ph, %.loopexit ]
  %.0588795 = phi ptr [ %.0579804856, %.lr.ph798 ], [ %.2586, %.loopexit ]
  %.0600794 = phi i32 [ 0, %.lr.ph798 ], [ %326, %.loopexit ]
  %326 = add i32 %.0600794, 1
  br i1 %.not815, label %.thread719.preheader, label %.lr.ph787

.lr.ph787:                                        ; preds = %325, %330
  %.0584785 = phi ptr [ %334, %330 ], [ %.0588795, %325 ]
  %.0595784 = phi i32 [ %327, %330 ], [ 0, %325 ]
  %327 = add nuw i32 %.0595784, 1
  %328 = getelementptr inbounds i8, ptr %.0584785, i64 16
  %329 = load ptr, ptr %328, align 8, !tbaa !57
  %.not690 = icmp eq ptr %329, null
  br i1 %.not690, label %.thread719.preheader, label %330

330:                                              ; preds = %.lr.ph787
  %331 = load ptr, ptr %323, align 8, !tbaa !33
  %332 = getelementptr inbounds i8, ptr %331, i64 32
  %333 = load i64, ptr %332, align 8, !tbaa !41
  %334 = getelementptr inbounds i8, ptr %329, i64 %333
  %exitcond818.not = icmp eq i32 %327, %.0599803857
  br i1 %exitcond818.not, label %.thread719.preheader, label %.lr.ph787, !llvm.loop !73

.thread719.preheader:                             ; preds = %330, %.lr.ph787, %325
  %.2597.ph = phi i32 [ 0, %325 ], [ %327, %.lr.ph787 ], [ %.0599803857, %330 ]
  %.2586.ph = phi ptr [ %.0588795, %325 ], [ null, %.lr.ph787 ], [ %334, %330 ]
  br label %.thread719.outer

.thread719.outer:                                 ; preds = %.thread719.outer.backedge, %.thread719.preheader
  %.2597.ph858 = phi i32 [ %.2597.ph, %.thread719.preheader ], [ %.3598, %.thread719.outer.backedge ]
  %.0593.ph = phi i32 [ %.0599803857, %.thread719.preheader ], [ %.1594, %.thread719.outer.backedge ]
  %.1589.ph = phi ptr [ %.0588795, %.thread719.preheader ], [ %.4592, %.thread719.outer.backedge ]
  %.2586.ph859 = phi ptr [ %.2586.ph, %.thread719.preheader ], [ %.3587, %.thread719.outer.backedge ]
  %.2581.ph = phi ptr [ %.1580796, %.thread719.preheader ], [ %.2581.ph.be, %.thread719.outer.backedge ]
  %.1578.ph = phi ptr [ %.0577797, %.thread719.preheader ], [ %.0583, %.thread719.outer.backedge ]
  br label %.thread719

.thread719:                                       ; preds = %.thread719.outer, %.thread720.thread
  %.2597 = phi i32 [ %.3598, %.thread720.thread ], [ %.2597.ph858, %.thread719.outer ]
  %.0593 = phi i32 [ %.1594, %.thread720.thread ], [ %.0593.ph, %.thread719.outer ]
  %.1589 = phi ptr [ %.4592, %.thread720.thread ], [ %.1589.ph, %.thread719.outer ]
  %.2586 = phi ptr [ %.3587, %.thread720.thread ], [ %.2586.ph859, %.thread719.outer ]
  %.1578 = phi ptr [ %.0583, %.thread720.thread ], [ %.1578.ph, %.thread719.outer ]
  %cond = icmp eq i32 %.2597, 0
  br i1 %cond, label %335, label %349

335:                                              ; preds = %.thread719
  %336 = icmp ne i32 %.0593, 0
  %337 = icmp ne ptr %.2586, null
  %338 = select i1 %336, i1 %337, i1 false
  br i1 %338, label %.critedge, label %.loopexit

.critedge:                                        ; preds = %335
  %339 = getelementptr inbounds i8, ptr %.2586, i64 16
  %340 = load ptr, ptr %339, align 8, !tbaa !57
  %.not697 = icmp eq ptr %340, null
  br i1 %.not697, label %346, label %341

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

346:                                              ; preds = %.critedge, %341
  %347 = phi ptr [ %345, %341 ], [ null, %.critedge ]
  %348 = add i32 %.0593, -1
  br label %394

349:                                              ; preds = %.thread719
  %350 = icmp eq i32 %.0593, 0
  %351 = icmp eq ptr %.2586, null
  %or.cond = select i1 %350, i1 true, i1 %351
  br i1 %or.cond, label %352, label %363

352:                                              ; preds = %349
  %.not695 = icmp eq ptr %.1589, null
  br i1 %.not695, label %361, label %353

353:                                              ; preds = %352
  %354 = getelementptr inbounds i8, ptr %.1589, i64 16
  %355 = load ptr, ptr %354, align 8, !tbaa !57
  %.not696 = icmp eq ptr %355, null
  br i1 %.not696, label %361, label %356

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

361:                                              ; preds = %356, %353, %352
  %.2590 = phi ptr [ null, %352 ], [ %360, %356 ], [ null, %353 ]
  %362 = add i32 %.2597, -1
  br label %394

363:                                              ; preds = %349
  %364 = load ptr, ptr %323, align 8, !tbaa !33
  %365 = getelementptr inbounds i8, ptr %364, i64 32
  %366 = load i64, ptr %365, align 8, !tbaa !41
  %367 = sub i64 0, %366
  %368 = getelementptr inbounds i8, ptr %.1589, i64 %367
  %369 = getelementptr inbounds i8, ptr %.2586, i64 %367
  %370 = tail call i32 @by_from_id_multi(ptr noundef %368, ptr noundef %369)
  %371 = icmp slt i32 %370, 1
  br i1 %371, label %372, label %383

372:                                              ; preds = %363
  %.not693 = icmp eq ptr %.1589, null
  br i1 %.not693, label %381, label %373

373:                                              ; preds = %372
  %374 = getelementptr inbounds i8, ptr %.1589, i64 16
  %375 = load ptr, ptr %374, align 8, !tbaa !57
  %.not694 = icmp eq ptr %375, null
  br i1 %.not694, label %381, label %376

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

381:                                              ; preds = %376, %373, %372
  %.3591 = phi ptr [ null, %372 ], [ %380, %376 ], [ null, %373 ]
  %382 = add i32 %.2597, -1
  br label %394

383:                                              ; preds = %363
  %384 = getelementptr inbounds i8, ptr %.2586, i64 16
  %385 = load ptr, ptr %384, align 8, !tbaa !57
  %.not692 = icmp eq ptr %385, null
  br i1 %.not692, label %391, label %386

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

391:                                              ; preds = %383, %386
  %392 = phi ptr [ %390, %386 ], [ null, %383 ]
  %393 = add i32 %.0593, -1
  br label %394

394:                                              ; preds = %361, %391, %381, %346
  %.3598 = phi i32 [ 0, %346 ], [ %362, %361 ], [ %382, %381 ], [ %.2597, %391 ]
  %.1594 = phi i32 [ %348, %346 ], [ %.0593, %361 ], [ %.0593, %381 ], [ %393, %391 ]
  %.4592 = phi ptr [ %.1589, %346 ], [ %.2590, %361 ], [ %.3591, %381 ], [ %.1589, %391 ]
  %.3587 = phi ptr [ %347, %346 ], [ %.2586, %361 ], [ %.2586, %381 ], [ %392, %391 ]
  %.0583 = phi ptr [ %.2586, %346 ], [ %.1589, %361 ], [ %.1589, %381 ], [ %.2586, %391 ]
  %.not698 = icmp eq ptr %.1578, null
  %.not700 = icmp eq ptr %.0583, null
  br i1 %.not698, label %397, label %395

395:                                              ; preds = %394
  br i1 %.not700, label %.thread720.thread, label %398

.thread720.thread:                                ; preds = %395
  %396 = getelementptr inbounds i8, ptr %.1578, i64 16
  store ptr null, ptr %396, align 8, !tbaa !57
  br label %.thread719, !llvm.loop !74

397:                                              ; preds = %394
  br i1 %.not700, label %.thread719.outer.backedge, label %406

398:                                              ; preds = %395
  %399 = load ptr, ptr %323, align 8, !tbaa !33
  %400 = getelementptr inbounds i8, ptr %399, i64 32
  %401 = load i64, ptr %400, align 8, !tbaa !41
  %402 = sub i64 0, %401
  %403 = getelementptr inbounds i8, ptr %.0583, i64 %402
  %404 = getelementptr inbounds i8, ptr %.1578, i64 16
  store ptr %403, ptr %404, align 8, !tbaa !57
  %405 = getelementptr inbounds i8, ptr %.1578, i64 %402
  br label %406

406:                                              ; preds = %397, %398
  %.3582723728 = phi ptr [ %.2581.ph, %398 ], [ %.0583, %397 ]
  %407 = phi ptr [ %405, %398 ], [ null, %397 ]
  %408 = getelementptr inbounds i8, ptr %.0583, i64 8
  store ptr %407, ptr %408, align 8, !tbaa !75
  br label %.thread719.outer.backedge

.thread719.outer.backedge:                        ; preds = %406, %397
  %.2581.ph.be = phi ptr [ null, %397 ], [ %.3582723728, %406 ]
  br label %.thread719.outer, !llvm.loop !74

._crit_edge799:                                   ; preds = %.loopexit
  %.not689 = icmp eq ptr %.1578, null
  br i1 %.not689, label %411, label %409

409:                                              ; preds = %._crit_edge799
  %410 = getelementptr inbounds i8, ptr %.1578, i64 16
  store ptr null, ptr %410, align 8, !tbaa !57
  br label %411

411:                                              ; preds = %409, %._crit_edge799
  %.0577.lcssa838 = phi ptr [ %.1578, %409 ], [ null, %._crit_edge799 ]
  %412 = icmp ult i32 %326, 2
  br i1 %412, label %.thread839, label %.preheader

.thread839:                                       ; preds = %.preheader, %411
  %.1580.lcssa837844 = phi ptr [ %.2581.ph, %411 ], [ null, %.preheader ]
  %.0577.lcssa838843 = phi ptr [ %.0577.lcssa838, %411 ], [ null, %.preheader ]
  %413 = getelementptr inbounds i8, ptr %.3, i64 24
  %414 = load ptr, ptr %413, align 8, !tbaa !33
  %415 = getelementptr inbounds i8, ptr %414, i64 24
  store ptr %.0577.lcssa838843, ptr %415, align 8, !tbaa !52
  %416 = getelementptr inbounds i8, ptr %414, i64 32
  %417 = load i64, ptr %416, align 8, !tbaa !41
  %418 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gsub_multi, i64 96), align 8, !tbaa !13
  tail call void %418(ptr noundef nonnull %2) #10
  %.not681 = icmp eq ptr %.1580.lcssa837844, null
  br i1 %.not681, label %._crit_edge812, label %.lr.ph811

.lr.ph811:                                        ; preds = %.thread839
  %419 = sub i64 0, %417
  %420 = getelementptr inbounds i8, ptr %.1580.lcssa837844, i64 %419
  %421 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gsub_multi, i64 104), align 8, !tbaa !76
  %422 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 80), align 8, !tbaa !77
  %423 = getelementptr inbounds i8, ptr %6, i64 8
  %424 = getelementptr inbounds i8, ptr %6, i64 16
  br label %425

425:                                              ; preds = %501, %.lr.ph811
  %.7809 = phi ptr [ %420, %.lr.ph811 ], [ %.9, %501 ]
  %.0576807 = phi ptr [ %420, %.lr.ph811 ], [ %.0575808, %501 ]
  %.0575808.in = getelementptr inbounds i8, ptr %.0576807, i64 40
  %.0575808 = load ptr, ptr %.0575808.in, align 8, !tbaa !55
  %426 = load i32, ptr %.0576807, align 8, !tbaa !48
  %427 = trunc i32 %426 to i16
  %428 = getelementptr inbounds i8, ptr %.0576807, i64 8
  %429 = load ptr, ptr %428, align 8, !tbaa !49
  %430 = tail call { i64, ptr } %422(i16 noundef zeroext %427, ptr noundef %429) #10
  %431 = extractvalue { i64, ptr } %430, 0
  store i64 %431, ptr %6, align 8
  %432 = extractvalue { i64, ptr } %430, 1
  store ptr %432, ptr %423, align 8
  %433 = getelementptr inbounds i8, ptr %.0576807, i64 16
  %434 = load ptr, ptr %433, align 8, !tbaa !50
  store ptr %434, ptr %424, align 8, !tbaa !28
  tail call void %421(ptr noundef nonnull %2, ptr noundef nonnull byval(%struct.otl_GsubMultiEntry) align 8 %6) #10
  %435 = load ptr, ptr %428, align 8, !tbaa !49
  tail call void @sdsfree(ptr noundef %435) #10
  %436 = getelementptr inbounds i8, ptr %.0576807, i64 24
  %437 = getelementptr inbounds i8, ptr %.0576807, i64 32
  %438 = load ptr, ptr %437, align 8, !tbaa !75
  %439 = icmp eq ptr %438, null
  br i1 %439, label %440, label %449

440:                                              ; preds = %425
  %441 = getelementptr inbounds i8, ptr %.0576807, i64 40
  %442 = load ptr, ptr %441, align 8, !tbaa !57
  %443 = icmp eq ptr %442, null
  br i1 %443, label %444, label %449

444:                                              ; preds = %440
  %445 = getelementptr inbounds i8, ptr %.7809, i64 24
  %446 = load ptr, ptr %445, align 8, !tbaa !33
  %447 = load ptr, ptr %446, align 8, !tbaa !38
  tail call void @free(ptr noundef %447) #10
  %448 = load ptr, ptr %445, align 8, !tbaa !33
  tail call void @free(ptr noundef %448) #10
  br label %501

449:                                              ; preds = %440, %425
  %450 = getelementptr inbounds i8, ptr %.7809, i64 24
  %451 = load ptr, ptr %450, align 8, !tbaa !33
  %452 = getelementptr inbounds i8, ptr %451, i64 24
  %453 = load ptr, ptr %452, align 8, !tbaa !52
  %454 = icmp eq ptr %436, %453
  br i1 %454, label %455, label %459

455:                                              ; preds = %449
  %456 = getelementptr inbounds i8, ptr %451, i64 32
  %457 = load i64, ptr %456, align 8, !tbaa !41
  %458 = getelementptr inbounds i8, ptr %438, i64 %457
  store ptr %458, ptr %452, align 8, !tbaa !52
  br label %459

459:                                              ; preds = %455, %449
  %460 = getelementptr inbounds i8, ptr %.0576807, i64 40
  %461 = load ptr, ptr %460, align 8, !tbaa !57
  br i1 %439, label %467, label %462

462:                                              ; preds = %459
  %463 = getelementptr inbounds i8, ptr %451, i64 32
  %464 = load i64, ptr %463, align 8, !tbaa !41
  %465 = getelementptr inbounds i8, ptr %438, i64 %464
  %466 = getelementptr inbounds i8, ptr %465, i64 16
  store ptr %461, ptr %466, align 8, !tbaa !57
  br label %467

467:                                              ; preds = %459, %462
  %.8 = phi ptr [ %.7809, %462 ], [ %461, %459 ]
  %.not684 = icmp eq ptr %461, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.8, i64 24
  %.pre821 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !33
  br i1 %.not684, label %._crit_edge820, label %468

468:                                              ; preds = %467
  %469 = getelementptr inbounds i8, ptr %.pre821, i64 32
  %470 = load i64, ptr %469, align 8, !tbaa !41
  %471 = getelementptr inbounds i8, ptr %461, i64 %470
  %472 = getelementptr inbounds i8, ptr %471, i64 8
  store ptr %438, ptr %472, align 8, !tbaa !75
  br label %._crit_edge820

._crit_edge820:                                   ; preds = %467, %468
  %473 = getelementptr inbounds i8, ptr %.0576807, i64 76
  %474 = load i32, ptr %473, align 4, !tbaa !67
  %475 = getelementptr inbounds i8, ptr %.pre821, i64 8
  %476 = load i32, ptr %475, align 8, !tbaa !36
  %477 = add i32 %476, -1
  %478 = and i32 %477, %474
  %479 = load ptr, ptr %.pre821, align 8, !tbaa !38
  %480 = zext i32 %478 to i64
  %481 = getelementptr inbounds %struct.UT_hash_bucket, ptr %479, i64 %480
  %482 = getelementptr inbounds i8, ptr %481, i64 8
  %483 = load i32, ptr %482, align 8, !tbaa !59
  %484 = add i32 %483, -1
  store i32 %484, ptr %482, align 8, !tbaa !59
  %485 = load ptr, ptr %481, align 8, !tbaa !39
  %486 = icmp eq ptr %485, %436
  br i1 %486, label %487, label %490

487:                                              ; preds = %._crit_edge820
  %488 = getelementptr inbounds i8, ptr %.0576807, i64 56
  %489 = load ptr, ptr %488, align 8, !tbaa !66
  store ptr %489, ptr %481, align 8, !tbaa !39
  br label %490

490:                                              ; preds = %487, %._crit_edge820
  %491 = getelementptr inbounds i8, ptr %.0576807, i64 48
  %492 = load ptr, ptr %491, align 8, !tbaa !61
  %.not685 = icmp eq ptr %492, null
  %.phi.trans.insert823 = getelementptr inbounds i8, ptr %.0576807, i64 56
  %.pre824 = load ptr, ptr %.phi.trans.insert823, align 8, !tbaa !66
  br i1 %.not685, label %._crit_edge822, label %493

493:                                              ; preds = %490
  %494 = getelementptr inbounds i8, ptr %492, i64 32
  store ptr %.pre824, ptr %494, align 8, !tbaa !66
  br label %._crit_edge822

._crit_edge822:                                   ; preds = %490, %493
  %.not686 = icmp eq ptr %.pre824, null
  br i1 %.not686, label %497, label %495

495:                                              ; preds = %._crit_edge822
  %496 = getelementptr inbounds i8, ptr %.pre824, i64 24
  store ptr %492, ptr %496, align 8, !tbaa !61
  br label %497

497:                                              ; preds = %495, %._crit_edge822
  %498 = getelementptr inbounds i8, ptr %.pre821, i64 16
  %499 = load i32, ptr %498, align 8, !tbaa !58
  %500 = add i32 %499, -1
  store i32 %500, ptr %498, align 8, !tbaa !58
  br label %501

501:                                              ; preds = %497, %444
  %.9 = phi ptr [ null, %444 ], [ %.8, %497 ]
  tail call void @free(ptr noundef nonnull %.0576807) #10
  %.not687 = icmp eq ptr %.0575808, null
  br i1 %.not687, label %._crit_edge812, label %425, !llvm.loop !79

._crit_edge812:                                   ; preds = %501, %.thread729, %.thread839
  %502 = load i64, ptr %2, align 8, !tbaa !5
  %503 = icmp eq i64 %502, 0
  ret i1 %503
}

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

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

declare ptr @sdsempty() local_unnamed_addr #2

declare void @fontop_consolidateCoverage(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare ptr @sdsdup(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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

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

declare void @sdsfree(ptr noundef) local_unnamed_addr #2

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


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