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

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

%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gsub_single = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_GsubSingleEntry = type { %struct.otfcc_Handle, %struct.otfcc_Handle }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.subtable_gsub_single = type { i64, i64, ptr }
%struct._caryll_font = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.gsub_single_map_hash = type { i32, ptr, i32, 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
@.str.1 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [58 x i8], align 1
@iSubtable_gsub_single = external constant %struct.__caryll_vectorinterface_subtable_gsub_single, align 8
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @consolidate_gsub_single(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %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_GsubSingleEntry, 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 8, ptr %11) #9
  store i64 0, ptr %11, align 8, !tbaa !9
  br label %51

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

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

58:                                               ; preds = %51
  %59 = load ptr, ptr getelementptr inbounds (%struct.otfcc_GlyphOrderPackage, ptr @otfcc_pkgGlyphOrder, i32 0, i32 11), align 8, !tbaa !13
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct._caryll_font, ptr %60, i32 0, i32 33
  %62 = load ptr, ptr %61, align 8, !tbaa !15
  %63 = load ptr, ptr %9, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.subtable_gsub_single, ptr %63, i32 0, i32 2
  %65 = load ptr, ptr %64, align 8, !tbaa !18
  %66 = load i64, ptr %11, align 8, !tbaa !9
  %67 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %65, i64 %66
  %68 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %67, i32 0, i32 0
  %69 = call zeroext i1 %59(ptr noundef %62, ptr noundef %68)
  br i1 %69, label %89, label %70

70:                                               ; preds = %58
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.otfcc_Options, ptr %71, i32 0, i32 24
  %73 = load ptr, ptr %72, align 8, !tbaa !19
  %74 = getelementptr inbounds %struct.otfcc_ILogger, ptr %73, i32 0, i32 6
  %75 = load ptr, ptr %74, align 8, !tbaa !22
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.otfcc_Options, ptr %76, i32 0, i32 24
  %78 = load ptr, ptr %77, align 8, !tbaa !19
  %79 = call ptr @sdsempty()
  %80 = load ptr, ptr %9, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.subtable_gsub_single, ptr %80, i32 0, i32 2
  %82 = load ptr, ptr %81, align 8, !tbaa !18
  %83 = load i64, ptr %11, align 8, !tbaa !9
  %84 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %82, i64 %83
  %85 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %84, i32 0, i32 0
  %86 = getelementptr inbounds %struct.otfcc_Handle, ptr %85, i32 0, i32 2
  %87 = load ptr, ptr %86, align 8, !tbaa !24
  %88 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %79, ptr noundef @.str, ptr noundef %87)
  call void %75(ptr noundef %78, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %88)
  br label %1517

89:                                               ; preds = %58
  %90 = load ptr, ptr getelementptr inbounds (%struct.otfcc_GlyphOrderPackage, ptr @otfcc_pkgGlyphOrder, i32 0, i32 11), align 8, !tbaa !13
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct._caryll_font, ptr %91, i32 0, i32 33
  %93 = load ptr, ptr %92, align 8, !tbaa !15
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.subtable_gsub_single, ptr %94, i32 0, i32 2
  %96 = load ptr, ptr %95, align 8, !tbaa !18
  %97 = load i64, ptr %11, align 8, !tbaa !9
  %98 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %96, i64 %97
  %99 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %98, i32 0, i32 1
  %100 = call zeroext i1 %90(ptr noundef %93, ptr noundef %99)
  br i1 %100, label %120, label %101

101:                                              ; preds = %89
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.otfcc_Options, ptr %102, i32 0, i32 24
  %104 = load ptr, ptr %103, align 8, !tbaa !19
  %105 = getelementptr inbounds %struct.otfcc_ILogger, ptr %104, i32 0, i32 6
  %106 = load ptr, ptr %105, align 8, !tbaa !22
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.otfcc_Options, ptr %107, i32 0, i32 24
  %109 = load ptr, ptr %108, align 8, !tbaa !19
  %110 = call ptr @sdsempty()
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.subtable_gsub_single, ptr %111, i32 0, i32 2
  %113 = load ptr, ptr %112, align 8, !tbaa !18
  %114 = load i64, ptr %11, align 8, !tbaa !9
  %115 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %113, i64 %114
  %116 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %115, i32 0, i32 1
  %117 = getelementptr inbounds %struct.otfcc_Handle, ptr %116, i32 0, i32 2
  %118 = load ptr, ptr %117, align 8, !tbaa !28
  %119 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %110, ptr noundef @.str, ptr noundef %118)
  call void %106(ptr noundef %109, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %119)
  br label %1517

120:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.subtable_gsub_single, ptr %121, i32 0, i32 2
  %123 = load ptr, ptr %122, align 8, !tbaa !18
  %124 = load i64, ptr %11, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %123, i64 %124
  %126 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %125, i32 0, i32 0
  %127 = getelementptr inbounds %struct.otfcc_Handle, ptr %126, i32 0, i32 1
  %128 = load i16, ptr %127, align 4, !tbaa !29
  %129 = zext i16 %128 to i32
  store i32 %129, ptr %13, align 4, !tbaa !30
  br label %130

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

131:                                              ; preds = %130
  br label %132

132:                                              ; preds = %131
  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 !30
  store i32 -1640531527, ptr %16, align 4, !tbaa !30
  store i32 -1640531527, ptr %15, align 4, !tbaa !30
  store i32 4, ptr %17, align 4, !tbaa !30
  br label %133

133:                                              ; preds = %301, %132
  %134 = load i32, ptr %17, align 4, !tbaa !30
  %135 = icmp uge i32 %134, 12
  br i1 %135, label %136, label %306

136:                                              ; preds = %133
  %137 = load ptr, ptr %18, align 8, !tbaa !5
  %138 = getelementptr inbounds i8, ptr %137, i64 0
  %139 = load i8, ptr %138, align 1, !tbaa !31
  %140 = zext i8 %139 to i32
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 1
  %143 = load i8, ptr %142, align 1, !tbaa !31
  %144 = zext i8 %143 to i32
  %145 = shl i32 %144, 8
  %146 = add i32 %140, %145
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i64 2
  %149 = load i8, ptr %148, align 1, !tbaa !31
  %150 = zext i8 %149 to i32
  %151 = shl i32 %150, 16
  %152 = add i32 %146, %151
  %153 = load ptr, ptr %18, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 3
  %155 = load i8, ptr %154, align 1, !tbaa !31
  %156 = zext i8 %155 to i32
  %157 = shl i32 %156, 24
  %158 = add i32 %152, %157
  %159 = load i32, ptr %15, align 4, !tbaa !30
  %160 = add i32 %159, %158
  store i32 %160, ptr %15, align 4, !tbaa !30
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = getelementptr inbounds i8, ptr %161, i64 4
  %163 = load i8, ptr %162, align 1, !tbaa !31
  %164 = zext i8 %163 to i32
  %165 = load ptr, ptr %18, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 5
  %167 = load i8, ptr %166, align 1, !tbaa !31
  %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 6
  %173 = load i8, ptr %172, align 1, !tbaa !31
  %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 7
  %179 = load i8, ptr %178, align 1, !tbaa !31
  %180 = zext i8 %179 to i32
  %181 = shl i32 %180, 24
  %182 = add i32 %176, %181
  %183 = load i32, ptr %16, align 4, !tbaa !30
  %184 = add i32 %183, %182
  store i32 %184, ptr %16, align 4, !tbaa !30
  %185 = load ptr, ptr %18, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i64 8
  %187 = load i8, ptr %186, align 1, !tbaa !31
  %188 = zext i8 %187 to i32
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 9
  %191 = load i8, ptr %190, align 1, !tbaa !31
  %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 10
  %197 = load i8, ptr %196, align 1, !tbaa !31
  %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 11
  %203 = load i8, ptr %202, align 1, !tbaa !31
  %204 = zext i8 %203 to i32
  %205 = shl i32 %204, 24
  %206 = add i32 %200, %205
  %207 = load i32, ptr %14, align 4, !tbaa !30
  %208 = add i32 %207, %206
  store i32 %208, ptr %14, align 4, !tbaa !30
  br label %209

209:                                              ; preds = %136
  %210 = load i32, ptr %16, align 4, !tbaa !30
  %211 = load i32, ptr %15, align 4, !tbaa !30
  %212 = sub i32 %211, %210
  store i32 %212, ptr %15, align 4, !tbaa !30
  %213 = load i32, ptr %14, align 4, !tbaa !30
  %214 = load i32, ptr %15, align 4, !tbaa !30
  %215 = sub i32 %214, %213
  store i32 %215, ptr %15, align 4, !tbaa !30
  %216 = load i32, ptr %14, align 4, !tbaa !30
  %217 = lshr i32 %216, 13
  %218 = load i32, ptr %15, align 4, !tbaa !30
  %219 = xor i32 %218, %217
  store i32 %219, ptr %15, align 4, !tbaa !30
  %220 = load i32, ptr %14, align 4, !tbaa !30
  %221 = load i32, ptr %16, align 4, !tbaa !30
  %222 = sub i32 %221, %220
  store i32 %222, ptr %16, align 4, !tbaa !30
  %223 = load i32, ptr %15, align 4, !tbaa !30
  %224 = load i32, ptr %16, align 4, !tbaa !30
  %225 = sub i32 %224, %223
  store i32 %225, ptr %16, align 4, !tbaa !30
  %226 = load i32, ptr %15, align 4, !tbaa !30
  %227 = shl i32 %226, 8
  %228 = load i32, ptr %16, align 4, !tbaa !30
  %229 = xor i32 %228, %227
  store i32 %229, ptr %16, align 4, !tbaa !30
  %230 = load i32, ptr %15, align 4, !tbaa !30
  %231 = load i32, ptr %14, align 4, !tbaa !30
  %232 = sub i32 %231, %230
  store i32 %232, ptr %14, align 4, !tbaa !30
  %233 = load i32, ptr %16, align 4, !tbaa !30
  %234 = load i32, ptr %14, align 4, !tbaa !30
  %235 = sub i32 %234, %233
  store i32 %235, ptr %14, align 4, !tbaa !30
  %236 = load i32, ptr %16, align 4, !tbaa !30
  %237 = lshr i32 %236, 13
  %238 = load i32, ptr %14, align 4, !tbaa !30
  %239 = xor i32 %238, %237
  store i32 %239, ptr %14, align 4, !tbaa !30
  %240 = load i32, ptr %16, align 4, !tbaa !30
  %241 = load i32, ptr %15, align 4, !tbaa !30
  %242 = sub i32 %241, %240
  store i32 %242, ptr %15, align 4, !tbaa !30
  %243 = load i32, ptr %14, align 4, !tbaa !30
  %244 = load i32, ptr %15, align 4, !tbaa !30
  %245 = sub i32 %244, %243
  store i32 %245, ptr %15, align 4, !tbaa !30
  %246 = load i32, ptr %14, align 4, !tbaa !30
  %247 = lshr i32 %246, 12
  %248 = load i32, ptr %15, align 4, !tbaa !30
  %249 = xor i32 %248, %247
  store i32 %249, ptr %15, align 4, !tbaa !30
  %250 = load i32, ptr %14, align 4, !tbaa !30
  %251 = load i32, ptr %16, align 4, !tbaa !30
  %252 = sub i32 %251, %250
  store i32 %252, ptr %16, align 4, !tbaa !30
  %253 = load i32, ptr %15, align 4, !tbaa !30
  %254 = load i32, ptr %16, align 4, !tbaa !30
  %255 = sub i32 %254, %253
  store i32 %255, ptr %16, align 4, !tbaa !30
  %256 = load i32, ptr %15, align 4, !tbaa !30
  %257 = shl i32 %256, 16
  %258 = load i32, ptr %16, align 4, !tbaa !30
  %259 = xor i32 %258, %257
  store i32 %259, ptr %16, align 4, !tbaa !30
  %260 = load i32, ptr %15, align 4, !tbaa !30
  %261 = load i32, ptr %14, align 4, !tbaa !30
  %262 = sub i32 %261, %260
  store i32 %262, ptr %14, align 4, !tbaa !30
  %263 = load i32, ptr %16, align 4, !tbaa !30
  %264 = load i32, ptr %14, align 4, !tbaa !30
  %265 = sub i32 %264, %263
  store i32 %265, ptr %14, align 4, !tbaa !30
  %266 = load i32, ptr %16, align 4, !tbaa !30
  %267 = lshr i32 %266, 5
  %268 = load i32, ptr %14, align 4, !tbaa !30
  %269 = xor i32 %268, %267
  store i32 %269, ptr %14, align 4, !tbaa !30
  %270 = load i32, ptr %16, align 4, !tbaa !30
  %271 = load i32, ptr %15, align 4, !tbaa !30
  %272 = sub i32 %271, %270
  store i32 %272, ptr %15, align 4, !tbaa !30
  %273 = load i32, ptr %14, align 4, !tbaa !30
  %274 = load i32, ptr %15, align 4, !tbaa !30
  %275 = sub i32 %274, %273
  store i32 %275, ptr %15, align 4, !tbaa !30
  %276 = load i32, ptr %14, align 4, !tbaa !30
  %277 = lshr i32 %276, 3
  %278 = load i32, ptr %15, align 4, !tbaa !30
  %279 = xor i32 %278, %277
  store i32 %279, ptr %15, align 4, !tbaa !30
  %280 = load i32, ptr %14, align 4, !tbaa !30
  %281 = load i32, ptr %16, align 4, !tbaa !30
  %282 = sub i32 %281, %280
  store i32 %282, ptr %16, align 4, !tbaa !30
  %283 = load i32, ptr %15, align 4, !tbaa !30
  %284 = load i32, ptr %16, align 4, !tbaa !30
  %285 = sub i32 %284, %283
  store i32 %285, ptr %16, align 4, !tbaa !30
  %286 = load i32, ptr %15, align 4, !tbaa !30
  %287 = shl i32 %286, 10
  %288 = load i32, ptr %16, align 4, !tbaa !30
  %289 = xor i32 %288, %287
  store i32 %289, ptr %16, align 4, !tbaa !30
  %290 = load i32, ptr %15, align 4, !tbaa !30
  %291 = load i32, ptr %14, align 4, !tbaa !30
  %292 = sub i32 %291, %290
  store i32 %292, ptr %14, align 4, !tbaa !30
  %293 = load i32, ptr %16, align 4, !tbaa !30
  %294 = load i32, ptr %14, align 4, !tbaa !30
  %295 = sub i32 %294, %293
  store i32 %295, ptr %14, align 4, !tbaa !30
  %296 = load i32, ptr %16, align 4, !tbaa !30
  %297 = lshr i32 %296, 15
  %298 = load i32, ptr %14, align 4, !tbaa !30
  %299 = xor i32 %298, %297
  store i32 %299, ptr %14, align 4, !tbaa !30
  br label %300

300:                                              ; preds = %209
  br label %301

301:                                              ; preds = %300
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = getelementptr inbounds i8, ptr %302, i64 12
  store ptr %303, ptr %18, align 8, !tbaa !5
  %304 = load i32, ptr %17, align 4, !tbaa !30
  %305 = sub i32 %304, 12
  store i32 %305, ptr %17, align 4, !tbaa !30
  br label %133, !llvm.loop !32

306:                                              ; preds = %133
  %307 = load i32, ptr %14, align 4, !tbaa !30
  %308 = add i32 %307, 4
  store i32 %308, ptr %14, align 4, !tbaa !30
  %309 = load i32, ptr %17, align 4, !tbaa !30
  switch i32 %309, label %396 [
    i32 11, label %310
    i32 10, label %318
    i32 9, label %326
    i32 8, label %334
    i32 7, label %342
    i32 6, label %350
    i32 5, label %358
    i32 4, label %365
    i32 3, label %373
    i32 2, label %381
    i32 1, label %389
  ]

310:                                              ; preds = %306
  %311 = load ptr, ptr %18, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 10
  %313 = load i8, ptr %312, align 1, !tbaa !31
  %314 = zext i8 %313 to i32
  %315 = shl i32 %314, 24
  %316 = load i32, ptr %14, align 4, !tbaa !30
  %317 = add i32 %316, %315
  store i32 %317, ptr %14, align 4, !tbaa !30
  br label %318

318:                                              ; preds = %310, %306
  %319 = load ptr, ptr %18, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 9
  %321 = load i8, ptr %320, align 1, !tbaa !31
  %322 = zext i8 %321 to i32
  %323 = shl i32 %322, 16
  %324 = load i32, ptr %14, align 4, !tbaa !30
  %325 = add i32 %324, %323
  store i32 %325, ptr %14, align 4, !tbaa !30
  br label %326

326:                                              ; preds = %318, %306
  %327 = load ptr, ptr %18, align 8, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %327, i64 8
  %329 = load i8, ptr %328, align 1, !tbaa !31
  %330 = zext i8 %329 to i32
  %331 = shl i32 %330, 8
  %332 = load i32, ptr %14, align 4, !tbaa !30
  %333 = add i32 %332, %331
  store i32 %333, ptr %14, align 4, !tbaa !30
  br label %334

334:                                              ; preds = %326, %306
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = getelementptr inbounds i8, ptr %335, i64 7
  %337 = load i8, ptr %336, align 1, !tbaa !31
  %338 = zext i8 %337 to i32
  %339 = shl i32 %338, 24
  %340 = load i32, ptr %16, align 4, !tbaa !30
  %341 = add i32 %340, %339
  store i32 %341, ptr %16, align 4, !tbaa !30
  br label %342

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

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

358:                                              ; preds = %350, %306
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 4
  %361 = load i8, ptr %360, align 1, !tbaa !31
  %362 = zext i8 %361 to i32
  %363 = load i32, ptr %16, align 4, !tbaa !30
  %364 = add i32 %363, %362
  store i32 %364, ptr %16, align 4, !tbaa !30
  br label %365

365:                                              ; preds = %358, %306
  %366 = load ptr, ptr %18, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %366, i64 3
  %368 = load i8, ptr %367, align 1, !tbaa !31
  %369 = zext i8 %368 to i32
  %370 = shl i32 %369, 24
  %371 = load i32, ptr %15, align 4, !tbaa !30
  %372 = add i32 %371, %370
  store i32 %372, ptr %15, align 4, !tbaa !30
  br label %373

373:                                              ; preds = %365, %306
  %374 = load ptr, ptr %18, align 8, !tbaa !5
  %375 = getelementptr inbounds i8, ptr %374, i64 2
  %376 = load i8, ptr %375, align 1, !tbaa !31
  %377 = zext i8 %376 to i32
  %378 = shl i32 %377, 16
  %379 = load i32, ptr %15, align 4, !tbaa !30
  %380 = add i32 %379, %378
  store i32 %380, ptr %15, align 4, !tbaa !30
  br label %381

381:                                              ; preds = %373, %306
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = getelementptr inbounds i8, ptr %382, i64 1
  %384 = load i8, ptr %383, align 1, !tbaa !31
  %385 = zext i8 %384 to i32
  %386 = shl i32 %385, 8
  %387 = load i32, ptr %15, align 4, !tbaa !30
  %388 = add i32 %387, %386
  store i32 %388, ptr %15, align 4, !tbaa !30
  br label %389

389:                                              ; preds = %381, %306
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = getelementptr inbounds i8, ptr %390, i64 0
  %392 = load i8, ptr %391, align 1, !tbaa !31
  %393 = zext i8 %392 to i32
  %394 = load i32, ptr %15, align 4, !tbaa !30
  %395 = add i32 %394, %393
  store i32 %395, ptr %15, align 4, !tbaa !30
  br label %396

396:                                              ; preds = %389, %306
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %16, align 4, !tbaa !30
  %399 = load i32, ptr %15, align 4, !tbaa !30
  %400 = sub i32 %399, %398
  store i32 %400, ptr %15, align 4, !tbaa !30
  %401 = load i32, ptr %14, align 4, !tbaa !30
  %402 = load i32, ptr %15, align 4, !tbaa !30
  %403 = sub i32 %402, %401
  store i32 %403, ptr %15, align 4, !tbaa !30
  %404 = load i32, ptr %14, align 4, !tbaa !30
  %405 = lshr i32 %404, 13
  %406 = load i32, ptr %15, align 4, !tbaa !30
  %407 = xor i32 %406, %405
  store i32 %407, ptr %15, align 4, !tbaa !30
  %408 = load i32, ptr %14, align 4, !tbaa !30
  %409 = load i32, ptr %16, align 4, !tbaa !30
  %410 = sub i32 %409, %408
  store i32 %410, ptr %16, align 4, !tbaa !30
  %411 = load i32, ptr %15, align 4, !tbaa !30
  %412 = load i32, ptr %16, align 4, !tbaa !30
  %413 = sub i32 %412, %411
  store i32 %413, ptr %16, align 4, !tbaa !30
  %414 = load i32, ptr %15, align 4, !tbaa !30
  %415 = shl i32 %414, 8
  %416 = load i32, ptr %16, align 4, !tbaa !30
  %417 = xor i32 %416, %415
  store i32 %417, ptr %16, align 4, !tbaa !30
  %418 = load i32, ptr %15, align 4, !tbaa !30
  %419 = load i32, ptr %14, align 4, !tbaa !30
  %420 = sub i32 %419, %418
  store i32 %420, ptr %14, align 4, !tbaa !30
  %421 = load i32, ptr %16, align 4, !tbaa !30
  %422 = load i32, ptr %14, align 4, !tbaa !30
  %423 = sub i32 %422, %421
  store i32 %423, ptr %14, align 4, !tbaa !30
  %424 = load i32, ptr %16, align 4, !tbaa !30
  %425 = lshr i32 %424, 13
  %426 = load i32, ptr %14, align 4, !tbaa !30
  %427 = xor i32 %426, %425
  store i32 %427, ptr %14, align 4, !tbaa !30
  %428 = load i32, ptr %16, align 4, !tbaa !30
  %429 = load i32, ptr %15, align 4, !tbaa !30
  %430 = sub i32 %429, %428
  store i32 %430, ptr %15, align 4, !tbaa !30
  %431 = load i32, ptr %14, align 4, !tbaa !30
  %432 = load i32, ptr %15, align 4, !tbaa !30
  %433 = sub i32 %432, %431
  store i32 %433, ptr %15, align 4, !tbaa !30
  %434 = load i32, ptr %14, align 4, !tbaa !30
  %435 = lshr i32 %434, 12
  %436 = load i32, ptr %15, align 4, !tbaa !30
  %437 = xor i32 %436, %435
  store i32 %437, ptr %15, align 4, !tbaa !30
  %438 = load i32, ptr %14, align 4, !tbaa !30
  %439 = load i32, ptr %16, align 4, !tbaa !30
  %440 = sub i32 %439, %438
  store i32 %440, ptr %16, align 4, !tbaa !30
  %441 = load i32, ptr %15, align 4, !tbaa !30
  %442 = load i32, ptr %16, align 4, !tbaa !30
  %443 = sub i32 %442, %441
  store i32 %443, ptr %16, align 4, !tbaa !30
  %444 = load i32, ptr %15, align 4, !tbaa !30
  %445 = shl i32 %444, 16
  %446 = load i32, ptr %16, align 4, !tbaa !30
  %447 = xor i32 %446, %445
  store i32 %447, ptr %16, align 4, !tbaa !30
  %448 = load i32, ptr %15, align 4, !tbaa !30
  %449 = load i32, ptr %14, align 4, !tbaa !30
  %450 = sub i32 %449, %448
  store i32 %450, ptr %14, align 4, !tbaa !30
  %451 = load i32, ptr %16, align 4, !tbaa !30
  %452 = load i32, ptr %14, align 4, !tbaa !30
  %453 = sub i32 %452, %451
  store i32 %453, ptr %14, align 4, !tbaa !30
  %454 = load i32, ptr %16, align 4, !tbaa !30
  %455 = lshr i32 %454, 5
  %456 = load i32, ptr %14, align 4, !tbaa !30
  %457 = xor i32 %456, %455
  store i32 %457, ptr %14, align 4, !tbaa !30
  %458 = load i32, ptr %16, align 4, !tbaa !30
  %459 = load i32, ptr %15, align 4, !tbaa !30
  %460 = sub i32 %459, %458
  store i32 %460, ptr %15, align 4, !tbaa !30
  %461 = load i32, ptr %14, align 4, !tbaa !30
  %462 = load i32, ptr %15, align 4, !tbaa !30
  %463 = sub i32 %462, %461
  store i32 %463, ptr %15, align 4, !tbaa !30
  %464 = load i32, ptr %14, align 4, !tbaa !30
  %465 = lshr i32 %464, 3
  %466 = load i32, ptr %15, align 4, !tbaa !30
  %467 = xor i32 %466, %465
  store i32 %467, ptr %15, align 4, !tbaa !30
  %468 = load i32, ptr %14, align 4, !tbaa !30
  %469 = load i32, ptr %16, align 4, !tbaa !30
  %470 = sub i32 %469, %468
  store i32 %470, ptr %16, align 4, !tbaa !30
  %471 = load i32, ptr %15, align 4, !tbaa !30
  %472 = load i32, ptr %16, align 4, !tbaa !30
  %473 = sub i32 %472, %471
  store i32 %473, ptr %16, align 4, !tbaa !30
  %474 = load i32, ptr %15, align 4, !tbaa !30
  %475 = shl i32 %474, 10
  %476 = load i32, ptr %16, align 4, !tbaa !30
  %477 = xor i32 %476, %475
  store i32 %477, ptr %16, align 4, !tbaa !30
  %478 = load i32, ptr %15, align 4, !tbaa !30
  %479 = load i32, ptr %14, align 4, !tbaa !30
  %480 = sub i32 %479, %478
  store i32 %480, ptr %14, align 4, !tbaa !30
  %481 = load i32, ptr %16, align 4, !tbaa !30
  %482 = load i32, ptr %14, align 4, !tbaa !30
  %483 = sub i32 %482, %481
  store i32 %483, ptr %14, align 4, !tbaa !30
  %484 = load i32, ptr %16, align 4, !tbaa !30
  %485 = lshr i32 %484, 15
  %486 = load i32, ptr %14, align 4, !tbaa !30
  %487 = xor i32 %486, %485
  store i32 %487, ptr %14, align 4, !tbaa !30
  br label %488

488:                                              ; preds = %397
  br label %489

489:                                              ; preds = %488
  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 %490

490:                                              ; preds = %489
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  br label %493

493:                                              ; preds = %492
  br label %494

494:                                              ; preds = %493
  store ptr null, ptr %12, align 8, !tbaa !5
  %495 = load ptr, ptr %10, align 8, !tbaa !5
  %496 = icmp ne ptr %495, null
  br i1 %496, label %497, label %601

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

498:                                              ; preds = %497
  %499 = load i32, ptr %14, align 4, !tbaa !30
  %500 = load ptr, ptr %10, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %500, i32 0, i32 4
  %502 = getelementptr inbounds %struct.UT_hash_handle, ptr %501, i32 0, i32 0
  %503 = load ptr, ptr %502, align 8, !tbaa !34
  %504 = getelementptr inbounds %struct.UT_hash_table, ptr %503, i32 0, i32 1
  %505 = load i32, ptr %504, align 8, !tbaa !37
  %506 = sub i32 %505, 1
  %507 = and i32 %499, %506
  store i32 %507, ptr %19, align 4, !tbaa !30
  br label %508

508:                                              ; preds = %498
  br label %509

509:                                              ; preds = %508
  br label %510

510:                                              ; preds = %509
  %511 = load ptr, ptr %10, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %511, i32 0, i32 4
  %513 = getelementptr inbounds %struct.UT_hash_handle, ptr %512, i32 0, i32 0
  %514 = load ptr, ptr %513, align 8, !tbaa !34
  %515 = getelementptr inbounds %struct.UT_hash_table, ptr %514, i32 0, i32 0
  %516 = load ptr, ptr %515, align 8, !tbaa !39
  %517 = load i32, ptr %19, align 4, !tbaa !30
  %518 = zext i32 %517 to i64
  %519 = getelementptr inbounds %struct.UT_hash_bucket, ptr %516, i64 %518
  %520 = getelementptr inbounds %struct.UT_hash_bucket, ptr %519, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !40
  %522 = icmp ne ptr %521, null
  br i1 %522, label %523, label %546

523:                                              ; preds = %510
  br label %524

524:                                              ; preds = %523
  %525 = load ptr, ptr %10, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %525, i32 0, i32 4
  %527 = getelementptr inbounds %struct.UT_hash_handle, ptr %526, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !34
  %529 = getelementptr inbounds %struct.UT_hash_table, ptr %528, i32 0, i32 0
  %530 = load ptr, ptr %529, align 8, !tbaa !39
  %531 = load i32, ptr %19, align 4, !tbaa !30
  %532 = zext i32 %531 to i64
  %533 = getelementptr inbounds %struct.UT_hash_bucket, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.UT_hash_bucket, ptr %533, i32 0, i32 0
  %535 = load ptr, ptr %534, align 8, !tbaa !40
  %536 = load ptr, ptr %10, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %536, i32 0, i32 4
  %538 = getelementptr inbounds %struct.UT_hash_handle, ptr %537, i32 0, i32 0
  %539 = load ptr, ptr %538, align 8, !tbaa !34
  %540 = getelementptr inbounds %struct.UT_hash_table, ptr %539, i32 0, i32 5
  %541 = load i64, ptr %540, align 8, !tbaa !42
  %542 = sub i64 0, %541
  %543 = getelementptr inbounds i8, ptr %535, i64 %542
  store ptr %543, ptr %12, align 8, !tbaa !5
  br label %544

544:                                              ; preds = %524
  br label %545

545:                                              ; preds = %544
  br label %547

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

547:                                              ; preds = %546, %545
  br label %548

548:                                              ; preds = %597, %547
  %549 = load ptr, ptr %12, align 8, !tbaa !5
  %550 = icmp ne ptr %549, null
  br i1 %550, label %551, label %598

551:                                              ; preds = %548
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %552, i32 0, i32 4
  %554 = getelementptr inbounds %struct.UT_hash_handle, ptr %553, i32 0, i32 7
  %555 = load i32, ptr %554, align 4, !tbaa !43
  %556 = load i32, ptr %14, align 4, !tbaa !30
  %557 = icmp eq i32 %555, %556
  br i1 %557, label %558, label %574

558:                                              ; preds = %551
  %559 = load ptr, ptr %12, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %559, i32 0, i32 4
  %561 = getelementptr inbounds %struct.UT_hash_handle, ptr %560, i32 0, i32 6
  %562 = load i32, ptr %561, align 8, !tbaa !44
  %563 = zext i32 %562 to i64
  %564 = icmp eq i64 %563, 4
  br i1 %564, label %565, label %574

565:                                              ; preds = %558
  %566 = load ptr, ptr %12, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %566, i32 0, i32 4
  %568 = getelementptr inbounds %struct.UT_hash_handle, ptr %567, i32 0, i32 5
  %569 = load ptr, ptr %568, align 8, !tbaa !45
  %570 = call i32 @memcmp(ptr noundef %569, ptr noundef %13, i64 noundef 4) #10
  %571 = icmp eq i32 %570, 0
  br i1 %571, label %572, label %573

572:                                              ; preds = %565
  br label %598

573:                                              ; preds = %565
  br label %574

574:                                              ; preds = %573, %558, %551
  %575 = load ptr, ptr %12, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %575, i32 0, i32 4
  %577 = getelementptr inbounds %struct.UT_hash_handle, ptr %576, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !46
  %579 = icmp ne ptr %578, null
  br i1 %579, label %580, label %596

580:                                              ; preds = %574
  br label %581

581:                                              ; preds = %580
  %582 = load ptr, ptr %12, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %582, i32 0, i32 4
  %584 = getelementptr inbounds %struct.UT_hash_handle, ptr %583, i32 0, i32 4
  %585 = load ptr, ptr %584, align 8, !tbaa !46
  %586 = load ptr, ptr %10, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %586, i32 0, i32 4
  %588 = getelementptr inbounds %struct.UT_hash_handle, ptr %587, i32 0, i32 0
  %589 = load ptr, ptr %588, align 8, !tbaa !34
  %590 = getelementptr inbounds %struct.UT_hash_table, ptr %589, i32 0, i32 5
  %591 = load i64, ptr %590, align 8, !tbaa !42
  %592 = sub i64 0, %591
  %593 = getelementptr inbounds i8, ptr %585, i64 %592
  store ptr %593, ptr %12, align 8, !tbaa !5
  br label %594

594:                                              ; preds = %581
  br label %595

595:                                              ; preds = %594
  br label %597

596:                                              ; preds = %574
  store ptr null, ptr %12, align 8, !tbaa !5
  br label %597

597:                                              ; preds = %596, %595
  br label %548, !llvm.loop !47

598:                                              ; preds = %572, %548
  br label %599

599:                                              ; preds = %598
  br label %600

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

601:                                              ; preds = %600, %494
  br label %602

602:                                              ; preds = %601
  br label %603

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

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %604
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = icmp ne ptr %606, null
  br i1 %607, label %608, label %627

608:                                              ; preds = %605
  %609 = load ptr, ptr %8, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.otfcc_Options, ptr %609, i32 0, i32 24
  %611 = load ptr, ptr %610, align 8, !tbaa !19
  %612 = getelementptr inbounds %struct.otfcc_ILogger, ptr %611, i32 0, i32 6
  %613 = load ptr, ptr %612, align 8, !tbaa !22
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.otfcc_Options, ptr %614, i32 0, i32 24
  %616 = load ptr, ptr %615, align 8, !tbaa !19
  %617 = call ptr @sdsempty()
  %618 = load ptr, ptr %9, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.subtable_gsub_single, ptr %618, i32 0, i32 2
  %620 = load ptr, ptr %619, align 8, !tbaa !18
  %621 = load i64, ptr %11, align 8, !tbaa !9
  %622 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %620, i64 %621
  %623 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %622, i32 0, i32 0
  %624 = getelementptr inbounds %struct.otfcc_Handle, ptr %623, i32 0, i32 2
  %625 = load ptr, ptr %624, align 8, !tbaa !24
  %626 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %617, ptr noundef @.str.1, ptr noundef %625)
  call void %613(ptr noundef %616, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %626)
  br label %1516

627:                                              ; preds = %605
  %628 = call ptr @__caryll_allocate_clean(i64 noundef 88, i64 noundef 33)
  store ptr %628, ptr %12, align 8, !tbaa !5
  %629 = load ptr, ptr %9, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.subtable_gsub_single, ptr %629, i32 0, i32 2
  %631 = load ptr, ptr %630, align 8, !tbaa !18
  %632 = load i64, ptr %11, align 8, !tbaa !9
  %633 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %631, i64 %632
  %634 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %633, i32 0, i32 0
  %635 = getelementptr inbounds %struct.otfcc_Handle, ptr %634, i32 0, i32 1
  %636 = load i16, ptr %635, align 4, !tbaa !29
  %637 = zext i16 %636 to i32
  %638 = load ptr, ptr %12, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %638, i32 0, i32 0
  store i32 %637, ptr %639, align 8, !tbaa !48
  %640 = load ptr, ptr %9, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.subtable_gsub_single, ptr %640, i32 0, i32 2
  %642 = load ptr, ptr %641, align 8, !tbaa !18
  %643 = load i64, ptr %11, align 8, !tbaa !9
  %644 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %642, i64 %643
  %645 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %644, i32 0, i32 1
  %646 = getelementptr inbounds %struct.otfcc_Handle, ptr %645, i32 0, i32 1
  %647 = load i16, ptr %646, align 4, !tbaa !49
  %648 = zext i16 %647 to i32
  %649 = load ptr, ptr %12, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %649, i32 0, i32 2
  store i32 %648, ptr %650, align 8, !tbaa !50
  %651 = load ptr, ptr %9, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.subtable_gsub_single, ptr %651, i32 0, i32 2
  %653 = load ptr, ptr %652, align 8, !tbaa !18
  %654 = load i64, ptr %11, align 8, !tbaa !9
  %655 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %653, i64 %654
  %656 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %655, i32 0, i32 0
  %657 = getelementptr inbounds %struct.otfcc_Handle, ptr %656, i32 0, i32 2
  %658 = load ptr, ptr %657, align 8, !tbaa !24
  %659 = call ptr @sdsdup(ptr noundef %658)
  %660 = load ptr, ptr %12, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %660, i32 0, i32 1
  store ptr %659, ptr %661, align 8, !tbaa !51
  %662 = load ptr, ptr %9, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.subtable_gsub_single, ptr %662, i32 0, i32 2
  %664 = load ptr, ptr %663, align 8, !tbaa !18
  %665 = load i64, ptr %11, align 8, !tbaa !9
  %666 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %664, i64 %665
  %667 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %666, i32 0, i32 1
  %668 = getelementptr inbounds %struct.otfcc_Handle, ptr %667, i32 0, i32 2
  %669 = load ptr, ptr %668, align 8, !tbaa !28
  %670 = call ptr @sdsdup(ptr noundef %669)
  %671 = load ptr, ptr %12, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %671, i32 0, i32 3
  store ptr %670, ptr %672, align 8, !tbaa !52
  br label %673

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

674:                                              ; preds = %673
  br label %675

675:                                              ; preds = %674
  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
  %676 = load ptr, ptr %12, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %676, i32 0, i32 0
  store ptr %677, ptr %24, align 8, !tbaa !5
  store i32 -17973521, ptr %20, align 4, !tbaa !30
  store i32 -1640531527, ptr %22, align 4, !tbaa !30
  store i32 -1640531527, ptr %21, align 4, !tbaa !30
  store i32 4, ptr %23, align 4, !tbaa !30
  br label %678

678:                                              ; preds = %846, %675
  %679 = load i32, ptr %23, align 4, !tbaa !30
  %680 = icmp uge i32 %679, 12
  br i1 %680, label %681, label %851

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

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

845:                                              ; preds = %754
  br label %846

846:                                              ; preds = %845
  %847 = load ptr, ptr %24, align 8, !tbaa !5
  %848 = getelementptr inbounds i8, ptr %847, i64 12
  store ptr %848, ptr %24, align 8, !tbaa !5
  %849 = load i32, ptr %23, align 4, !tbaa !30
  %850 = sub i32 %849, 12
  store i32 %850, ptr %23, align 4, !tbaa !30
  br label %678, !llvm.loop !53

851:                                              ; preds = %678
  %852 = load i32, ptr %20, align 4, !tbaa !30
  %853 = add i32 %852, 4
  store i32 %853, ptr %20, align 4, !tbaa !30
  %854 = load i32, ptr %23, align 4, !tbaa !30
  switch i32 %854, label %941 [
    i32 11, label %855
    i32 10, label %863
    i32 9, label %871
    i32 8, label %879
    i32 7, label %887
    i32 6, label %895
    i32 5, label %903
    i32 4, label %910
    i32 3, label %918
    i32 2, label %926
    i32 1, label %934
  ]

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

863:                                              ; preds = %855, %851
  %864 = load ptr, ptr %24, align 8, !tbaa !5
  %865 = getelementptr inbounds i8, ptr %864, i64 9
  %866 = load i8, ptr %865, align 1, !tbaa !31
  %867 = zext i8 %866 to i32
  %868 = shl i32 %867, 16
  %869 = load i32, ptr %20, align 4, !tbaa !30
  %870 = add i32 %869, %868
  store i32 %870, ptr %20, align 4, !tbaa !30
  br label %871

871:                                              ; preds = %863, %851
  %872 = load ptr, ptr %24, align 8, !tbaa !5
  %873 = getelementptr inbounds i8, ptr %872, i64 8
  %874 = load i8, ptr %873, align 1, !tbaa !31
  %875 = zext i8 %874 to i32
  %876 = shl i32 %875, 8
  %877 = load i32, ptr %20, align 4, !tbaa !30
  %878 = add i32 %877, %876
  store i32 %878, ptr %20, align 4, !tbaa !30
  br label %879

879:                                              ; preds = %871, %851
  %880 = load ptr, ptr %24, align 8, !tbaa !5
  %881 = getelementptr inbounds i8, ptr %880, i64 7
  %882 = load i8, ptr %881, align 1, !tbaa !31
  %883 = zext i8 %882 to i32
  %884 = shl i32 %883, 24
  %885 = load i32, ptr %22, align 4, !tbaa !30
  %886 = add i32 %885, %884
  store i32 %886, ptr %22, align 4, !tbaa !30
  br label %887

887:                                              ; preds = %879, %851
  %888 = load ptr, ptr %24, align 8, !tbaa !5
  %889 = getelementptr inbounds i8, ptr %888, i64 6
  %890 = load i8, ptr %889, align 1, !tbaa !31
  %891 = zext i8 %890 to i32
  %892 = shl i32 %891, 16
  %893 = load i32, ptr %22, align 4, !tbaa !30
  %894 = add i32 %893, %892
  store i32 %894, ptr %22, align 4, !tbaa !30
  br label %895

895:                                              ; preds = %887, %851
  %896 = load ptr, ptr %24, align 8, !tbaa !5
  %897 = getelementptr inbounds i8, ptr %896, i64 5
  %898 = load i8, ptr %897, align 1, !tbaa !31
  %899 = zext i8 %898 to i32
  %900 = shl i32 %899, 8
  %901 = load i32, ptr %22, align 4, !tbaa !30
  %902 = add i32 %901, %900
  store i32 %902, ptr %22, align 4, !tbaa !30
  br label %903

903:                                              ; preds = %895, %851
  %904 = load ptr, ptr %24, align 8, !tbaa !5
  %905 = getelementptr inbounds i8, ptr %904, i64 4
  %906 = load i8, ptr %905, align 1, !tbaa !31
  %907 = zext i8 %906 to i32
  %908 = load i32, ptr %22, align 4, !tbaa !30
  %909 = add i32 %908, %907
  store i32 %909, ptr %22, align 4, !tbaa !30
  br label %910

910:                                              ; preds = %903, %851
  %911 = load ptr, ptr %24, align 8, !tbaa !5
  %912 = getelementptr inbounds i8, ptr %911, i64 3
  %913 = load i8, ptr %912, align 1, !tbaa !31
  %914 = zext i8 %913 to i32
  %915 = shl i32 %914, 24
  %916 = load i32, ptr %21, align 4, !tbaa !30
  %917 = add i32 %916, %915
  store i32 %917, ptr %21, align 4, !tbaa !30
  br label %918

918:                                              ; preds = %910, %851
  %919 = load ptr, ptr %24, align 8, !tbaa !5
  %920 = getelementptr inbounds i8, ptr %919, i64 2
  %921 = load i8, ptr %920, align 1, !tbaa !31
  %922 = zext i8 %921 to i32
  %923 = shl i32 %922, 16
  %924 = load i32, ptr %21, align 4, !tbaa !30
  %925 = add i32 %924, %923
  store i32 %925, ptr %21, align 4, !tbaa !30
  br label %926

926:                                              ; preds = %918, %851
  %927 = load ptr, ptr %24, align 8, !tbaa !5
  %928 = getelementptr inbounds i8, ptr %927, i64 1
  %929 = load i8, ptr %928, align 1, !tbaa !31
  %930 = zext i8 %929 to i32
  %931 = shl i32 %930, 8
  %932 = load i32, ptr %21, align 4, !tbaa !30
  %933 = add i32 %932, %931
  store i32 %933, ptr %21, align 4, !tbaa !30
  br label %934

934:                                              ; preds = %926, %851
  %935 = load ptr, ptr %24, align 8, !tbaa !5
  %936 = getelementptr inbounds i8, ptr %935, i64 0
  %937 = load i8, ptr %936, align 1, !tbaa !31
  %938 = zext i8 %937 to i32
  %939 = load i32, ptr %21, align 4, !tbaa !30
  %940 = add i32 %939, %938
  store i32 %940, ptr %21, align 4, !tbaa !30
  br label %941

941:                                              ; preds = %934, %851
  br label %942

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

1033:                                             ; preds = %942
  br label %1034

1034:                                             ; preds = %1033
  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 %1035

1035:                                             ; preds = %1034
  br label %1036

1036:                                             ; preds = %1035
  br label %1037

1037:                                             ; preds = %1036
  br label %1038

1038:                                             ; preds = %1037
  br label %1039

1039:                                             ; preds = %1038
  %1040 = load i32, ptr %20, align 4, !tbaa !30
  %1041 = load ptr, ptr %12, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1041, i32 0, i32 4
  %1043 = getelementptr inbounds %struct.UT_hash_handle, ptr %1042, i32 0, i32 7
  store i32 %1040, ptr %1043, align 4, !tbaa !43
  %1044 = load ptr, ptr %12, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1044, i32 0, i32 0
  %1046 = load ptr, ptr %12, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1046, i32 0, i32 4
  %1048 = getelementptr inbounds %struct.UT_hash_handle, ptr %1047, i32 0, i32 5
  store ptr %1045, ptr %1048, align 8, !tbaa !45
  %1049 = load ptr, ptr %12, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1049, i32 0, i32 4
  %1051 = getelementptr inbounds %struct.UT_hash_handle, ptr %1050, i32 0, i32 6
  store i32 4, ptr %1051, align 8, !tbaa !44
  %1052 = load ptr, ptr %10, align 8, !tbaa !5
  %1053 = icmp ne ptr %1052, null
  br i1 %1053, label %1136, label %1054

1054:                                             ; preds = %1039
  %1055 = load ptr, ptr %12, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1055, i32 0, i32 4
  %1057 = getelementptr inbounds %struct.UT_hash_handle, ptr %1056, i32 0, i32 2
  store ptr null, ptr %1057, align 8, !tbaa !54
  %1058 = load ptr, ptr %12, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1058, i32 0, i32 4
  %1060 = getelementptr inbounds %struct.UT_hash_handle, ptr %1059, i32 0, i32 1
  store ptr null, ptr %1060, align 8, !tbaa !55
  br label %1061

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

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

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

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

1124:                                             ; preds = %1072
  %1125 = load ptr, ptr %12, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1125, i32 0, i32 4
  %1127 = getelementptr inbounds %struct.UT_hash_handle, ptr %1126, i32 0, i32 0
  %1128 = load ptr, ptr %1127, align 8, !tbaa !34
  %1129 = getelementptr inbounds %struct.UT_hash_table, ptr %1128, i32 0, i32 0
  %1130 = load ptr, ptr %1129, align 8, !tbaa !39
  call void @llvm.memset.p0.i64(ptr align 8 %1130, i8 0, i64 512, i1 false)
  br label %1131

1131:                                             ; preds = %1124
  br label %1132

1132:                                             ; preds = %1131
  br label %1133

1133:                                             ; preds = %1132
  br label %1134

1134:                                             ; preds = %1133
  %1135 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1135, ptr %10, align 8, !tbaa !5
  br label %1182

1136:                                             ; preds = %1039
  %1137 = load ptr, ptr %10, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1137, i32 0, i32 4
  %1139 = getelementptr inbounds %struct.UT_hash_handle, ptr %1138, i32 0, i32 0
  %1140 = load ptr, ptr %1139, align 8, !tbaa !34
  %1141 = load ptr, ptr %12, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1141, i32 0, i32 4
  %1143 = getelementptr inbounds %struct.UT_hash_handle, ptr %1142, i32 0, i32 0
  store ptr %1140, ptr %1143, align 8, !tbaa !34
  br label %1144

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

1180:                                             ; preds = %1144
  br label %1181

1181:                                             ; preds = %1180
  br label %1182

1182:                                             ; preds = %1181, %1134
  br label %1183

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

1191:                                             ; preds = %1183
  %1192 = load i32, ptr %20, align 4, !tbaa !30
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1193, i32 0, i32 4
  %1195 = getelementptr inbounds %struct.UT_hash_handle, ptr %1194, i32 0, i32 0
  %1196 = load ptr, ptr %1195, align 8, !tbaa !34
  %1197 = getelementptr inbounds %struct.UT_hash_table, ptr %1196, i32 0, i32 1
  %1198 = load i32, ptr %1197, align 8, !tbaa !37
  %1199 = sub i32 %1198, 1
  %1200 = and i32 %1192, %1199
  store i32 %1200, ptr %25, align 4, !tbaa !30
  br label %1201

1201:                                             ; preds = %1191
  br label %1202

1202:                                             ; preds = %1201
  br label %1203

1203:                                             ; preds = %1202
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %1204 = load ptr, ptr %10, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1204, i32 0, i32 4
  %1206 = getelementptr inbounds %struct.UT_hash_handle, ptr %1205, i32 0, i32 0
  %1207 = load ptr, ptr %1206, align 8, !tbaa !34
  %1208 = getelementptr inbounds %struct.UT_hash_table, ptr %1207, i32 0, i32 0
  %1209 = load ptr, ptr %1208, align 8, !tbaa !39
  %1210 = load i32, ptr %25, align 4, !tbaa !30
  %1211 = zext i32 %1210 to i64
  %1212 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1209, i64 %1211
  store ptr %1212, ptr %26, align 8, !tbaa !5
  %1213 = load ptr, ptr %26, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1213, i32 0, i32 1
  %1215 = load i32, ptr %1214, align 8, !tbaa !61
  %1216 = add i32 %1215, 1
  store i32 %1216, ptr %1214, align 8, !tbaa !61
  %1217 = load ptr, ptr %26, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1217, i32 0, i32 0
  %1219 = load ptr, ptr %1218, align 8, !tbaa !40
  %1220 = load ptr, ptr %12, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1220, i32 0, i32 4
  %1222 = getelementptr inbounds %struct.UT_hash_handle, ptr %1221, i32 0, i32 4
  store ptr %1219, ptr %1222, align 8, !tbaa !46
  %1223 = load ptr, ptr %12, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1223, i32 0, i32 4
  %1225 = getelementptr inbounds %struct.UT_hash_handle, ptr %1224, i32 0, i32 3
  store ptr null, ptr %1225, align 8, !tbaa !62
  %1226 = load ptr, ptr %26, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1226, i32 0, i32 0
  %1228 = load ptr, ptr %1227, align 8, !tbaa !40
  %1229 = icmp ne ptr %1228, null
  br i1 %1229, label %1230, label %1237

1230:                                             ; preds = %1203
  %1231 = load ptr, ptr %12, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1231, i32 0, i32 4
  %1233 = load ptr, ptr %26, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1233, i32 0, i32 0
  %1235 = load ptr, ptr %1234, align 8, !tbaa !40
  %1236 = getelementptr inbounds %struct.UT_hash_handle, ptr %1235, i32 0, i32 3
  store ptr %1232, ptr %1236, align 8, !tbaa !63
  br label %1237

1237:                                             ; preds = %1230, %1203
  %1238 = load ptr, ptr %12, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1238, i32 0, i32 4
  %1240 = load ptr, ptr %26, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1240, i32 0, i32 0
  store ptr %1239, ptr %1241, align 8, !tbaa !40
  %1242 = load ptr, ptr %26, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1242, i32 0, i32 1
  %1244 = load i32, ptr %1243, align 8, !tbaa !61
  %1245 = load ptr, ptr %26, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1245, i32 0, i32 2
  %1247 = load i32, ptr %1246, align 4, !tbaa !64
  %1248 = add i32 %1247, 1
  %1249 = mul i32 %1248, 10
  %1250 = icmp uge i32 %1244, %1249
  br i1 %1250, label %1251, label %1507

1251:                                             ; preds = %1237
  %1252 = load ptr, ptr %12, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1252, i32 0, i32 4
  %1254 = getelementptr inbounds %struct.UT_hash_handle, ptr %1253, i32 0, i32 0
  %1255 = load ptr, ptr %1254, align 8, !tbaa !34
  %1256 = getelementptr inbounds %struct.UT_hash_table, ptr %1255, i32 0, i32 9
  %1257 = load i32, ptr %1256, align 4, !tbaa !65
  %1258 = icmp ne i32 %1257, 0
  br i1 %1258, label %1507, label %1259

1259:                                             ; preds = %1251
  br label %1260

1260:                                             ; preds = %1259
  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
  %1261 = load ptr, ptr %12, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1261, i32 0, i32 4
  %1263 = getelementptr inbounds %struct.UT_hash_handle, ptr %1262, i32 0, i32 0
  %1264 = load ptr, ptr %1263, align 8, !tbaa !34
  %1265 = getelementptr inbounds %struct.UT_hash_table, ptr %1264, i32 0, i32 1
  %1266 = load i32, ptr %1265, align 8, !tbaa !37
  %1267 = zext i32 %1266 to i64
  %1268 = mul i64 2, %1267
  %1269 = mul i64 %1268, 16
  %1270 = call noalias ptr @malloc(i64 noundef %1269) #11
  store ptr %1270, ptr %31, align 8, !tbaa !5
  %1271 = load ptr, ptr %31, align 8, !tbaa !5
  %1272 = icmp ne ptr %1271, null
  br i1 %1272, label %1274, label %1273

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

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

1328:                                             ; preds = %1430, %1274
  %1329 = load i32, ptr %28, align 4, !tbaa !30
  %1330 = load ptr, ptr %12, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1330, i32 0, i32 4
  %1332 = getelementptr inbounds %struct.UT_hash_handle, ptr %1331, i32 0, i32 0
  %1333 = load ptr, ptr %1332, align 8, !tbaa !34
  %1334 = getelementptr inbounds %struct.UT_hash_table, ptr %1333, i32 0, i32 1
  %1335 = load i32, ptr %1334, align 8, !tbaa !37
  %1336 = icmp ult i32 %1329, %1335
  br i1 %1336, label %1337, label %1433

1337:                                             ; preds = %1328
  %1338 = load ptr, ptr %12, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1338, i32 0, i32 4
  %1340 = getelementptr inbounds %struct.UT_hash_handle, ptr %1339, i32 0, i32 0
  %1341 = load ptr, ptr %1340, align 8, !tbaa !34
  %1342 = getelementptr inbounds %struct.UT_hash_table, ptr %1341, i32 0, i32 0
  %1343 = load ptr, ptr %1342, align 8, !tbaa !39
  %1344 = load i32, ptr %28, align 4, !tbaa !30
  %1345 = zext i32 %1344 to i64
  %1346 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1343, i64 %1345
  %1347 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1346, i32 0, i32 0
  %1348 = load ptr, ptr %1347, align 8, !tbaa !40
  store ptr %1348, ptr %29, align 8, !tbaa !5
  br label %1349

1349:                                             ; preds = %1424, %1337
  %1350 = load ptr, ptr %29, align 8, !tbaa !5
  %1351 = icmp ne ptr %1350, null
  br i1 %1351, label %1352, label %1429

1352:                                             ; preds = %1349
  %1353 = load ptr, ptr %29, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.UT_hash_handle, ptr %1353, i32 0, i32 4
  %1355 = load ptr, ptr %1354, align 8, !tbaa !68
  store ptr %1355, ptr %30, align 8, !tbaa !5
  br label %1356

1356:                                             ; preds = %1352
  %1357 = load ptr, ptr %29, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.UT_hash_handle, ptr %1357, i32 0, i32 7
  %1359 = load i32, ptr %1358, align 4, !tbaa !69
  %1360 = load ptr, ptr %12, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1360, i32 0, i32 4
  %1362 = getelementptr inbounds %struct.UT_hash_handle, ptr %1361, i32 0, i32 0
  %1363 = load ptr, ptr %1362, align 8, !tbaa !34
  %1364 = getelementptr inbounds %struct.UT_hash_table, ptr %1363, i32 0, i32 1
  %1365 = load i32, ptr %1364, align 8, !tbaa !37
  %1366 = mul i32 %1365, 2
  %1367 = sub i32 %1366, 1
  %1368 = and i32 %1359, %1367
  store i32 %1368, ptr %27, align 4, !tbaa !30
  br label %1369

1369:                                             ; preds = %1356
  br label %1370

1370:                                             ; preds = %1369
  %1371 = load ptr, ptr %31, align 8, !tbaa !5
  %1372 = load i32, ptr %27, align 4, !tbaa !30
  %1373 = zext i32 %1372 to i64
  %1374 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1371, i64 %1373
  store ptr %1374, ptr %32, align 8, !tbaa !5
  %1375 = load ptr, ptr %32, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1375, i32 0, i32 1
  %1377 = load i32, ptr %1376, align 8, !tbaa !61
  %1378 = add i32 %1377, 1
  store i32 %1378, ptr %1376, align 8, !tbaa !61
  %1379 = load ptr, ptr %12, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1379, i32 0, i32 4
  %1381 = getelementptr inbounds %struct.UT_hash_handle, ptr %1380, i32 0, i32 0
  %1382 = load ptr, ptr %1381, align 8, !tbaa !34
  %1383 = getelementptr inbounds %struct.UT_hash_table, ptr %1382, i32 0, i32 6
  %1384 = load i32, ptr %1383, align 8, !tbaa !66
  %1385 = icmp ugt i32 %1378, %1384
  br i1 %1385, label %1386, label %1406

1386:                                             ; preds = %1370
  %1387 = load ptr, ptr %12, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1387, i32 0, i32 4
  %1389 = getelementptr inbounds %struct.UT_hash_handle, ptr %1388, i32 0, i32 0
  %1390 = load ptr, ptr %1389, align 8, !tbaa !34
  %1391 = getelementptr inbounds %struct.UT_hash_table, ptr %1390, i32 0, i32 7
  %1392 = load i32, ptr %1391, align 4, !tbaa !67
  %1393 = add i32 %1392, 1
  store i32 %1393, ptr %1391, align 4, !tbaa !67
  %1394 = load ptr, ptr %32, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1394, i32 0, i32 1
  %1396 = load i32, ptr %1395, align 8, !tbaa !61
  %1397 = load ptr, ptr %12, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1397, i32 0, i32 4
  %1399 = getelementptr inbounds %struct.UT_hash_handle, ptr %1398, i32 0, i32 0
  %1400 = load ptr, ptr %1399, align 8, !tbaa !34
  %1401 = getelementptr inbounds %struct.UT_hash_table, ptr %1400, i32 0, i32 6
  %1402 = load i32, ptr %1401, align 8, !tbaa !66
  %1403 = udiv i32 %1396, %1402
  %1404 = load ptr, ptr %32, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1404, i32 0, i32 2
  store i32 %1403, ptr %1405, align 4, !tbaa !64
  br label %1406

1406:                                             ; preds = %1386, %1370
  %1407 = load ptr, ptr %29, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.UT_hash_handle, ptr %1407, i32 0, i32 3
  store ptr null, ptr %1408, align 8, !tbaa !63
  %1409 = load ptr, ptr %32, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1409, i32 0, i32 0
  %1411 = load ptr, ptr %1410, align 8, !tbaa !40
  %1412 = load ptr, ptr %29, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.UT_hash_handle, ptr %1412, i32 0, i32 4
  store ptr %1411, ptr %1413, align 8, !tbaa !68
  %1414 = load ptr, ptr %32, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1414, i32 0, i32 0
  %1416 = load ptr, ptr %1415, align 8, !tbaa !40
  %1417 = icmp ne ptr %1416, null
  br i1 %1417, label %1418, label %1424

1418:                                             ; preds = %1406
  %1419 = load ptr, ptr %29, align 8, !tbaa !5
  %1420 = load ptr, ptr %32, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1420, i32 0, i32 0
  %1422 = load ptr, ptr %1421, align 8, !tbaa !40
  %1423 = getelementptr inbounds %struct.UT_hash_handle, ptr %1422, i32 0, i32 3
  store ptr %1419, ptr %1423, align 8, !tbaa !63
  br label %1424

1424:                                             ; preds = %1418, %1406
  %1425 = load ptr, ptr %29, align 8, !tbaa !5
  %1426 = load ptr, ptr %32, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1426, i32 0, i32 0
  store ptr %1425, ptr %1427, align 8, !tbaa !40
  %1428 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1428, ptr %29, align 8, !tbaa !5
  br label %1349, !llvm.loop !70

1429:                                             ; preds = %1349
  br label %1430

1430:                                             ; preds = %1429
  %1431 = load i32, ptr %28, align 4, !tbaa !30
  %1432 = add i32 %1431, 1
  store i32 %1432, ptr %28, align 4, !tbaa !30
  br label %1328, !llvm.loop !71

1433:                                             ; preds = %1328
  %1434 = load ptr, ptr %12, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1434, i32 0, i32 4
  %1436 = getelementptr inbounds %struct.UT_hash_handle, ptr %1435, i32 0, i32 0
  %1437 = load ptr, ptr %1436, align 8, !tbaa !34
  %1438 = getelementptr inbounds %struct.UT_hash_table, ptr %1437, i32 0, i32 0
  %1439 = load ptr, ptr %1438, align 8, !tbaa !39
  call void @free(ptr noundef %1439) #9
  %1440 = load ptr, ptr %12, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1440, i32 0, i32 4
  %1442 = getelementptr inbounds %struct.UT_hash_handle, ptr %1441, i32 0, i32 0
  %1443 = load ptr, ptr %1442, align 8, !tbaa !34
  %1444 = getelementptr inbounds %struct.UT_hash_table, ptr %1443, i32 0, i32 1
  %1445 = load i32, ptr %1444, align 8, !tbaa !37
  %1446 = mul i32 %1445, 2
  store i32 %1446, ptr %1444, align 8, !tbaa !37
  %1447 = load ptr, ptr %12, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1447, i32 0, i32 4
  %1449 = getelementptr inbounds %struct.UT_hash_handle, ptr %1448, i32 0, i32 0
  %1450 = load ptr, ptr %1449, align 8, !tbaa !34
  %1451 = getelementptr inbounds %struct.UT_hash_table, ptr %1450, i32 0, i32 2
  %1452 = load i32, ptr %1451, align 4, !tbaa !57
  %1453 = add i32 %1452, 1
  store i32 %1453, ptr %1451, align 4, !tbaa !57
  %1454 = load ptr, ptr %31, align 8, !tbaa !5
  %1455 = load ptr, ptr %12, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1455, i32 0, i32 4
  %1457 = getelementptr inbounds %struct.UT_hash_handle, ptr %1456, i32 0, i32 0
  %1458 = load ptr, ptr %1457, align 8, !tbaa !34
  %1459 = getelementptr inbounds %struct.UT_hash_table, ptr %1458, i32 0, i32 0
  store ptr %1454, ptr %1459, align 8, !tbaa !39
  %1460 = load ptr, ptr %12, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1460, i32 0, i32 4
  %1462 = getelementptr inbounds %struct.UT_hash_handle, ptr %1461, i32 0, i32 0
  %1463 = load ptr, ptr %1462, align 8, !tbaa !34
  %1464 = getelementptr inbounds %struct.UT_hash_table, ptr %1463, i32 0, i32 7
  %1465 = load i32, ptr %1464, align 4, !tbaa !67
  %1466 = load ptr, ptr %12, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1466, i32 0, i32 4
  %1468 = getelementptr inbounds %struct.UT_hash_handle, ptr %1467, i32 0, i32 0
  %1469 = load ptr, ptr %1468, align 8, !tbaa !34
  %1470 = getelementptr inbounds %struct.UT_hash_table, ptr %1469, i32 0, i32 3
  %1471 = load i32, ptr %1470, align 8, !tbaa !60
  %1472 = lshr i32 %1471, 1
  %1473 = icmp ugt i32 %1465, %1472
  br i1 %1473, label %1474, label %1482

1474:                                             ; preds = %1433
  %1475 = load ptr, ptr %12, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1475, i32 0, i32 4
  %1477 = getelementptr inbounds %struct.UT_hash_handle, ptr %1476, i32 0, i32 0
  %1478 = load ptr, ptr %1477, align 8, !tbaa !34
  %1479 = getelementptr inbounds %struct.UT_hash_table, ptr %1478, i32 0, i32 8
  %1480 = load i32, ptr %1479, align 8, !tbaa !72
  %1481 = add i32 %1480, 1
  br label %1483

1482:                                             ; preds = %1433
  br label %1483

1483:                                             ; preds = %1482, %1474
  %1484 = phi i32 [ %1481, %1474 ], [ 0, %1482 ]
  %1485 = load ptr, ptr %12, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1485, i32 0, i32 4
  %1487 = getelementptr inbounds %struct.UT_hash_handle, ptr %1486, i32 0, i32 0
  %1488 = load ptr, ptr %1487, align 8, !tbaa !34
  %1489 = getelementptr inbounds %struct.UT_hash_table, ptr %1488, i32 0, i32 8
  store i32 %1484, ptr %1489, align 8, !tbaa !72
  %1490 = load ptr, ptr %12, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1490, i32 0, i32 4
  %1492 = getelementptr inbounds %struct.UT_hash_handle, ptr %1491, i32 0, i32 0
  %1493 = load ptr, ptr %1492, align 8, !tbaa !34
  %1494 = getelementptr inbounds %struct.UT_hash_table, ptr %1493, i32 0, i32 8
  %1495 = load i32, ptr %1494, align 8, !tbaa !72
  %1496 = icmp ugt i32 %1495, 1
  br i1 %1496, label %1497, label %1503

1497:                                             ; preds = %1483
  %1498 = load ptr, ptr %12, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1498, i32 0, i32 4
  %1500 = getelementptr inbounds %struct.UT_hash_handle, ptr %1499, i32 0, i32 0
  %1501 = load ptr, ptr %1500, align 8, !tbaa !34
  %1502 = getelementptr inbounds %struct.UT_hash_table, ptr %1501, i32 0, i32 9
  store i32 1, ptr %1502, align 4, !tbaa !65
  br label %1503

1503:                                             ; preds = %1497, %1483
  br label %1504

1504:                                             ; preds = %1503
  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 %1505

1505:                                             ; preds = %1504
  br label %1506

1506:                                             ; preds = %1505
  br label %1507

1507:                                             ; preds = %1506, %1251, %1237
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %1508

1508:                                             ; preds = %1507
  br label %1509

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

1510:                                             ; preds = %1509
  br label %1511

1511:                                             ; preds = %1510
  br label %1512

1512:                                             ; preds = %1511
  br label %1513

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

1514:                                             ; preds = %1513
  br label %1515

1515:                                             ; preds = %1514
  br label %1516

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

1517:                                             ; preds = %1516, %101, %70
  %1518 = load i64, ptr %11, align 8, !tbaa !9
  %1519 = add i64 %1518, 1
  store i64 %1519, ptr %11, align 8, !tbaa !9
  br label %51, !llvm.loop !73

1520:                                             ; preds = %57
  br label %1521

1521:                                             ; preds = %1520
  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
  %1522 = load ptr, ptr %10, align 8, !tbaa !5
  %1523 = icmp ne ptr %1522, null
  br i1 %1523, label %1524, label %1794

1524:                                             ; preds = %1521
  store i32 1, ptr %36, align 4, !tbaa !30
  store i32 1, ptr %34, align 4, !tbaa !30
  %1525 = load ptr, ptr %10, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1525, i32 0, i32 4
  store ptr %1526, ptr %42, align 8, !tbaa !5
  br label %1527

1527:                                             ; preds = %1790, %1524
  %1528 = load i32, ptr %34, align 4, !tbaa !30
  %1529 = icmp ne i32 %1528, 0
  br i1 %1529, label %1530, label %1793

1530:                                             ; preds = %1527
  %1531 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1531, 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 !30
  br label %1532

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

1535:                                             ; preds = %1532
  %1536 = load i32, ptr %35, align 4, !tbaa !30
  %1537 = add i32 %1536, 1
  store i32 %1537, ptr %35, align 4, !tbaa !30
  %1538 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1538, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %37, align 4, !tbaa !30
  store i32 0, ptr %33, align 4, !tbaa !30
  br label %1539

1539:                                             ; preds = %1568, %1535
  %1540 = load i32, ptr %33, align 4, !tbaa !30
  %1541 = load i32, ptr %36, align 4, !tbaa !30
  %1542 = icmp ult i32 %1540, %1541
  br i1 %1542, label %1543, label %1571

1543:                                             ; preds = %1539
  %1544 = load i32, ptr %37, align 4, !tbaa !30
  %1545 = add i32 %1544, 1
  store i32 %1545, ptr %37, align 4, !tbaa !30
  %1546 = load ptr, ptr %40, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.UT_hash_handle, ptr %1546, i32 0, i32 2
  %1548 = load ptr, ptr %1547, align 8, !tbaa !59
  %1549 = icmp ne ptr %1548, null
  br i1 %1549, label %1550, label %1561

1550:                                             ; preds = %1543
  %1551 = load ptr, ptr %40, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.UT_hash_handle, ptr %1551, i32 0, i32 2
  %1553 = load ptr, ptr %1552, align 8, !tbaa !59
  %1554 = load ptr, ptr %10, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1554, i32 0, i32 4
  %1556 = getelementptr inbounds %struct.UT_hash_handle, ptr %1555, i32 0, i32 0
  %1557 = load ptr, ptr %1556, align 8, !tbaa !34
  %1558 = getelementptr inbounds %struct.UT_hash_table, ptr %1557, i32 0, i32 5
  %1559 = load i64, ptr %1558, align 8, !tbaa !42
  %1560 = getelementptr inbounds i8, ptr %1553, i64 %1559
  br label %1562

1561:                                             ; preds = %1543
  br label %1562

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

1566:                                             ; preds = %1562
  br label %1571

1567:                                             ; preds = %1562
  br label %1568

1568:                                             ; preds = %1567
  %1569 = load i32, ptr %33, align 4, !tbaa !30
  %1570 = add i32 %1569, 1
  store i32 %1570, ptr %33, align 4, !tbaa !30
  br label %1539, !llvm.loop !74

1571:                                             ; preds = %1566, %1539
  %1572 = load i32, ptr %36, align 4, !tbaa !30
  store i32 %1572, ptr %38, align 4, !tbaa !30
  br label %1573

1573:                                             ; preds = %1758, %1571
  %1574 = load i32, ptr %37, align 4, !tbaa !30
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1584, label %1576

1576:                                             ; preds = %1573
  %1577 = load i32, ptr %38, align 4, !tbaa !30
  %1578 = icmp ne i32 %1577, 0
  br i1 %1578, label %1579, label %1582

1579:                                             ; preds = %1576
  %1580 = load ptr, ptr %40, align 8, !tbaa !5
  %1581 = icmp ne ptr %1580, null
  br label %1582

1582:                                             ; preds = %1579, %1576
  %1583 = phi i1 [ false, %1576 ], [ %1581, %1579 ]
  br label %1584

1584:                                             ; preds = %1582, %1573
  %1585 = phi i1 [ true, %1573 ], [ %1583, %1582 ]
  br i1 %1585, label %1586, label %1760

1586:                                             ; preds = %1584
  %1587 = load i32, ptr %37, align 4, !tbaa !30
  %1588 = icmp eq i32 %1587, 0
  br i1 %1588, label %1589, label %1611

1589:                                             ; preds = %1586
  %1590 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1590, ptr %41, align 8, !tbaa !5
  %1591 = load ptr, ptr %40, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.UT_hash_handle, ptr %1591, i32 0, i32 2
  %1593 = load ptr, ptr %1592, align 8, !tbaa !59
  %1594 = icmp ne ptr %1593, null
  br i1 %1594, label %1595, label %1606

1595:                                             ; preds = %1589
  %1596 = load ptr, ptr %40, align 8, !tbaa !5
  %1597 = getelementptr inbounds %struct.UT_hash_handle, ptr %1596, i32 0, i32 2
  %1598 = load ptr, ptr %1597, align 8, !tbaa !59
  %1599 = load ptr, ptr %10, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1599, i32 0, i32 4
  %1601 = getelementptr inbounds %struct.UT_hash_handle, ptr %1600, i32 0, i32 0
  %1602 = load ptr, ptr %1601, align 8, !tbaa !34
  %1603 = getelementptr inbounds %struct.UT_hash_table, ptr %1602, i32 0, i32 5
  %1604 = load i64, ptr %1603, align 8, !tbaa !42
  %1605 = getelementptr inbounds i8, ptr %1598, i64 %1604
  br label %1607

1606:                                             ; preds = %1589
  br label %1607

1607:                                             ; preds = %1606, %1595
  %1608 = phi ptr [ %1605, %1595 ], [ null, %1606 ]
  store ptr %1608, ptr %40, align 8, !tbaa !5
  %1609 = load i32, ptr %38, align 4, !tbaa !30
  %1610 = add i32 %1609, -1
  store i32 %1610, ptr %38, align 4, !tbaa !30
  br label %1714

1611:                                             ; preds = %1586
  %1612 = load i32, ptr %38, align 4, !tbaa !30
  %1613 = icmp eq i32 %1612, 0
  br i1 %1613, label %1617, label %1614

1614:                                             ; preds = %1611
  %1615 = load ptr, ptr %40, align 8, !tbaa !5
  %1616 = icmp eq ptr %1615, null
  br i1 %1616, label %1617, label %1643

1617:                                             ; preds = %1614, %1611
  %1618 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1618, ptr %41, align 8, !tbaa !5
  %1619 = load ptr, ptr %39, align 8, !tbaa !5
  %1620 = icmp ne ptr %1619, null
  br i1 %1620, label %1621, label %1640

1621:                                             ; preds = %1617
  %1622 = load ptr, ptr %39, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.UT_hash_handle, ptr %1622, i32 0, i32 2
  %1624 = load ptr, ptr %1623, align 8, !tbaa !59
  %1625 = icmp ne ptr %1624, null
  br i1 %1625, label %1626, label %1637

1626:                                             ; preds = %1621
  %1627 = load ptr, ptr %39, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.UT_hash_handle, ptr %1627, i32 0, i32 2
  %1629 = load ptr, ptr %1628, align 8, !tbaa !59
  %1630 = load ptr, ptr %10, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1630, i32 0, i32 4
  %1632 = getelementptr inbounds %struct.UT_hash_handle, ptr %1631, i32 0, i32 0
  %1633 = load ptr, ptr %1632, align 8, !tbaa !34
  %1634 = getelementptr inbounds %struct.UT_hash_table, ptr %1633, i32 0, i32 5
  %1635 = load i64, ptr %1634, align 8, !tbaa !42
  %1636 = getelementptr inbounds i8, ptr %1629, i64 %1635
  br label %1638

1637:                                             ; preds = %1621
  br label %1638

1638:                                             ; preds = %1637, %1626
  %1639 = phi ptr [ %1636, %1626 ], [ null, %1637 ]
  store ptr %1639, ptr %39, align 8, !tbaa !5
  br label %1640

1640:                                             ; preds = %1638, %1617
  %1641 = load i32, ptr %37, align 4, !tbaa !30
  %1642 = add i32 %1641, -1
  store i32 %1642, ptr %37, align 4, !tbaa !30
  br label %1713

1643:                                             ; preds = %1614
  %1644 = load ptr, ptr %39, align 8, !tbaa !5
  %1645 = load ptr, ptr %10, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1645, i32 0, i32 4
  %1647 = getelementptr inbounds %struct.UT_hash_handle, ptr %1646, i32 0, i32 0
  %1648 = load ptr, ptr %1647, align 8, !tbaa !34
  %1649 = getelementptr inbounds %struct.UT_hash_table, ptr %1648, i32 0, i32 5
  %1650 = load i64, ptr %1649, align 8, !tbaa !42
  %1651 = sub i64 0, %1650
  %1652 = getelementptr inbounds i8, ptr %1644, i64 %1651
  %1653 = load ptr, ptr %40, align 8, !tbaa !5
  %1654 = load ptr, ptr %10, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1654, i32 0, i32 4
  %1656 = getelementptr inbounds %struct.UT_hash_handle, ptr %1655, i32 0, i32 0
  %1657 = load ptr, ptr %1656, align 8, !tbaa !34
  %1658 = getelementptr inbounds %struct.UT_hash_table, ptr %1657, i32 0, i32 5
  %1659 = load i64, ptr %1658, align 8, !tbaa !42
  %1660 = sub i64 0, %1659
  %1661 = getelementptr inbounds i8, ptr %1653, i64 %1660
  %1662 = call i32 @by_from_id(ptr noundef %1652, ptr noundef %1661)
  %1663 = icmp sle i32 %1662, 0
  br i1 %1663, label %1664, label %1690

1664:                                             ; preds = %1643
  %1665 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %1665, ptr %41, align 8, !tbaa !5
  %1666 = load ptr, ptr %39, align 8, !tbaa !5
  %1667 = icmp ne ptr %1666, null
  br i1 %1667, label %1668, label %1687

1668:                                             ; preds = %1664
  %1669 = load ptr, ptr %39, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.UT_hash_handle, ptr %1669, i32 0, i32 2
  %1671 = load ptr, ptr %1670, align 8, !tbaa !59
  %1672 = icmp ne ptr %1671, null
  br i1 %1672, label %1673, label %1684

1673:                                             ; preds = %1668
  %1674 = load ptr, ptr %39, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.UT_hash_handle, ptr %1674, i32 0, i32 2
  %1676 = load ptr, ptr %1675, align 8, !tbaa !59
  %1677 = load ptr, ptr %10, align 8, !tbaa !5
  %1678 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1677, i32 0, i32 4
  %1679 = getelementptr inbounds %struct.UT_hash_handle, ptr %1678, i32 0, i32 0
  %1680 = load ptr, ptr %1679, align 8, !tbaa !34
  %1681 = getelementptr inbounds %struct.UT_hash_table, ptr %1680, i32 0, i32 5
  %1682 = load i64, ptr %1681, align 8, !tbaa !42
  %1683 = getelementptr inbounds i8, ptr %1676, i64 %1682
  br label %1685

1684:                                             ; preds = %1668
  br label %1685

1685:                                             ; preds = %1684, %1673
  %1686 = phi ptr [ %1683, %1673 ], [ null, %1684 ]
  store ptr %1686, ptr %39, align 8, !tbaa !5
  br label %1687

1687:                                             ; preds = %1685, %1664
  %1688 = load i32, ptr %37, align 4, !tbaa !30
  %1689 = add i32 %1688, -1
  store i32 %1689, ptr %37, align 4, !tbaa !30
  br label %1712

1690:                                             ; preds = %1643
  %1691 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1691, ptr %41, align 8, !tbaa !5
  %1692 = load ptr, ptr %40, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.UT_hash_handle, ptr %1692, i32 0, i32 2
  %1694 = load ptr, ptr %1693, align 8, !tbaa !59
  %1695 = icmp ne ptr %1694, null
  br i1 %1695, label %1696, label %1707

1696:                                             ; preds = %1690
  %1697 = load ptr, ptr %40, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.UT_hash_handle, ptr %1697, i32 0, i32 2
  %1699 = load ptr, ptr %1698, align 8, !tbaa !59
  %1700 = load ptr, ptr %10, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1700, i32 0, i32 4
  %1702 = getelementptr inbounds %struct.UT_hash_handle, ptr %1701, i32 0, i32 0
  %1703 = load ptr, ptr %1702, align 8, !tbaa !34
  %1704 = getelementptr inbounds %struct.UT_hash_table, ptr %1703, i32 0, i32 5
  %1705 = load i64, ptr %1704, align 8, !tbaa !42
  %1706 = getelementptr inbounds i8, ptr %1699, i64 %1705
  br label %1708

1707:                                             ; preds = %1690
  br label %1708

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

1712:                                             ; preds = %1708, %1687
  br label %1713

1713:                                             ; preds = %1712, %1640
  br label %1714

1714:                                             ; preds = %1713, %1607
  %1715 = load ptr, ptr %43, align 8, !tbaa !5
  %1716 = icmp ne ptr %1715, null
  br i1 %1716, label %1717, label %1735

1717:                                             ; preds = %1714
  %1718 = load ptr, ptr %41, align 8, !tbaa !5
  %1719 = icmp ne ptr %1718, null
  br i1 %1719, label %1720, label %1730

1720:                                             ; preds = %1717
  %1721 = load ptr, ptr %41, align 8, !tbaa !5
  %1722 = load ptr, ptr %10, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1722, i32 0, i32 4
  %1724 = getelementptr inbounds %struct.UT_hash_handle, ptr %1723, i32 0, i32 0
  %1725 = load ptr, ptr %1724, align 8, !tbaa !34
  %1726 = getelementptr inbounds %struct.UT_hash_table, ptr %1725, i32 0, i32 5
  %1727 = load i64, ptr %1726, align 8, !tbaa !42
  %1728 = sub i64 0, %1727
  %1729 = getelementptr inbounds i8, ptr %1721, i64 %1728
  br label %1731

1730:                                             ; preds = %1717
  br label %1731

1731:                                             ; preds = %1730, %1720
  %1732 = phi ptr [ %1729, %1720 ], [ null, %1730 ]
  %1733 = load ptr, ptr %43, align 8, !tbaa !5
  %1734 = getelementptr inbounds %struct.UT_hash_handle, ptr %1733, i32 0, i32 2
  store ptr %1732, ptr %1734, align 8, !tbaa !59
  br label %1737

1735:                                             ; preds = %1714
  %1736 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1736, ptr %42, align 8, !tbaa !5
  br label %1737

1737:                                             ; preds = %1735, %1731
  %1738 = load ptr, ptr %41, align 8, !tbaa !5
  %1739 = icmp ne ptr %1738, null
  br i1 %1739, label %1740, label %1758

1740:                                             ; preds = %1737
  %1741 = load ptr, ptr %43, align 8, !tbaa !5
  %1742 = icmp ne ptr %1741, null
  br i1 %1742, label %1743, label %1753

1743:                                             ; preds = %1740
  %1744 = load ptr, ptr %43, align 8, !tbaa !5
  %1745 = load ptr, ptr %10, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1745, i32 0, i32 4
  %1747 = getelementptr inbounds %struct.UT_hash_handle, ptr %1746, i32 0, i32 0
  %1748 = load ptr, ptr %1747, align 8, !tbaa !34
  %1749 = getelementptr inbounds %struct.UT_hash_table, ptr %1748, i32 0, i32 5
  %1750 = load i64, ptr %1749, align 8, !tbaa !42
  %1751 = sub i64 0, %1750
  %1752 = getelementptr inbounds i8, ptr %1744, i64 %1751
  br label %1754

1753:                                             ; preds = %1740
  br label %1754

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

1758:                                             ; preds = %1754, %1737
  %1759 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1759, ptr %43, align 8, !tbaa !5
  br label %1573, !llvm.loop !76

1760:                                             ; preds = %1584
  %1761 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %1761, ptr %39, align 8, !tbaa !5
  br label %1532, !llvm.loop !77

1762:                                             ; preds = %1532
  %1763 = load ptr, ptr %43, align 8, !tbaa !5
  %1764 = icmp ne ptr %1763, null
  br i1 %1764, label %1765, label %1768

1765:                                             ; preds = %1762
  %1766 = load ptr, ptr %43, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.UT_hash_handle, ptr %1766, i32 0, i32 2
  store ptr null, ptr %1767, align 8, !tbaa !59
  br label %1768

1768:                                             ; preds = %1765, %1762
  %1769 = load i32, ptr %35, align 4, !tbaa !30
  %1770 = icmp ule i32 %1769, 1
  br i1 %1770, label %1771, label %1790

1771:                                             ; preds = %1768
  store i32 0, ptr %34, align 4, !tbaa !30
  %1772 = load ptr, ptr %43, align 8, !tbaa !5
  %1773 = load ptr, ptr %10, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1773, i32 0, i32 4
  %1775 = getelementptr inbounds %struct.UT_hash_handle, ptr %1774, i32 0, i32 0
  %1776 = load ptr, ptr %1775, align 8, !tbaa !34
  %1777 = getelementptr inbounds %struct.UT_hash_table, ptr %1776, i32 0, i32 4
  store ptr %1772, ptr %1777, align 8, !tbaa !56
  br label %1778

1778:                                             ; preds = %1771
  %1779 = load ptr, ptr %42, align 8, !tbaa !5
  %1780 = load ptr, ptr %10, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1780, i32 0, i32 4
  %1782 = getelementptr inbounds %struct.UT_hash_handle, ptr %1781, i32 0, i32 0
  %1783 = load ptr, ptr %1782, align 8, !tbaa !34
  %1784 = getelementptr inbounds %struct.UT_hash_table, ptr %1783, i32 0, i32 5
  %1785 = load i64, ptr %1784, align 8, !tbaa !42
  %1786 = sub i64 0, %1785
  %1787 = getelementptr inbounds i8, ptr %1779, i64 %1786
  store ptr %1787, ptr %10, align 8, !tbaa !5
  br label %1788

1788:                                             ; preds = %1778
  br label %1789

1789:                                             ; preds = %1788
  br label %1790

1790:                                             ; preds = %1789, %1768
  %1791 = load i32, ptr %36, align 4, !tbaa !30
  %1792 = mul i32 %1791, 2
  store i32 %1792, ptr %36, align 4, !tbaa !30
  br label %1527, !llvm.loop !78

1793:                                             ; preds = %1527
  br label %1794

1794:                                             ; preds = %1793, %1521
  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 %1795

1795:                                             ; preds = %1794
  br label %1796

1796:                                             ; preds = %1795
  %1797 = load ptr, ptr %10, align 8, !tbaa !5
  %1798 = icmp ne ptr %1797, null
  br i1 %1798, label %1799, label %1806

1799:                                             ; preds = %1796
  %1800 = load ptr, ptr %10, align 8, !tbaa !5
  %1801 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1800, i32 0, i32 4
  %1802 = getelementptr inbounds %struct.UT_hash_handle, ptr %1801, i32 0, i32 0
  %1803 = load ptr, ptr %1802, align 8, !tbaa !34
  %1804 = getelementptr inbounds %struct.UT_hash_table, ptr %1803, i32 0, i32 3
  %1805 = load i32, ptr %1804, align 8, !tbaa !60
  br label %1807

1806:                                             ; preds = %1796
  br label %1807

1807:                                             ; preds = %1806, %1799
  %1808 = phi i32 [ %1805, %1799 ], [ 0, %1806 ]
  %1809 = zext i32 %1808 to i64
  %1810 = load ptr, ptr %9, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.subtable_gsub_single, ptr %1810, i32 0, i32 0
  %1812 = load i64, ptr %1811, align 8, !tbaa !11
  %1813 = icmp ne i64 %1809, %1812
  br i1 %1813, label %1814, label %1825

1814:                                             ; preds = %1807
  %1815 = load ptr, ptr %8, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.otfcc_Options, ptr %1815, i32 0, i32 24
  %1817 = load ptr, ptr %1816, align 8, !tbaa !19
  %1818 = getelementptr inbounds %struct.otfcc_ILogger, ptr %1817, i32 0, i32 6
  %1819 = load ptr, ptr %1818, align 8, !tbaa !22
  %1820 = load ptr, ptr %8, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.otfcc_Options, ptr %1820, i32 0, i32 24
  %1822 = load ptr, ptr %1821, align 8, !tbaa !19
  %1823 = call ptr @sdsempty()
  %1824 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %1823, ptr noundef @.str.2)
  call void %1819(ptr noundef %1822, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %1824)
  br label %1825

1825:                                             ; preds = %1814, %1807
  %1826 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gsub_single, ptr @iSubtable_gsub_single, i32 0, i32 12), align 8, !tbaa !79
  %1827 = load ptr, ptr %9, align 8, !tbaa !5
  call void %1826(ptr noundef %1827)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %1828 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1828, ptr %44, align 8, !tbaa !5
  %1829 = load ptr, ptr %10, align 8, !tbaa !5
  %1830 = icmp ne ptr %1829, null
  br i1 %1830, label %1831, label %1836

1831:                                             ; preds = %1825
  %1832 = load ptr, ptr %10, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1832, i32 0, i32 4
  %1834 = getelementptr inbounds %struct.UT_hash_handle, ptr %1833, i32 0, i32 2
  %1835 = load ptr, ptr %1834, align 8, !tbaa !54
  br label %1837

1836:                                             ; preds = %1825
  br label %1837

1837:                                             ; preds = %1836, %1831
  %1838 = phi ptr [ %1835, %1831 ], [ null, %1836 ]
  store ptr %1838, ptr %45, align 8, !tbaa !5
  br label %1839

1839:                                             ; preds = %2064, %1837
  %1840 = load ptr, ptr %44, align 8, !tbaa !5
  %1841 = icmp ne ptr %1840, null
  br i1 %1841, label %1842, label %2066

1842:                                             ; preds = %1839
  %1843 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_subtable_gsub_single, ptr @iSubtable_gsub_single, i32 0, i32 13), align 8, !tbaa !81
  %1844 = load ptr, ptr %9, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %46, i32 0, i32 0
  %1846 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !82
  %1847 = load ptr, ptr %44, align 8, !tbaa !5
  %1848 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1847, i32 0, i32 0
  %1849 = load i32, ptr %1848, align 8, !tbaa !48
  %1850 = trunc i32 %1849 to i16
  %1851 = load ptr, ptr %44, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1851, i32 0, i32 1
  %1853 = load ptr, ptr %1852, align 8, !tbaa !51
  %1854 = call { i64, ptr } %1846(i16 noundef zeroext %1850, ptr noundef %1853)
  %1855 = getelementptr inbounds { i64, ptr }, ptr %1845, i32 0, i32 0
  %1856 = extractvalue { i64, ptr } %1854, 0
  store i64 %1856, ptr %1855, align 8
  %1857 = getelementptr inbounds { i64, ptr }, ptr %1845, i32 0, i32 1
  %1858 = extractvalue { i64, ptr } %1854, 1
  store ptr %1858, ptr %1857, align 8
  %1859 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %46, i32 0, i32 1
  %1860 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !82
  %1861 = load ptr, ptr %44, align 8, !tbaa !5
  %1862 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1861, i32 0, i32 2
  %1863 = load i32, ptr %1862, align 8, !tbaa !50
  %1864 = trunc i32 %1863 to i16
  %1865 = load ptr, ptr %44, align 8, !tbaa !5
  %1866 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1865, i32 0, i32 3
  %1867 = load ptr, ptr %1866, align 8, !tbaa !52
  %1868 = call { i64, ptr } %1860(i16 noundef zeroext %1864, ptr noundef %1867)
  %1869 = getelementptr inbounds { i64, ptr }, ptr %1859, i32 0, i32 0
  %1870 = extractvalue { i64, ptr } %1868, 0
  store i64 %1870, ptr %1869, align 8
  %1871 = getelementptr inbounds { i64, ptr }, ptr %1859, i32 0, i32 1
  %1872 = extractvalue { i64, ptr } %1868, 1
  store ptr %1872, ptr %1871, align 8
  call void %1843(ptr noundef %1844, ptr noundef byval(%struct.otl_GsubSingleEntry) align 8 %46)
  %1873 = load ptr, ptr %44, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1873, i32 0, i32 1
  %1875 = load ptr, ptr %1874, align 8, !tbaa !51
  call void @sdsfree(ptr noundef %1875)
  %1876 = load ptr, ptr %44, align 8, !tbaa !5
  %1877 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1876, i32 0, i32 3
  %1878 = load ptr, ptr %1877, align 8, !tbaa !52
  call void @sdsfree(ptr noundef %1878)
  br label %1879

1879:                                             ; preds = %1842
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %1880 = load ptr, ptr %44, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1880, i32 0, i32 4
  store ptr %1881, ptr %47, align 8, !tbaa !5
  %1882 = load ptr, ptr %47, align 8, !tbaa !5
  %1883 = getelementptr inbounds %struct.UT_hash_handle, ptr %1882, i32 0, i32 1
  %1884 = load ptr, ptr %1883, align 8, !tbaa !75
  %1885 = icmp eq ptr %1884, null
  br i1 %1885, label %1886, label %1902

1886:                                             ; preds = %1879
  %1887 = load ptr, ptr %47, align 8, !tbaa !5
  %1888 = getelementptr inbounds %struct.UT_hash_handle, ptr %1887, i32 0, i32 2
  %1889 = load ptr, ptr %1888, align 8, !tbaa !59
  %1890 = icmp eq ptr %1889, null
  br i1 %1890, label %1891, label %1902

1891:                                             ; preds = %1886
  %1892 = load ptr, ptr %10, align 8, !tbaa !5
  %1893 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1892, i32 0, i32 4
  %1894 = getelementptr inbounds %struct.UT_hash_handle, ptr %1893, i32 0, i32 0
  %1895 = load ptr, ptr %1894, align 8, !tbaa !34
  %1896 = getelementptr inbounds %struct.UT_hash_table, ptr %1895, i32 0, i32 0
  %1897 = load ptr, ptr %1896, align 8, !tbaa !39
  call void @free(ptr noundef %1897) #9
  %1898 = load ptr, ptr %10, align 8, !tbaa !5
  %1899 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1898, i32 0, i32 4
  %1900 = getelementptr inbounds %struct.UT_hash_handle, ptr %1899, i32 0, i32 0
  %1901 = load ptr, ptr %1900, align 8, !tbaa !34
  call void @free(ptr noundef %1901) #9
  store ptr null, ptr %10, align 8, !tbaa !5
  br label %2050

1902:                                             ; preds = %1886, %1879
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  %1903 = load ptr, ptr %47, align 8, !tbaa !5
  %1904 = load ptr, ptr %10, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1904, i32 0, i32 4
  %1906 = getelementptr inbounds %struct.UT_hash_handle, ptr %1905, i32 0, i32 0
  %1907 = load ptr, ptr %1906, align 8, !tbaa !34
  %1908 = getelementptr inbounds %struct.UT_hash_table, ptr %1907, i32 0, i32 4
  %1909 = load ptr, ptr %1908, align 8, !tbaa !56
  %1910 = icmp eq ptr %1903, %1909
  br i1 %1910, label %1911, label %1927

1911:                                             ; preds = %1902
  %1912 = load ptr, ptr %47, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.UT_hash_handle, ptr %1912, i32 0, i32 1
  %1914 = load ptr, ptr %1913, align 8, !tbaa !75
  %1915 = load ptr, ptr %10, align 8, !tbaa !5
  %1916 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1915, i32 0, i32 4
  %1917 = getelementptr inbounds %struct.UT_hash_handle, ptr %1916, i32 0, i32 0
  %1918 = load ptr, ptr %1917, align 8, !tbaa !34
  %1919 = getelementptr inbounds %struct.UT_hash_table, ptr %1918, i32 0, i32 5
  %1920 = load i64, ptr %1919, align 8, !tbaa !42
  %1921 = getelementptr inbounds i8, ptr %1914, i64 %1920
  %1922 = load ptr, ptr %10, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1922, i32 0, i32 4
  %1924 = getelementptr inbounds %struct.UT_hash_handle, ptr %1923, i32 0, i32 0
  %1925 = load ptr, ptr %1924, align 8, !tbaa !34
  %1926 = getelementptr inbounds %struct.UT_hash_table, ptr %1925, i32 0, i32 4
  store ptr %1921, ptr %1926, align 8, !tbaa !56
  br label %1927

1927:                                             ; preds = %1911, %1902
  %1928 = load ptr, ptr %47, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.UT_hash_handle, ptr %1928, i32 0, i32 1
  %1930 = load ptr, ptr %1929, align 8, !tbaa !75
  %1931 = icmp ne ptr %1930, null
  br i1 %1931, label %1932, label %1947

1932:                                             ; preds = %1927
  %1933 = load ptr, ptr %47, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.UT_hash_handle, ptr %1933, i32 0, i32 2
  %1935 = load ptr, ptr %1934, align 8, !tbaa !59
  %1936 = load ptr, ptr %47, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.UT_hash_handle, ptr %1936, i32 0, i32 1
  %1938 = load ptr, ptr %1937, align 8, !tbaa !75
  %1939 = load ptr, ptr %10, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1939, i32 0, i32 4
  %1941 = getelementptr inbounds %struct.UT_hash_handle, ptr %1940, i32 0, i32 0
  %1942 = load ptr, ptr %1941, align 8, !tbaa !34
  %1943 = getelementptr inbounds %struct.UT_hash_table, ptr %1942, i32 0, i32 5
  %1944 = load i64, ptr %1943, align 8, !tbaa !42
  %1945 = getelementptr inbounds i8, ptr %1938, i64 %1944
  %1946 = getelementptr inbounds %struct.UT_hash_handle, ptr %1945, i32 0, i32 2
  store ptr %1935, ptr %1946, align 8, !tbaa !59
  br label %1954

1947:                                             ; preds = %1927
  br label %1948

1948:                                             ; preds = %1947
  %1949 = load ptr, ptr %47, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.UT_hash_handle, ptr %1949, i32 0, i32 2
  %1951 = load ptr, ptr %1950, align 8, !tbaa !59
  store ptr %1951, ptr %10, align 8, !tbaa !5
  br label %1952

1952:                                             ; preds = %1948
  br label %1953

1953:                                             ; preds = %1952
  br label %1954

1954:                                             ; preds = %1953, %1932
  %1955 = load ptr, ptr %47, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.UT_hash_handle, ptr %1955, i32 0, i32 2
  %1957 = load ptr, ptr %1956, align 8, !tbaa !59
  %1958 = icmp ne ptr %1957, null
  br i1 %1958, label %1959, label %1974

1959:                                             ; preds = %1954
  %1960 = load ptr, ptr %47, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.UT_hash_handle, ptr %1960, i32 0, i32 1
  %1962 = load ptr, ptr %1961, align 8, !tbaa !75
  %1963 = load ptr, ptr %47, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.UT_hash_handle, ptr %1963, i32 0, i32 2
  %1965 = load ptr, ptr %1964, align 8, !tbaa !59
  %1966 = load ptr, ptr %10, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1966, i32 0, i32 4
  %1968 = getelementptr inbounds %struct.UT_hash_handle, ptr %1967, i32 0, i32 0
  %1969 = load ptr, ptr %1968, align 8, !tbaa !34
  %1970 = getelementptr inbounds %struct.UT_hash_table, ptr %1969, i32 0, i32 5
  %1971 = load i64, ptr %1970, align 8, !tbaa !42
  %1972 = getelementptr inbounds i8, ptr %1965, i64 %1971
  %1973 = getelementptr inbounds %struct.UT_hash_handle, ptr %1972, i32 0, i32 1
  store ptr %1962, ptr %1973, align 8, !tbaa !75
  br label %1974

1974:                                             ; preds = %1959, %1954
  br label %1975

1975:                                             ; preds = %1974
  %1976 = load ptr, ptr %47, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.UT_hash_handle, ptr %1976, i32 0, i32 7
  %1978 = load i32, ptr %1977, align 4, !tbaa !69
  %1979 = load ptr, ptr %10, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1979, i32 0, i32 4
  %1981 = getelementptr inbounds %struct.UT_hash_handle, ptr %1980, i32 0, i32 0
  %1982 = load ptr, ptr %1981, align 8, !tbaa !34
  %1983 = getelementptr inbounds %struct.UT_hash_table, ptr %1982, i32 0, i32 1
  %1984 = load i32, ptr %1983, align 8, !tbaa !37
  %1985 = sub i32 %1984, 1
  %1986 = and i32 %1978, %1985
  store i32 %1986, ptr %48, align 4, !tbaa !30
  br label %1987

1987:                                             ; preds = %1975
  br label %1988

1988:                                             ; preds = %1987
  br label %1989

1989:                                             ; preds = %1988
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %1990 = load ptr, ptr %10, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1990, i32 0, i32 4
  %1992 = getelementptr inbounds %struct.UT_hash_handle, ptr %1991, i32 0, i32 0
  %1993 = load ptr, ptr %1992, align 8, !tbaa !34
  %1994 = getelementptr inbounds %struct.UT_hash_table, ptr %1993, i32 0, i32 0
  %1995 = load ptr, ptr %1994, align 8, !tbaa !39
  %1996 = load i32, ptr %48, align 4, !tbaa !30
  %1997 = zext i32 %1996 to i64
  %1998 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1995, i64 %1997
  store ptr %1998, ptr %49, align 8, !tbaa !5
  %1999 = load ptr, ptr %49, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1999, i32 0, i32 1
  %2001 = load i32, ptr %2000, align 8, !tbaa !61
  %2002 = add i32 %2001, -1
  store i32 %2002, ptr %2000, align 8, !tbaa !61
  %2003 = load ptr, ptr %49, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2003, i32 0, i32 0
  %2005 = load ptr, ptr %2004, align 8, !tbaa !40
  %2006 = load ptr, ptr %47, align 8, !tbaa !5
  %2007 = icmp eq ptr %2005, %2006
  br i1 %2007, label %2008, label %2014

2008:                                             ; preds = %1989
  %2009 = load ptr, ptr %47, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.UT_hash_handle, ptr %2009, i32 0, i32 4
  %2011 = load ptr, ptr %2010, align 8, !tbaa !68
  %2012 = load ptr, ptr %49, align 8, !tbaa !5
  %2013 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2012, i32 0, i32 0
  store ptr %2011, ptr %2013, align 8, !tbaa !40
  br label %2014

2014:                                             ; preds = %2008, %1989
  %2015 = load ptr, ptr %47, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.UT_hash_handle, ptr %2015, i32 0, i32 3
  %2017 = load ptr, ptr %2016, align 8, !tbaa !63
  %2018 = icmp ne ptr %2017, null
  br i1 %2018, label %2019, label %2027

2019:                                             ; preds = %2014
  %2020 = load ptr, ptr %47, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.UT_hash_handle, ptr %2020, i32 0, i32 4
  %2022 = load ptr, ptr %2021, align 8, !tbaa !68
  %2023 = load ptr, ptr %47, align 8, !tbaa !5
  %2024 = getelementptr inbounds %struct.UT_hash_handle, ptr %2023, i32 0, i32 3
  %2025 = load ptr, ptr %2024, align 8, !tbaa !63
  %2026 = getelementptr inbounds %struct.UT_hash_handle, ptr %2025, i32 0, i32 4
  store ptr %2022, ptr %2026, align 8, !tbaa !68
  br label %2027

2027:                                             ; preds = %2019, %2014
  %2028 = load ptr, ptr %47, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.UT_hash_handle, ptr %2028, i32 0, i32 4
  %2030 = load ptr, ptr %2029, align 8, !tbaa !68
  %2031 = icmp ne ptr %2030, null
  br i1 %2031, label %2032, label %2040

2032:                                             ; preds = %2027
  %2033 = load ptr, ptr %47, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.UT_hash_handle, ptr %2033, i32 0, i32 3
  %2035 = load ptr, ptr %2034, align 8, !tbaa !63
  %2036 = load ptr, ptr %47, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.UT_hash_handle, ptr %2036, i32 0, i32 4
  %2038 = load ptr, ptr %2037, align 8, !tbaa !68
  %2039 = getelementptr inbounds %struct.UT_hash_handle, ptr %2038, i32 0, i32 3
  store ptr %2035, ptr %2039, align 8, !tbaa !63
  br label %2040

2040:                                             ; preds = %2032, %2027
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %2041

2041:                                             ; preds = %2040
  br label %2042

2042:                                             ; preds = %2041
  %2043 = load ptr, ptr %10, align 8, !tbaa !5
  %2044 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2043, i32 0, i32 4
  %2045 = getelementptr inbounds %struct.UT_hash_handle, ptr %2044, i32 0, i32 0
  %2046 = load ptr, ptr %2045, align 8, !tbaa !34
  %2047 = getelementptr inbounds %struct.UT_hash_table, ptr %2046, i32 0, i32 3
  %2048 = load i32, ptr %2047, align 8, !tbaa !60
  %2049 = add i32 %2048, -1
  store i32 %2049, ptr %2047, align 8, !tbaa !60
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %2050

2050:                                             ; preds = %2042, %1891
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %2051

2051:                                             ; preds = %2050
  br label %2052

2052:                                             ; preds = %2051
  %2053 = load ptr, ptr %44, align 8, !tbaa !5
  call void @free(ptr noundef %2053) #9
  store ptr null, ptr %44, align 8, !tbaa !5
  br label %2054

2054:                                             ; preds = %2052
  %2055 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %2055, ptr %44, align 8, !tbaa !5
  %2056 = load ptr, ptr %45, align 8, !tbaa !5
  %2057 = icmp ne ptr %2056, null
  br i1 %2057, label %2058, label %2063

2058:                                             ; preds = %2054
  %2059 = load ptr, ptr %45, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2059, i32 0, i32 4
  %2061 = getelementptr inbounds %struct.UT_hash_handle, ptr %2060, i32 0, i32 2
  %2062 = load ptr, ptr %2061, align 8, !tbaa !54
  br label %2064

2063:                                             ; preds = %2054
  br label %2064

2064:                                             ; preds = %2063, %2058
  %2065 = phi ptr [ %2062, %2058 ], [ null, %2063 ]
  store ptr %2065, ptr %45, align 8, !tbaa !5
  br label %1839, !llvm.loop !84

2066:                                             ; preds = %1839
  %2067 = load ptr, ptr %9, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.subtable_gsub_single, ptr %2067, i32 0, i32 0
  %2069 = load i64, ptr %2068, align 8, !tbaa !11
  %2070 = icmp eq i64 %2069, 0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  ret i1 %2070
}

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

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

declare ptr @sdsempty() #2

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

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

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

declare ptr @sdsdup(ptr noundef) #2

; Function Attrs: 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(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 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8, !6, i64 16}
!13 = !{!14, !6, i64 88}
!14 = !{!"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}
!15 = !{!16, !6, i64 264}
!16 = !{!"_caryll_font", !17, 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}
!17 = !{!"int", !7, i64 0}
!18 = !{!12, !6, i64 16}
!19 = !{!20, !6, 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, !6, i64 24, !6, i64 32}
!21 = !{!"_Bool", !7, i64 0}
!22 = !{!23, !6, i64 48}
!23 = !{!"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}
!24 = !{!25, !6, i64 8}
!25 = !{!"", !26, i64 0, !26, i64 16}
!26 = !{!"otfcc_Handle", !17, i64 0, !27, i64 4, !6, i64 8}
!27 = !{!"short", !7, i64 0}
!28 = !{!25, !6, i64 24}
!29 = !{!25, !27, i64 4}
!30 = !{!17, !17, i64 0}
!31 = !{!7, !7, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!35, !6, i64 32}
!35 = !{!"", !17, i64 0, !6, i64 8, !17, i64 16, !6, i64 24, !36, i64 32}
!36 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !17, i64 48, !17, i64 52}
!37 = !{!38, !17, i64 8}
!38 = !{!"UT_hash_table", !6, i64 0, !17, i64 8, !17, i64 12, !17, i64 16, !6, i64 24, !10, i64 32, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !17, i64 56}
!39 = !{!38, !6, i64 0}
!40 = !{!41, !6, i64 0}
!41 = !{!"UT_hash_bucket", !6, i64 0, !17, i64 8, !17, i64 12}
!42 = !{!38, !10, i64 32}
!43 = !{!35, !17, i64 84}
!44 = !{!35, !17, i64 80}
!45 = !{!35, !6, i64 72}
!46 = !{!35, !6, i64 64}
!47 = distinct !{!47, !33}
!48 = !{!35, !17, i64 0}
!49 = !{!25, !27, i64 20}
!50 = !{!35, !17, i64 16}
!51 = !{!35, !6, i64 8}
!52 = !{!35, !6, i64 24}
!53 = distinct !{!53, !33}
!54 = !{!35, !6, i64 48}
!55 = !{!35, !6, i64 40}
!56 = !{!38, !6, i64 24}
!57 = !{!38, !17, i64 12}
!58 = !{!38, !17, i64 56}
!59 = !{!36, !6, i64 16}
!60 = !{!38, !17, i64 16}
!61 = !{!41, !17, i64 8}
!62 = !{!35, !6, i64 56}
!63 = !{!36, !6, i64 24}
!64 = !{!41, !17, i64 12}
!65 = !{!38, !17, i64 52}
!66 = !{!38, !17, i64 40}
!67 = !{!38, !17, i64 44}
!68 = !{!36, !6, i64 32}
!69 = !{!36, !17, i64 52}
!70 = distinct !{!70, !33}
!71 = distinct !{!71, !33}
!72 = !{!38, !17, i64 48}
!73 = distinct !{!73, !33}
!74 = distinct !{!74, !33}
!75 = !{!36, !6, i64 8}
!76 = distinct !{!76, !33}
!77 = distinct !{!77, !33}
!78 = distinct !{!78, !33}
!79 = !{!80, !6, i64 96}
!80 = !{!"__caryll_vectorinterface_subtable_gsub_single", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144}
!81 = !{!80, !6, i64 104}
!82 = !{!83, !6, i64 80}
!83 = !{!"otfcc_HandlePackage", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!84 = distinct !{!84, !33}


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

%struct.otfcc_GlyphOrderPackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_subtable_gsub_single = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otl_GsubSingleEntry = type { %struct.otfcc_Handle, %struct.otfcc_Handle }
%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
@.str.1 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [58 x i8], align 1
@iSubtable_gsub_single = external local_unnamed_addr constant %struct.__caryll_vectorinterface_subtable_gsub_single, align 8
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

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

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

._crit_edge791:                                   ; preds = %323
  %.not = icmp eq ptr %.3, null
  br i1 %.not, label %.thread735, label %327

12:                                               ; preds = %.lr.ph790, %323
  %.0787 = phi ptr [ null, %.lr.ph790 ], [ %.3, %323 ]
  %.0577783 = phi i64 [ 0, %.lr.ph790 ], [ %324, %323 ]
  %13 = load ptr, ptr %9, align 8, !tbaa !13
  %14 = load ptr, ptr %10, align 8, !tbaa !16
  %15 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %14, i64 %.0577783
  %16 = tail call zeroext i1 %8(ptr noundef %13, ptr noundef %15) #10
  br i1 %16, label %26, label %17

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

26:                                               ; preds = %12
  %27 = load ptr, ptr %9, align 8, !tbaa !13
  %28 = load ptr, ptr %10, align 8, !tbaa !16
  %29 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %28, i64 %.0577783, i32 1
  %30 = tail call zeroext i1 %8(ptr noundef %27, ptr noundef nonnull %29) #10
  br i1 %30, label %40, label %31

31:                                               ; preds = %26
  %32 = load ptr, ptr %11, align 8, !tbaa !17
  %33 = getelementptr inbounds i8, ptr %32, i64 48
  %34 = load ptr, ptr %33, align 8, !tbaa !20
  %35 = tail call ptr @sdsempty() #10
  %36 = load ptr, ptr %10, align 8, !tbaa !16
  %37 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %36, i64 %.0577783, i32 1, i32 2
  %38 = load ptr, ptr %37, align 8, !tbaa !26
  %39 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %35, ptr noundef nonnull @.str, ptr noundef %38) #10
  tail call void %34(ptr noundef %32, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %39) #10
  br label %323

40:                                               ; preds = %26
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  %41 = load ptr, ptr %10, align 8, !tbaa !16
  %42 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %41, i64 %.0577783, i32 0, i32 1
  %43 = load i16, ptr %42, align 4, !tbaa !27
  %44 = zext i16 %43 to i32
  store i32 %44, ptr %5, align 4, !tbaa !28
  %45 = and i16 %43, -256
  %46 = zext i16 %45 to i32
  %47 = and i16 %43, 255
  %48 = zext nneg i16 %47 to i32
  %49 = add nuw nsw i32 %46, 17973517
  %50 = add nuw nsw i32 %49, %48
  %51 = xor i32 %50, 522093
  %52 = sub nuw nsw i32 -1622558010, %51
  %53 = shl i32 %51, 8
  %54 = xor i32 %52, %53
  %55 = add nuw nsw i32 %51, %54
  %56 = sub nuw nsw i32 -17973517, %55
  %57 = lshr i32 %54, 13
  %58 = xor i32 %56, %57
  %59 = add nuw nsw i32 %54, %58
  %60 = sub nsw i32 %51, %59
  %61 = lshr i32 %58, 12
  %62 = xor i32 %60, %61
  %63 = add nuw nsw i32 %58, %62
  %64 = sub nuw i32 %54, %63
  %65 = shl i32 %62, 16
  %66 = xor i32 %64, %65
  %67 = add i32 %62, %66
  %68 = sub i32 %58, %67
  %69 = lshr i32 %66, 5
  %70 = xor i32 %68, %69
  %71 = add i32 %66, %70
  %72 = sub i32 %62, %71
  %73 = lshr i32 %70, 3
  %74 = xor i32 %72, %73
  %75 = add i32 %70, %74
  %76 = sub i32 %66, %75
  %77 = shl i32 %74, 10
  %78 = xor i32 %76, %77
  %79 = add i32 %74, %78
  %80 = sub i32 %70, %79
  %81 = lshr i32 %78, 15
  %82 = xor i32 %80, %81
  %.not708 = icmp eq ptr %.0787, null
  br i1 %.not708, label %.loopexit770, label %83

83:                                               ; preds = %40
  %84 = getelementptr inbounds i8, ptr %.0787, i64 32
  %85 = load ptr, ptr %84, align 8, !tbaa !29
  %86 = getelementptr inbounds i8, ptr %85, i64 8
  %87 = load i32, ptr %86, align 8, !tbaa !32
  %88 = add i32 %87, -1
  %89 = and i32 %88, %82
  %90 = load ptr, ptr %85, align 8, !tbaa !34
  %91 = zext i32 %89 to i64
  %92 = getelementptr inbounds %struct.UT_hash_bucket, ptr %90, i64 %91
  %93 = load ptr, ptr %92, align 8, !tbaa !35
  %.not709 = icmp eq ptr %93, null
  br i1 %.not709, label %.loopexit770, label %.lr.ph

.lr.ph:                                           ; preds = %83
  %94 = getelementptr inbounds i8, ptr %85, i64 32
  %95 = load i64, ptr %94, align 8, !tbaa !37
  %96 = sub i64 0, %95
  %97 = getelementptr inbounds i8, ptr %93, i64 %96
  %98 = getelementptr inbounds i8, ptr %85, i64 32
  br label %99

99:                                               ; preds = %114, %.lr.ph
  %.1579775 = phi ptr [ %97, %.lr.ph ], [ %117, %114 ]
  %100 = getelementptr inbounds i8, ptr %.1579775, i64 84
  %101 = load i32, ptr %100, align 4, !tbaa !38
  %102 = icmp eq i32 %101, %82
  br i1 %102, label %103, label %111

103:                                              ; preds = %99
  %104 = getelementptr inbounds i8, ptr %.1579775, i64 80
  %105 = load i32, ptr %104, align 8, !tbaa !39
  %106 = icmp eq i32 %105, 4
  br i1 %106, label %107, label %111

107:                                              ; preds = %103
  %108 = getelementptr inbounds i8, ptr %.1579775, i64 72
  %109 = load ptr, ptr %108, align 8, !tbaa !40
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %109, ptr noundef nonnull dereferenceable(4) %5, i64 4)
  %110 = icmp eq i32 %bcmp, 0
  br i1 %110, label %118, label %111

111:                                              ; preds = %107, %103, %99
  %112 = getelementptr inbounds i8, ptr %.1579775, i64 64
  %113 = load ptr, ptr %112, align 8, !tbaa !41
  %.not711 = icmp eq ptr %113, null
  br i1 %.not711, label %.loopexit770, label %114

114:                                              ; preds = %111
  %115 = load i64, ptr %98, align 8, !tbaa !37
  %116 = sub i64 0, %115
  %117 = getelementptr inbounds i8, ptr %113, i64 %116
  br label %99, !llvm.loop !42

118:                                              ; preds = %107
  %119 = load ptr, ptr %11, align 8, !tbaa !17
  %120 = getelementptr inbounds i8, ptr %119, i64 48
  %121 = load ptr, ptr %120, align 8, !tbaa !20
  %122 = tail call ptr @sdsempty() #10
  %123 = load ptr, ptr %10, align 8, !tbaa !16
  %124 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %123, i64 %.0577783, i32 0, i32 2
  %125 = load ptr, ptr %124, align 8, !tbaa !22
  %126 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %122, ptr noundef nonnull @.str.1, ptr noundef %125) #10
  tail call void %121(ptr noundef %119, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %126) #10
  br label %322

.loopexit770:                                     ; preds = %111, %83, %40
  %127 = tail call ptr @__caryll_allocate_clean(i64 noundef 88, i64 noundef 33)
  %128 = load ptr, ptr %10, align 8, !tbaa !16
  %129 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %128, i64 %.0577783, i32 0, i32 1
  %130 = load i16, ptr %129, align 4, !tbaa !27
  %131 = zext i16 %130 to i32
  store i32 %131, ptr %127, align 8, !tbaa !44
  %132 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %128, i64 %.0577783, i32 1, i32 1
  %133 = load i16, ptr %132, align 4, !tbaa !45
  %134 = zext i16 %133 to i32
  %135 = getelementptr inbounds i8, ptr %127, i64 16
  store i32 %134, ptr %135, align 8, !tbaa !46
  %136 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %128, i64 %.0577783, i32 0, i32 2
  %137 = load ptr, ptr %136, align 8, !tbaa !22
  %138 = tail call ptr @sdsdup(ptr noundef %137) #10
  %139 = getelementptr inbounds i8, ptr %127, i64 8
  store ptr %138, ptr %139, align 8, !tbaa !47
  %140 = load ptr, ptr %10, align 8, !tbaa !16
  %141 = getelementptr inbounds %struct.otl_GsubSingleEntry, ptr %140, i64 %.0577783, i32 1, i32 2
  %142 = load ptr, ptr %141, align 8, !tbaa !26
  %143 = tail call ptr @sdsdup(ptr noundef %142) #10
  %144 = getelementptr inbounds i8, ptr %127, i64 24
  store ptr %143, ptr %144, align 8, !tbaa !48
  %145 = getelementptr inbounds i8, ptr %127, i64 3
  %146 = load i8, ptr %145, align 1, !tbaa !49
  %147 = zext i8 %146 to i32
  %148 = shl nuw i32 %147, 24
  %149 = getelementptr inbounds i8, ptr %127, i64 2
  %150 = load i8, ptr %149, align 1, !tbaa !49
  %151 = zext i8 %150 to i32
  %152 = shl nuw nsw i32 %151, 16
  %153 = getelementptr inbounds i8, ptr %127, i64 1
  %154 = load i8, ptr %153, align 1, !tbaa !49
  %155 = zext i8 %154 to i32
  %156 = shl nuw nsw i32 %155, 8
  %157 = load i8, ptr %127, align 1, !tbaa !49
  %158 = zext i8 %157 to i32
  %159 = add i32 %148, 17973517
  %160 = add i32 %159, %152
  %161 = add i32 %160, %156
  %162 = add i32 %161, %158
  %163 = xor i32 %162, 522093
  %164 = sub i32 -1622558010, %163
  %165 = shl i32 %163, 8
  %166 = xor i32 %164, %165
  %167 = add i32 %163, %166
  %168 = sub i32 -17973517, %167
  %169 = lshr i32 %166, 13
  %170 = xor i32 %168, %169
  %171 = add i32 %166, %170
  %172 = sub i32 %163, %171
  %173 = lshr i32 %170, 12
  %174 = xor i32 %172, %173
  %175 = add i32 %170, %174
  %176 = sub i32 %166, %175
  %177 = shl i32 %174, 16
  %178 = xor i32 %176, %177
  %179 = add i32 %174, %178
  %180 = sub i32 %170, %179
  %181 = lshr i32 %178, 5
  %182 = xor i32 %180, %181
  %183 = add i32 %178, %182
  %184 = sub i32 %174, %183
  %185 = lshr i32 %182, 3
  %186 = xor i32 %184, %185
  %187 = add i32 %182, %186
  %188 = sub i32 %178, %187
  %189 = shl i32 %186, 10
  %190 = xor i32 %188, %189
  %191 = add i32 %186, %190
  %192 = sub i32 %182, %191
  %193 = lshr i32 %190, 15
  %194 = xor i32 %192, %193
  %195 = getelementptr inbounds i8, ptr %127, i64 32
  %196 = getelementptr inbounds i8, ptr %127, i64 84
  store i32 %194, ptr %196, align 4, !tbaa !38
  %197 = getelementptr inbounds i8, ptr %127, i64 72
  store ptr %127, ptr %197, align 8, !tbaa !40
  %198 = getelementptr inbounds i8, ptr %127, i64 80
  store i32 4, ptr %198, align 8, !tbaa !39
  br i1 %.not708, label %199, label %213

199:                                              ; preds = %.loopexit770
  %200 = getelementptr inbounds i8, ptr %127, i64 40
  %201 = 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) %200, i8 0, i64 16, i1 false)
  store ptr %201, ptr %195, align 8, !tbaa !29
  %.not713 = icmp eq ptr %201, null
  br i1 %.not713, label %202, label %203

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

203:                                              ; preds = %199
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %201, i8 0, i64 64, i1 false)
  %204 = load ptr, ptr %195, align 8, !tbaa !29
  %205 = getelementptr inbounds i8, ptr %204, i64 24
  store ptr %195, ptr %205, align 8, !tbaa !50
  %206 = getelementptr inbounds i8, ptr %204, i64 8
  store i32 32, ptr %206, align 8, !tbaa !32
  %207 = getelementptr inbounds i8, ptr %204, i64 12
  store i32 5, ptr %207, align 4, !tbaa !51
  %208 = getelementptr inbounds i8, ptr %204, i64 32
  store i64 32, ptr %208, align 8, !tbaa !37
  %209 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #11
  store ptr %209, ptr %204, align 8, !tbaa !34
  %210 = getelementptr inbounds i8, ptr %204, i64 56
  store i32 -1609490463, ptr %210, align 8, !tbaa !52
  %.not714 = icmp eq ptr %209, null
  br i1 %.not714, label %211, label %212

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

212:                                              ; preds = %203
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %209, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %195, align 8, !tbaa !29
  br label %225

213:                                              ; preds = %.loopexit770
  %214 = getelementptr inbounds i8, ptr %.0787, i64 32
  %215 = load ptr, ptr %214, align 8, !tbaa !29
  store ptr %215, ptr %195, align 8, !tbaa !29
  %216 = getelementptr inbounds i8, ptr %127, i64 48
  store ptr null, ptr %216, align 8, !tbaa !53
  %217 = getelementptr inbounds i8, ptr %215, i64 24
  %218 = load ptr, ptr %217, align 8, !tbaa !50
  %219 = getelementptr inbounds i8, ptr %215, i64 32
  %220 = load i64, ptr %219, align 8, !tbaa !37
  %221 = sub i64 0, %220
  %222 = getelementptr inbounds i8, ptr %218, i64 %221
  %223 = getelementptr inbounds i8, ptr %127, i64 40
  store ptr %222, ptr %223, align 8, !tbaa !54
  %224 = getelementptr inbounds i8, ptr %218, i64 16
  store ptr %127, ptr %224, align 8, !tbaa !55
  store ptr %195, ptr %217, align 8, !tbaa !50
  br label %225

225:                                              ; preds = %212, %213
  %226 = phi ptr [ %215, %213 ], [ %.pre, %212 ]
  %.1 = phi ptr [ %.0787, %213 ], [ %127, %212 ]
  %227 = getelementptr inbounds i8, ptr %226, i64 16
  %228 = load i32, ptr %227, align 8, !tbaa !56
  %229 = add i32 %228, 1
  store i32 %229, ptr %227, align 8, !tbaa !56
  %230 = getelementptr inbounds i8, ptr %226, i64 8
  %231 = load i32, ptr %230, align 8, !tbaa !32
  %232 = add i32 %231, -1
  %233 = and i32 %232, %194
  %234 = load ptr, ptr %226, align 8, !tbaa !34
  %235 = zext i32 %233 to i64
  %236 = getelementptr inbounds %struct.UT_hash_bucket, ptr %234, i64 %235
  %237 = getelementptr inbounds i8, ptr %236, i64 8
  %238 = load i32, ptr %237, align 8, !tbaa !57
  %239 = add i32 %238, 1
  store i32 %239, ptr %237, align 8, !tbaa !57
  %240 = load ptr, ptr %236, align 8, !tbaa !35
  %241 = getelementptr inbounds i8, ptr %127, i64 64
  store ptr %240, ptr %241, align 8, !tbaa !41
  %242 = getelementptr inbounds i8, ptr %127, i64 56
  store ptr null, ptr %242, align 8, !tbaa !58
  %.not715 = icmp eq ptr %240, null
  br i1 %.not715, label %245, label %243

243:                                              ; preds = %225
  %244 = getelementptr inbounds i8, ptr %240, i64 24
  store ptr %195, ptr %244, align 8, !tbaa !59
  br label %245

245:                                              ; preds = %243, %225
  store ptr %195, ptr %236, align 8, !tbaa !35
  %246 = getelementptr inbounds i8, ptr %236, i64 12
  %247 = load i32, ptr %246, align 4, !tbaa !60
  %248 = mul i32 %247, 10
  %249 = add i32 %248, 10
  %.not716 = icmp ult i32 %239, %249
  br i1 %.not716, label %322, label %250

250:                                              ; preds = %245
  %251 = getelementptr inbounds i8, ptr %226, i64 52
  %252 = load i32, ptr %251, align 4, !tbaa !61
  %.not717 = icmp eq i32 %252, 0
  br i1 %.not717, label %253, label %322

253:                                              ; preds = %250
  %254 = zext i32 %231 to i64
  %255 = shl nuw nsw i64 %254, 5
  %calloc = tail call ptr @calloc(i64 1, i64 %255)
  %.not718 = icmp eq ptr %calloc, null
  br i1 %.not718, label %256, label %257

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

257:                                              ; preds = %253
  %258 = load ptr, ptr %195, align 8, !tbaa !29
  %259 = getelementptr inbounds i8, ptr %258, i64 16
  %260 = load i32, ptr %259, align 8, !tbaa !56
  %261 = getelementptr inbounds i8, ptr %258, i64 12
  %262 = load i32, ptr %261, align 4, !tbaa !51
  %263 = add i32 %262, 1
  %264 = lshr i32 %260, %263
  %265 = getelementptr inbounds i8, ptr %258, i64 8
  %266 = load i32, ptr %265, align 8, !tbaa !32
  %267 = shl i32 %266, 1
  %268 = add i32 %267, -1
  %269 = and i32 %268, %260
  %.not719 = icmp ne i32 %269, 0
  %270 = zext i1 %.not719 to i32
  %271 = add i32 %264, %270
  %272 = getelementptr inbounds i8, ptr %258, i64 40
  store i32 %271, ptr %272, align 8, !tbaa !62
  %273 = getelementptr inbounds i8, ptr %258, i64 44
  store i32 0, ptr %273, align 4, !tbaa !63
  %.not823 = icmp eq i32 %266, 0
  %.pre828 = load ptr, ptr %258, align 8, !tbaa !34
  br i1 %.not823, label %._crit_edge782, label %.lr.ph781

.lr.ph781:                                        ; preds = %257
  %wide.trip.count = zext i32 %266 to i64
  br label %274

274:                                              ; preds = %.lr.ph781, %._crit_edge
  %275 = phi i32 [ 0, %.lr.ph781 ], [ %301, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.lr.ph781 ], [ %indvars.iv.next, %._crit_edge ]
  %276 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre828, i64 %indvars.iv
  %277 = load ptr, ptr %276, align 8, !tbaa !35
  %.not720776 = icmp eq ptr %277, null
  br i1 %.not720776, label %._crit_edge, label %.lr.ph778

.lr.ph778:                                        ; preds = %274, %300
  %278 = phi i32 [ %295, %300 ], [ %275, %274 ]
  %.0635777 = phi ptr [ %280, %300 ], [ %277, %274 ]
  %279 = getelementptr inbounds i8, ptr %.0635777, i64 32
  %280 = load ptr, ptr %279, align 8, !tbaa !64
  %281 = getelementptr inbounds i8, ptr %.0635777, i64 52
  %282 = load i32, ptr %281, align 4, !tbaa !65
  %283 = and i32 %282, %268
  %284 = zext i32 %283 to i64
  %285 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %284
  %286 = getelementptr inbounds i8, ptr %285, i64 8
  %287 = load i32, ptr %286, align 8, !tbaa !57
  %288 = add i32 %287, 1
  store i32 %288, ptr %286, align 8, !tbaa !57
  %289 = icmp ugt i32 %288, %271
  br i1 %289, label %290, label %294

290:                                              ; preds = %.lr.ph778
  %291 = add i32 %278, 1
  store i32 %291, ptr %273, align 4, !tbaa !63
  %292 = udiv i32 %288, %271
  %293 = getelementptr inbounds i8, ptr %285, i64 12
  store i32 %292, ptr %293, align 4, !tbaa !60
  br label %294

294:                                              ; preds = %290, %.lr.ph778
  %295 = phi i32 [ %291, %290 ], [ %278, %.lr.ph778 ]
  %296 = getelementptr inbounds i8, ptr %.0635777, i64 24
  store ptr null, ptr %296, align 8, !tbaa !59
  %297 = load ptr, ptr %285, align 8, !tbaa !35
  store ptr %297, ptr %279, align 8, !tbaa !64
  %.not721 = icmp eq ptr %297, null
  br i1 %.not721, label %300, label %298

298:                                              ; preds = %294
  %299 = getelementptr inbounds i8, ptr %297, i64 24
  store ptr %.0635777, ptr %299, align 8, !tbaa !59
  br label %300

300:                                              ; preds = %298, %294
  store ptr %.0635777, ptr %285, align 8, !tbaa !35
  %.not720 = icmp eq ptr %280, null
  br i1 %.not720, label %._crit_edge, label %.lr.ph778, !llvm.loop !66

._crit_edge:                                      ; preds = %300, %274
  %301 = phi i32 [ %275, %274 ], [ %295, %300 ]
  %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_edge782, label %274, !llvm.loop !67

._crit_edge782:                                   ; preds = %._crit_edge, %257
  tail call void @free(ptr noundef %.pre828) #10
  %302 = load ptr, ptr %195, align 8, !tbaa !29
  %303 = getelementptr inbounds i8, ptr %302, i64 8
  %304 = load i32, ptr %303, align 8, !tbaa !32
  %305 = shl i32 %304, 1
  store i32 %305, ptr %303, align 8, !tbaa !32
  %306 = getelementptr inbounds i8, ptr %302, i64 12
  %307 = load i32, ptr %306, align 4, !tbaa !51
  %308 = add i32 %307, 1
  store i32 %308, ptr %306, align 4, !tbaa !51
  store ptr %calloc, ptr %302, align 8, !tbaa !34
  %309 = getelementptr inbounds i8, ptr %302, i64 44
  %310 = load i32, ptr %309, align 4, !tbaa !63
  %311 = getelementptr inbounds i8, ptr %302, i64 16
  %312 = load i32, ptr %311, align 8, !tbaa !56
  %313 = lshr i32 %312, 1
  %314 = icmp ugt i32 %310, %313
  %315 = getelementptr inbounds i8, ptr %302, i64 48
  br i1 %314, label %316, label %.thread724

.thread724:                                       ; preds = %._crit_edge782
  store i32 0, ptr %315, align 8, !tbaa !68
  br label %322

316:                                              ; preds = %._crit_edge782
  %317 = load i32, ptr %315, align 8, !tbaa !68
  %318 = add i32 %317, 1
  store i32 %318, ptr %315, align 8, !tbaa !68
  %319 = icmp ugt i32 %318, 1
  br i1 %319, label %320, label %322

320:                                              ; preds = %316
  %321 = getelementptr inbounds i8, ptr %302, i64 52
  store i32 1, ptr %321, align 4, !tbaa !61
  br label %322

322:                                              ; preds = %.thread724, %245, %250, %316, %320, %118
  %.2 = phi ptr [ %.0787, %118 ], [ %.1, %320 ], [ %.1, %316 ], [ %.1, %250 ], [ %.1, %245 ], [ %.1, %.thread724 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  br label %323

323:                                              ; preds = %322, %31, %17
  %.3 = phi ptr [ %.2, %322 ], [ %.0787, %31 ], [ %.0787, %17 ]
  %324 = add nuw i64 %.0577783, 1
  %325 = load i64, ptr %2, align 8, !tbaa !5
  %326 = icmp ult i64 %324, %325
  br i1 %326, label %12, label %._crit_edge791, !llvm.loop !69

327:                                              ; preds = %._crit_edge791
  %328 = getelementptr inbounds i8, ptr %.3, i64 32
  %329 = getelementptr inbounds i8, ptr %.3, i64 32
  br label %.lr.ph807

.preheader:                                       ; preds = %417
  %330 = shl i32 %.0606812865, 1
  %.not695802 = icmp eq ptr %.2588.ph, null
  br i1 %.not695802, label %.thread848, label %.lr.ph807

.lr.ph807:                                        ; preds = %327, %.preheader
  %.0606812865 = phi i32 [ 1, %327 ], [ %330, %.preheader ]
  %.0586813864 = phi ptr [ %328, %327 ], [ %.2588.ph, %.preheader ]
  %.not824 = icmp eq i32 %.0606812865, 0
  br label %331

.loopexit:                                        ; preds = %341
  %.not695 = icmp eq ptr %.2593, null
  br i1 %.not695, label %._crit_edge808, label %331, !llvm.loop !70

331:                                              ; preds = %.lr.ph807, %.loopexit
  %.0584806 = phi ptr [ null, %.lr.ph807 ], [ %.1585, %.loopexit ]
  %.1587805 = phi ptr [ null, %.lr.ph807 ], [ %.2588.ph, %.loopexit ]
  %.0595804 = phi ptr [ %.0586813864, %.lr.ph807 ], [ %.2593, %.loopexit ]
  %.0607803 = phi i32 [ 0, %.lr.ph807 ], [ %332, %.loopexit ]
  %332 = add i32 %.0607803, 1
  br i1 %.not824, label %.thread725.preheader, label %.lr.ph796

.lr.ph796:                                        ; preds = %331, %336
  %.0591794 = phi ptr [ %340, %336 ], [ %.0595804, %331 ]
  %.0602793 = phi i32 [ %333, %336 ], [ 0, %331 ]
  %333 = add nuw i32 %.0602793, 1
  %334 = getelementptr inbounds i8, ptr %.0591794, i64 16
  %335 = load ptr, ptr %334, align 8, !tbaa !55
  %.not697 = icmp eq ptr %335, null
  br i1 %.not697, label %.thread725.preheader, label %336

336:                                              ; preds = %.lr.ph796
  %337 = load ptr, ptr %329, align 8, !tbaa !29
  %338 = getelementptr inbounds i8, ptr %337, i64 32
  %339 = load i64, ptr %338, align 8, !tbaa !37
  %340 = getelementptr inbounds i8, ptr %335, i64 %339
  %exitcond827.not = icmp eq i32 %333, %.0606812865
  br i1 %exitcond827.not, label %.thread725.preheader, label %.lr.ph796, !llvm.loop !71

.thread725.preheader:                             ; preds = %336, %.lr.ph796, %331
  %.2604.ph = phi i32 [ 0, %331 ], [ %333, %.lr.ph796 ], [ %.0606812865, %336 ]
  %.2593.ph = phi ptr [ %.0595804, %331 ], [ null, %.lr.ph796 ], [ %340, %336 ]
  br label %.thread725.outer

.thread725.outer:                                 ; preds = %.thread725.outer.backedge, %.thread725.preheader
  %.2604.ph866 = phi i32 [ %.2604.ph, %.thread725.preheader ], [ %.3605, %.thread725.outer.backedge ]
  %.0600.ph = phi i32 [ %.0606812865, %.thread725.preheader ], [ %.1601, %.thread725.outer.backedge ]
  %.1596.ph = phi ptr [ %.0595804, %.thread725.preheader ], [ %.4599, %.thread725.outer.backedge ]
  %.2593.ph867 = phi ptr [ %.2593.ph, %.thread725.preheader ], [ %.3594, %.thread725.outer.backedge ]
  %.2588.ph = phi ptr [ %.1587805, %.thread725.preheader ], [ %.2588.ph.be, %.thread725.outer.backedge ]
  %.1585.ph = phi ptr [ %.0584806, %.thread725.preheader ], [ %.0590, %.thread725.outer.backedge ]
  br label %.thread725

.thread725:                                       ; preds = %.thread725.outer, %.thread726.thread
  %.2604 = phi i32 [ %.3605, %.thread726.thread ], [ %.2604.ph866, %.thread725.outer ]
  %.0600 = phi i32 [ %.1601, %.thread726.thread ], [ %.0600.ph, %.thread725.outer ]
  %.1596 = phi ptr [ %.4599, %.thread726.thread ], [ %.1596.ph, %.thread725.outer ]
  %.2593 = phi ptr [ %.3594, %.thread726.thread ], [ %.2593.ph867, %.thread725.outer ]
  %.1585 = phi ptr [ %.0590, %.thread726.thread ], [ %.1585.ph, %.thread725.outer ]
  %cond = icmp eq i32 %.2604, 0
  br i1 %cond, label %341, label %355

341:                                              ; preds = %.thread725
  %342 = icmp ne i32 %.0600, 0
  %343 = icmp ne ptr %.2593, null
  %344 = select i1 %342, i1 %343, i1 false
  br i1 %344, label %.critedge, label %.loopexit

.critedge:                                        ; preds = %341
  %345 = getelementptr inbounds i8, ptr %.2593, i64 16
  %346 = load ptr, ptr %345, align 8, !tbaa !55
  %.not704 = icmp eq ptr %346, null
  br i1 %.not704, label %352, label %347

347:                                              ; preds = %.critedge
  %348 = load ptr, ptr %329, align 8, !tbaa !29
  %349 = getelementptr inbounds i8, ptr %348, i64 32
  %350 = load i64, ptr %349, align 8, !tbaa !37
  %351 = getelementptr inbounds i8, ptr %346, i64 %350
  br label %352

352:                                              ; preds = %.critedge, %347
  %353 = phi ptr [ %351, %347 ], [ null, %.critedge ]
  %354 = add i32 %.0600, -1
  br label %400

355:                                              ; preds = %.thread725
  %356 = icmp eq i32 %.0600, 0
  %357 = icmp eq ptr %.2593, null
  %or.cond = select i1 %356, i1 true, i1 %357
  br i1 %or.cond, label %358, label %369

358:                                              ; preds = %355
  %.not702 = icmp eq ptr %.1596, null
  br i1 %.not702, label %367, label %359

359:                                              ; preds = %358
  %360 = getelementptr inbounds i8, ptr %.1596, i64 16
  %361 = load ptr, ptr %360, align 8, !tbaa !55
  %.not703 = icmp eq ptr %361, null
  br i1 %.not703, label %367, label %362

362:                                              ; preds = %359
  %363 = load ptr, ptr %329, align 8, !tbaa !29
  %364 = getelementptr inbounds i8, ptr %363, i64 32
  %365 = load i64, ptr %364, align 8, !tbaa !37
  %366 = getelementptr inbounds i8, ptr %361, i64 %365
  br label %367

367:                                              ; preds = %362, %359, %358
  %.2597 = phi ptr [ null, %358 ], [ %366, %362 ], [ null, %359 ]
  %368 = add i32 %.2604, -1
  br label %400

369:                                              ; preds = %355
  %370 = load ptr, ptr %329, align 8, !tbaa !29
  %371 = getelementptr inbounds i8, ptr %370, i64 32
  %372 = load i64, ptr %371, align 8, !tbaa !37
  %373 = sub i64 0, %372
  %374 = getelementptr inbounds i8, ptr %.1596, i64 %373
  %375 = getelementptr inbounds i8, ptr %.2593, i64 %373
  %376 = tail call i32 @by_from_id(ptr noundef %374, ptr noundef %375)
  %377 = icmp slt i32 %376, 1
  br i1 %377, label %378, label %389

378:                                              ; preds = %369
  %.not700 = icmp eq ptr %.1596, null
  br i1 %.not700, label %387, label %379

379:                                              ; preds = %378
  %380 = getelementptr inbounds i8, ptr %.1596, i64 16
  %381 = load ptr, ptr %380, align 8, !tbaa !55
  %.not701 = icmp eq ptr %381, null
  br i1 %.not701, label %387, label %382

382:                                              ; preds = %379
  %383 = load ptr, ptr %329, align 8, !tbaa !29
  %384 = getelementptr inbounds i8, ptr %383, i64 32
  %385 = load i64, ptr %384, align 8, !tbaa !37
  %386 = getelementptr inbounds i8, ptr %381, i64 %385
  br label %387

387:                                              ; preds = %382, %379, %378
  %.3598 = phi ptr [ null, %378 ], [ %386, %382 ], [ null, %379 ]
  %388 = add i32 %.2604, -1
  br label %400

389:                                              ; preds = %369
  %390 = getelementptr inbounds i8, ptr %.2593, i64 16
  %391 = load ptr, ptr %390, align 8, !tbaa !55
  %.not699 = icmp eq ptr %391, null
  br i1 %.not699, label %397, label %392

392:                                              ; preds = %389
  %393 = load ptr, ptr %329, align 8, !tbaa !29
  %394 = getelementptr inbounds i8, ptr %393, i64 32
  %395 = load i64, ptr %394, align 8, !tbaa !37
  %396 = getelementptr inbounds i8, ptr %391, i64 %395
  br label %397

397:                                              ; preds = %389, %392
  %398 = phi ptr [ %396, %392 ], [ null, %389 ]
  %399 = add i32 %.0600, -1
  br label %400

400:                                              ; preds = %367, %397, %387, %352
  %.3605 = phi i32 [ 0, %352 ], [ %368, %367 ], [ %388, %387 ], [ %.2604, %397 ]
  %.1601 = phi i32 [ %354, %352 ], [ %.0600, %367 ], [ %.0600, %387 ], [ %399, %397 ]
  %.4599 = phi ptr [ %.1596, %352 ], [ %.2597, %367 ], [ %.3598, %387 ], [ %.1596, %397 ]
  %.3594 = phi ptr [ %353, %352 ], [ %.2593, %367 ], [ %.2593, %387 ], [ %398, %397 ]
  %.0590 = phi ptr [ %.2593, %352 ], [ %.1596, %367 ], [ %.1596, %387 ], [ %.2593, %397 ]
  %.not705 = icmp eq ptr %.1585, null
  %.not707 = icmp eq ptr %.0590, null
  br i1 %.not705, label %403, label %401

401:                                              ; preds = %400
  br i1 %.not707, label %.thread726.thread, label %404

.thread726.thread:                                ; preds = %401
  %402 = getelementptr inbounds i8, ptr %.1585, i64 16
  store ptr null, ptr %402, align 8, !tbaa !55
  br label %.thread725, !llvm.loop !72

403:                                              ; preds = %400
  br i1 %.not707, label %.thread725.outer.backedge, label %412

404:                                              ; preds = %401
  %405 = load ptr, ptr %329, align 8, !tbaa !29
  %406 = getelementptr inbounds i8, ptr %405, i64 32
  %407 = load i64, ptr %406, align 8, !tbaa !37
  %408 = sub i64 0, %407
  %409 = getelementptr inbounds i8, ptr %.0590, i64 %408
  %410 = getelementptr inbounds i8, ptr %.1585, i64 16
  store ptr %409, ptr %410, align 8, !tbaa !55
  %411 = getelementptr inbounds i8, ptr %.1585, i64 %408
  br label %412

412:                                              ; preds = %403, %404
  %.3589729734 = phi ptr [ %.2588.ph, %404 ], [ %.0590, %403 ]
  %413 = phi ptr [ %411, %404 ], [ null, %403 ]
  %414 = getelementptr inbounds i8, ptr %.0590, i64 8
  store ptr %413, ptr %414, align 8, !tbaa !73
  br label %.thread725.outer.backedge

.thread725.outer.backedge:                        ; preds = %412, %403
  %.2588.ph.be = phi ptr [ null, %403 ], [ %.3589729734, %412 ]
  br label %.thread725.outer, !llvm.loop !72

._crit_edge808:                                   ; preds = %.loopexit
  %.not696 = icmp eq ptr %.1585, null
  br i1 %.not696, label %417, label %415

415:                                              ; preds = %._crit_edge808
  %416 = getelementptr inbounds i8, ptr %.1585, i64 16
  store ptr null, ptr %416, align 8, !tbaa !55
  br label %417

417:                                              ; preds = %415, %._crit_edge808
  %.0584.lcssa847 = phi ptr [ %.1585, %415 ], [ null, %._crit_edge808 ]
  %418 = icmp ult i32 %332, 2
  br i1 %418, label %.thread848, label %.preheader

.thread848:                                       ; preds = %.preheader, %417
  %.1587.lcssa846853 = phi ptr [ %.2588.ph, %417 ], [ null, %.preheader ]
  %.0584.lcssa847852 = phi ptr [ %.0584.lcssa847, %417 ], [ null, %.preheader ]
  %419 = getelementptr inbounds i8, ptr %.3, i64 32
  %420 = load ptr, ptr %419, align 8, !tbaa !29
  %421 = getelementptr inbounds i8, ptr %420, i64 24
  store ptr %.0584.lcssa847852, ptr %421, align 8, !tbaa !50
  %.not687 = icmp eq ptr %.1587.lcssa846853, null
  br i1 %.not687, label %.thread735, label %422

422:                                              ; preds = %.thread848
  %423 = getelementptr inbounds i8, ptr %420, i64 32
  %424 = load i64, ptr %423, align 8, !tbaa !37
  %425 = sub i64 0, %424
  %426 = getelementptr inbounds i8, ptr %.1587.lcssa846853, i64 %425
  %427 = getelementptr inbounds i8, ptr %426, i64 32
  %428 = load ptr, ptr %427, align 8, !tbaa !29
  %429 = getelementptr inbounds i8, ptr %428, i64 16
  %430 = load i32, ptr %429, align 8, !tbaa !56
  %431 = zext i32 %430 to i64
  br label %.thread735

.thread735:                                       ; preds = %4, %._crit_edge791, %.thread848, %422
  %.not687739 = phi i1 [ false, %422 ], [ true, %.thread848 ], [ true, %._crit_edge791 ], [ true, %4 ]
  %.6738 = phi ptr [ %426, %422 ], [ null, %.thread848 ], [ null, %._crit_edge791 ], [ null, %4 ]
  %432 = phi i64 [ %431, %422 ], [ 0, %.thread848 ], [ 0, %._crit_edge791 ], [ 0, %4 ]
  %433 = load i64, ptr %2, align 8, !tbaa !5
  %.not688 = icmp eq i64 %432, %433
  br i1 %.not688, label %441, label %434

434:                                              ; preds = %.thread735
  %435 = getelementptr inbounds i8, ptr %3, i64 32
  %436 = load ptr, ptr %435, align 8, !tbaa !17
  %437 = getelementptr inbounds i8, ptr %436, i64 48
  %438 = load ptr, ptr %437, align 8, !tbaa !20
  %439 = tail call ptr @sdsempty() #10
  %440 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %439, ptr noundef nonnull @.str.2) #10
  tail call void %438(ptr noundef %436, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %440) #10
  br label %441

441:                                              ; preds = %434, %.thread735
  %442 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gsub_single, i64 96), align 8, !tbaa !74
  tail call void %442(ptr noundef nonnull %2) #10
  br i1 %.not687739, label %445, label %.thread859

.thread859:                                       ; preds = %441
  %443 = getelementptr inbounds i8, ptr %.6738, i64 48
  %444 = load ptr, ptr %443, align 8, !tbaa !53
  br label %.lr.ph820

445:                                              ; preds = %441
  %.not689815 = icmp eq ptr %.6738, null
  br i1 %.not689815, label %._crit_edge821, label %.lr.ph820

.lr.ph820:                                        ; preds = %.thread859, %445
  %446 = phi ptr [ %444, %.thread859 ], [ null, %445 ]
  %447 = load ptr, ptr getelementptr inbounds (i8, ptr @iSubtable_gsub_single, i64 104), align 8, !tbaa !76
  %448 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 80), align 8, !tbaa !77
  %449 = getelementptr inbounds i8, ptr %6, i64 8
  %450 = getelementptr inbounds i8, ptr %6, i64 16
  %451 = getelementptr inbounds i8, ptr %6, i64 24
  br label %452

452:                                              ; preds = %536, %.lr.ph820
  %.7818 = phi ptr [ %.6738, %.lr.ph820 ], [ %.9, %536 ]
  %.0582817 = phi ptr [ %446, %.lr.ph820 ], [ %538, %536 ]
  %.0583816 = phi ptr [ %.6738, %.lr.ph820 ], [ %.0582817, %536 ]
  %453 = load i32, ptr %.0583816, align 8, !tbaa !44
  %454 = trunc i32 %453 to i16
  %455 = getelementptr inbounds i8, ptr %.0583816, i64 8
  %456 = load ptr, ptr %455, align 8, !tbaa !47
  %457 = tail call { i64, ptr } %448(i16 noundef zeroext %454, ptr noundef %456) #10
  %458 = extractvalue { i64, ptr } %457, 0
  store i64 %458, ptr %6, align 8
  %459 = extractvalue { i64, ptr } %457, 1
  store ptr %459, ptr %449, align 8
  %460 = getelementptr inbounds i8, ptr %.0583816, i64 16
  %461 = load i32, ptr %460, align 8, !tbaa !46
  %462 = trunc i32 %461 to i16
  %463 = getelementptr inbounds i8, ptr %.0583816, i64 24
  %464 = load ptr, ptr %463, align 8, !tbaa !48
  %465 = tail call { i64, ptr } %448(i16 noundef zeroext %462, ptr noundef %464) #10
  %466 = extractvalue { i64, ptr } %465, 0
  store i64 %466, ptr %450, align 8
  %467 = extractvalue { i64, ptr } %465, 1
  store ptr %467, ptr %451, align 8
  tail call void %447(ptr noundef nonnull %2, ptr noundef nonnull byval(%struct.otl_GsubSingleEntry) align 8 %6) #10
  %468 = load ptr, ptr %455, align 8, !tbaa !47
  tail call void @sdsfree(ptr noundef %468) #10
  %469 = load ptr, ptr %463, align 8, !tbaa !48
  tail call void @sdsfree(ptr noundef %469) #10
  %470 = getelementptr inbounds i8, ptr %.0583816, i64 32
  %471 = getelementptr inbounds i8, ptr %.0583816, i64 40
  %472 = load ptr, ptr %471, align 8, !tbaa !73
  %473 = icmp eq ptr %472, null
  br i1 %473, label %474, label %483

474:                                              ; preds = %452
  %475 = getelementptr inbounds i8, ptr %.0583816, i64 48
  %476 = load ptr, ptr %475, align 8, !tbaa !55
  %477 = icmp eq ptr %476, null
  br i1 %477, label %478, label %483

478:                                              ; preds = %474
  %479 = getelementptr inbounds i8, ptr %.7818, i64 32
  %480 = load ptr, ptr %479, align 8, !tbaa !29
  %481 = load ptr, ptr %480, align 8, !tbaa !34
  tail call void @free(ptr noundef %481) #10
  %482 = load ptr, ptr %479, align 8, !tbaa !29
  tail call void @free(ptr noundef %482) #10
  br label %535

483:                                              ; preds = %474, %452
  %484 = getelementptr inbounds i8, ptr %.7818, i64 32
  %485 = load ptr, ptr %484, align 8, !tbaa !29
  %486 = getelementptr inbounds i8, ptr %485, i64 24
  %487 = load ptr, ptr %486, align 8, !tbaa !50
  %488 = icmp eq ptr %470, %487
  br i1 %488, label %489, label %493

489:                                              ; preds = %483
  %490 = getelementptr inbounds i8, ptr %485, i64 32
  %491 = load i64, ptr %490, align 8, !tbaa !37
  %492 = getelementptr inbounds i8, ptr %472, i64 %491
  store ptr %492, ptr %486, align 8, !tbaa !50
  br label %493

493:                                              ; preds = %489, %483
  %494 = getelementptr inbounds i8, ptr %.0583816, i64 48
  %495 = load ptr, ptr %494, align 8, !tbaa !55
  br i1 %473, label %501, label %496

496:                                              ; preds = %493
  %497 = getelementptr inbounds i8, ptr %485, i64 32
  %498 = load i64, ptr %497, align 8, !tbaa !37
  %499 = getelementptr inbounds i8, ptr %472, i64 %498
  %500 = getelementptr inbounds i8, ptr %499, i64 16
  store ptr %495, ptr %500, align 8, !tbaa !55
  br label %501

501:                                              ; preds = %493, %496
  %.8 = phi ptr [ %.7818, %496 ], [ %495, %493 ]
  %.not691 = icmp eq ptr %495, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.8, i64 32
  %.pre830 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !29
  br i1 %.not691, label %._crit_edge829, label %502

502:                                              ; preds = %501
  %503 = getelementptr inbounds i8, ptr %.pre830, i64 32
  %504 = load i64, ptr %503, align 8, !tbaa !37
  %505 = getelementptr inbounds i8, ptr %495, i64 %504
  %506 = getelementptr inbounds i8, ptr %505, i64 8
  store ptr %472, ptr %506, align 8, !tbaa !73
  br label %._crit_edge829

._crit_edge829:                                   ; preds = %501, %502
  %507 = getelementptr inbounds i8, ptr %.0583816, i64 84
  %508 = load i32, ptr %507, align 4, !tbaa !65
  %509 = getelementptr inbounds i8, ptr %.pre830, i64 8
  %510 = load i32, ptr %509, align 8, !tbaa !32
  %511 = add i32 %510, -1
  %512 = and i32 %511, %508
  %513 = load ptr, ptr %.pre830, align 8, !tbaa !34
  %514 = zext i32 %512 to i64
  %515 = getelementptr inbounds %struct.UT_hash_bucket, ptr %513, i64 %514
  %516 = getelementptr inbounds i8, ptr %515, i64 8
  %517 = load i32, ptr %516, align 8, !tbaa !57
  %518 = add i32 %517, -1
  store i32 %518, ptr %516, align 8, !tbaa !57
  %519 = load ptr, ptr %515, align 8, !tbaa !35
  %520 = icmp eq ptr %519, %470
  br i1 %520, label %521, label %524

521:                                              ; preds = %._crit_edge829
  %522 = getelementptr inbounds i8, ptr %.0583816, i64 64
  %523 = load ptr, ptr %522, align 8, !tbaa !64
  store ptr %523, ptr %515, align 8, !tbaa !35
  br label %524

524:                                              ; preds = %521, %._crit_edge829
  %525 = getelementptr inbounds i8, ptr %.0583816, i64 56
  %526 = load ptr, ptr %525, align 8, !tbaa !59
  %.not692 = icmp eq ptr %526, null
  %.phi.trans.insert832 = getelementptr inbounds i8, ptr %.0583816, i64 64
  %.pre833 = load ptr, ptr %.phi.trans.insert832, align 8, !tbaa !64
  br i1 %.not692, label %._crit_edge831, label %527

527:                                              ; preds = %524
  %528 = getelementptr inbounds i8, ptr %526, i64 32
  store ptr %.pre833, ptr %528, align 8, !tbaa !64
  br label %._crit_edge831

._crit_edge831:                                   ; preds = %524, %527
  %.not693 = icmp eq ptr %.pre833, null
  br i1 %.not693, label %531, label %529

529:                                              ; preds = %._crit_edge831
  %530 = getelementptr inbounds i8, ptr %.pre833, i64 24
  store ptr %526, ptr %530, align 8, !tbaa !59
  br label %531

531:                                              ; preds = %529, %._crit_edge831
  %532 = getelementptr inbounds i8, ptr %.pre830, i64 16
  %533 = load i32, ptr %532, align 8, !tbaa !56
  %534 = add i32 %533, -1
  store i32 %534, ptr %532, align 8, !tbaa !56
  br label %535

535:                                              ; preds = %531, %478
  %.9 = phi ptr [ null, %478 ], [ %.8, %531 ]
  tail call void @free(ptr noundef nonnull %.0583816) #10
  %.not694 = icmp eq ptr %.0582817, null
  br i1 %.not694, label %._crit_edge821, label %536

536:                                              ; preds = %535
  %537 = getelementptr inbounds i8, ptr %.0582817, i64 48
  %538 = load ptr, ptr %537, align 8, !tbaa !53
  br label %452, !llvm.loop !79

._crit_edge821:                                   ; preds = %535, %445
  %539 = load i64, ptr %2, align 8, !tbaa !5
  %540 = icmp eq i64 %539, 0
  ret i1 %540
}

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

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

declare ptr @sdsempty() local_unnamed_addr #2

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

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

declare ptr @sdsdup(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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(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 264}
!14 = !{!"_caryll_font", !15, 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}
!15 = !{!"int", !8, i64 0}
!16 = !{!6, !10, i64 16}
!17 = !{!18, !10, i64 32}
!18 = !{!"", !19, i64 0, !19, i64 1, !19, i64 2, !19, i64 3, !19, i64 4, !19, i64 5, !19, i64 6, !19, i64 7, !19, i64 8, !19, i64 9, !19, i64 10, !19, i64 11, !19, i64 12, !19, i64 13, !19, i64 14, !19, i64 15, !19, i64 16, !19, i64 17, !19, i64 18, !19, i64 19, !19, i64 20, !19, i64 21, !19, i64 22, !10, i64 24, !10, i64 32}
!19 = !{!"_Bool", !8, i64 0}
!20 = !{!21, !10, i64 48}
!21 = !{!"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}
!22 = !{!23, !10, i64 8}
!23 = !{!"", !24, i64 0, !24, i64 16}
!24 = !{!"otfcc_Handle", !15, i64 0, !25, i64 4, !10, i64 8}
!25 = !{!"short", !8, i64 0}
!26 = !{!23, !10, i64 24}
!27 = !{!23, !25, i64 4}
!28 = !{!15, !15, i64 0}
!29 = !{!30, !10, i64 32}
!30 = !{!"", !15, i64 0, !10, i64 8, !15, i64 16, !10, i64 24, !31, i64 32}
!31 = !{!"UT_hash_handle", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !15, i64 48, !15, i64 52}
!32 = !{!33, !15, i64 8}
!33 = !{!"UT_hash_table", !10, i64 0, !15, i64 8, !15, i64 12, !15, i64 16, !10, i64 24, !7, i64 32, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56}
!34 = !{!33, !10, i64 0}
!35 = !{!36, !10, i64 0}
!36 = !{!"UT_hash_bucket", !10, i64 0, !15, i64 8, !15, i64 12}
!37 = !{!33, !7, i64 32}
!38 = !{!30, !15, i64 84}
!39 = !{!30, !15, i64 80}
!40 = !{!30, !10, i64 72}
!41 = !{!30, !10, i64 64}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!30, !15, i64 0}
!45 = !{!23, !25, i64 20}
!46 = !{!30, !15, i64 16}
!47 = !{!30, !10, i64 8}
!48 = !{!30, !10, i64 24}
!49 = !{!8, !8, i64 0}
!50 = !{!33, !10, i64 24}
!51 = !{!33, !15, i64 12}
!52 = !{!33, !15, i64 56}
!53 = !{!30, !10, i64 48}
!54 = !{!30, !10, i64 40}
!55 = !{!31, !10, i64 16}
!56 = !{!33, !15, i64 16}
!57 = !{!36, !15, i64 8}
!58 = !{!30, !10, i64 56}
!59 = !{!31, !10, i64 24}
!60 = !{!36, !15, i64 12}
!61 = !{!33, !15, i64 52}
!62 = !{!33, !15, i64 40}
!63 = !{!33, !15, i64 44}
!64 = !{!31, !10, i64 32}
!65 = !{!31, !15, i64 52}
!66 = distinct !{!66, !43}
!67 = distinct !{!67, !43}
!68 = !{!33, !15, i64 48}
!69 = distinct !{!69, !43}
!70 = distinct !{!70, !43}
!71 = distinct !{!71, !43}
!72 = distinct !{!72, !43}
!73 = !{!31, !10, i64 8}
!74 = !{!75, !10, i64 96}
!75 = !{!"__caryll_vectorinterface_subtable_gsub_single", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144}
!76 = !{!75, !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, !43}


; 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