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

; 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_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.subtable_gsub_reverse = type { i16, i16, ptr, ptr }
%struct.otl_Coverage = type { i16, i32, 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 }
%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 }

@.str = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @consolidate_gsub_reverse(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 i16, align 2
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i16, align 2
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %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 ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca i16, align 2
  %49 = alloca %struct.otfcc_Handle, align 8
  %50 = alloca %struct.otfcc_Handle, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %54 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %54, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %10) #10
  store i16 0, ptr %10, align 2, !tbaa !9
  br label %55

55:                                               ; preds = %74, %4
  %56 = load i16, ptr %10, align 2, !tbaa !9
  %57 = zext i16 %56 to i32
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %58, i32 0, i32 0
  %60 = load i16, ptr %59, align 8, !tbaa !11
  %61 = zext i16 %60 to i32
  %62 = icmp slt i32 %57, %61
  br i1 %62, label %64, label %63

63:                                               ; preds = %55
  call void @llvm.lifetime.end.p0(i64 2, ptr %10) #10
  br label %77

64:                                               ; preds = %55
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %66, i32 0, i32 2
  %68 = load ptr, ptr %67, align 8, !tbaa !13
  %69 = load i16, ptr %10, align 2, !tbaa !9
  %70 = zext i16 %69 to i64
  %71 = getelementptr inbounds ptr, ptr %68, i64 %70
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  call void @fontop_consolidateCoverage(ptr noundef %65, ptr noundef %72, ptr noundef %73)
  br label %74

74:                                               ; preds = %64
  %75 = load i16, ptr %10, align 2, !tbaa !9
  %76 = add i16 %75, 1
  store i16 %76, ptr %10, align 2, !tbaa !9
  br label %55, !llvm.loop !14

77:                                               ; preds = %63
  %78 = load ptr, ptr %5, align 8, !tbaa !5
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %79, i32 0, i32 3
  %81 = load ptr, ptr %80, align 8, !tbaa !16
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  call void @fontop_consolidateCoverage(ptr noundef %78, ptr noundef %81, ptr noundef %82)
  %83 = load ptr, ptr %9, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %83, i32 0, i32 1
  %85 = load i16, ptr %84, align 2, !tbaa !17
  %86 = zext i16 %85 to i32
  %87 = load ptr, ptr %9, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %87, i32 0, i32 0
  %89 = load i16, ptr %88, align 8, !tbaa !11
  %90 = zext i16 %89 to i32
  %91 = icmp sge i32 %86, %90
  br i1 %91, label %92, label %101

92:                                               ; preds = %77
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %93, i32 0, i32 0
  %95 = load i16, ptr %94, align 8, !tbaa !11
  %96 = zext i16 %95 to i32
  %97 = sub nsw i32 %96, 1
  %98 = trunc i32 %97 to i16
  %99 = load ptr, ptr %9, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %99, i32 0, i32 1
  store i16 %98, ptr %100, align 2, !tbaa !17
  br label %101

101:                                              ; preds = %92, %77
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #10
  store ptr null, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #10
  %102 = load ptr, ptr %9, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %102, i32 0, i32 2
  %104 = load ptr, ptr %103, align 8, !tbaa !13
  %105 = load ptr, ptr %9, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %105, i32 0, i32 1
  %107 = load i16, ptr %106, align 2, !tbaa !17
  %108 = zext i16 %107 to i64
  %109 = getelementptr inbounds ptr, ptr %104, i64 %108
  %110 = load ptr, ptr %109, align 8, !tbaa !5
  store ptr %110, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 2, ptr %13) #10
  store i16 0, ptr %13, align 2, !tbaa !9
  br label %111

111:                                              ; preds = %1531, %101
  %112 = load i16, ptr %13, align 2, !tbaa !9
  %113 = zext i16 %112 to i32
  %114 = load ptr, ptr %12, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.otl_Coverage, ptr %114, i32 0, i32 0
  %116 = load i16, ptr %115, align 8, !tbaa !18
  %117 = zext i16 %116 to i32
  %118 = icmp slt i32 %113, %117
  br i1 %118, label %119, label %129

119:                                              ; preds = %111
  %120 = load i16, ptr %13, align 2, !tbaa !9
  %121 = zext i16 %120 to i32
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %122, i32 0, i32 3
  %124 = load ptr, ptr %123, align 8, !tbaa !16
  %125 = getelementptr inbounds %struct.otl_Coverage, ptr %124, i32 0, i32 0
  %126 = load i16, ptr %125, align 8, !tbaa !18
  %127 = zext i16 %126 to i32
  %128 = icmp slt i32 %121, %127
  br label %129

129:                                              ; preds = %119, %111
  %130 = phi i1 [ false, %111 ], [ %128, %119 ]
  br i1 %130, label %132, label %131

131:                                              ; preds = %129
  call void @llvm.lifetime.end.p0(i64 2, ptr %13) #10
  br label %1534

132:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  %133 = load ptr, ptr %12, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.otl_Coverage, ptr %133, i32 0, i32 2
  %135 = load ptr, ptr %134, align 8, !tbaa !21
  %136 = load i16, ptr %13, align 2, !tbaa !9
  %137 = zext i16 %136 to i64
  %138 = getelementptr inbounds %struct.otfcc_Handle, ptr %135, i64 %137
  %139 = getelementptr inbounds %struct.otfcc_Handle, ptr %138, i32 0, i32 1
  %140 = load i16, ptr %139, align 4, !tbaa !22
  %141 = zext i16 %140 to i32
  store i32 %141, ptr %15, align 4, !tbaa !24
  br label %142

142:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  br label %143

143:                                              ; preds = %142
  br label %144

144:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  store ptr %15, ptr %20, align 8, !tbaa !5
  store i32 -17973521, ptr %16, align 4, !tbaa !24
  store i32 -1640531527, ptr %18, align 4, !tbaa !24
  store i32 -1640531527, ptr %17, align 4, !tbaa !24
  store i32 4, ptr %19, align 4, !tbaa !24
  br label %145

145:                                              ; preds = %313, %144
  %146 = load i32, ptr %19, align 4, !tbaa !24
  %147 = icmp uge i32 %146, 12
  br i1 %147, label %148, label %318

148:                                              ; preds = %145
  %149 = load ptr, ptr %20, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 0
  %151 = load i8, ptr %150, align 1, !tbaa !25
  %152 = zext i8 %151 to i32
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %153, i64 1
  %155 = load i8, ptr %154, align 1, !tbaa !25
  %156 = zext i8 %155 to i32
  %157 = shl i32 %156, 8
  %158 = add i32 %152, %157
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = getelementptr inbounds i8, ptr %159, i64 2
  %161 = load i8, ptr %160, align 1, !tbaa !25
  %162 = zext i8 %161 to i32
  %163 = shl i32 %162, 16
  %164 = add i32 %158, %163
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  %166 = getelementptr inbounds i8, ptr %165, i64 3
  %167 = load i8, ptr %166, align 1, !tbaa !25
  %168 = zext i8 %167 to i32
  %169 = shl i32 %168, 24
  %170 = add i32 %164, %169
  %171 = load i32, ptr %17, align 4, !tbaa !24
  %172 = add i32 %171, %170
  store i32 %172, ptr %17, align 4, !tbaa !24
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 4
  %175 = load i8, ptr %174, align 1, !tbaa !25
  %176 = zext i8 %175 to i32
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %177, i64 5
  %179 = load i8, ptr %178, align 1, !tbaa !25
  %180 = zext i8 %179 to i32
  %181 = shl i32 %180, 8
  %182 = add i32 %176, %181
  %183 = load ptr, ptr %20, align 8, !tbaa !5
  %184 = getelementptr inbounds i8, ptr %183, i64 6
  %185 = load i8, ptr %184, align 1, !tbaa !25
  %186 = zext i8 %185 to i32
  %187 = shl i32 %186, 16
  %188 = add i32 %182, %187
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 7
  %191 = load i8, ptr %190, align 1, !tbaa !25
  %192 = zext i8 %191 to i32
  %193 = shl i32 %192, 24
  %194 = add i32 %188, %193
  %195 = load i32, ptr %18, align 4, !tbaa !24
  %196 = add i32 %195, %194
  store i32 %196, ptr %18, align 4, !tbaa !24
  %197 = load ptr, ptr %20, align 8, !tbaa !5
  %198 = getelementptr inbounds i8, ptr %197, i64 8
  %199 = load i8, ptr %198, align 1, !tbaa !25
  %200 = zext i8 %199 to i32
  %201 = load ptr, ptr %20, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 9
  %203 = load i8, ptr %202, align 1, !tbaa !25
  %204 = zext i8 %203 to i32
  %205 = shl i32 %204, 8
  %206 = add i32 %200, %205
  %207 = load ptr, ptr %20, align 8, !tbaa !5
  %208 = getelementptr inbounds i8, ptr %207, i64 10
  %209 = load i8, ptr %208, align 1, !tbaa !25
  %210 = zext i8 %209 to i32
  %211 = shl i32 %210, 16
  %212 = add i32 %206, %211
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = getelementptr inbounds i8, ptr %213, i64 11
  %215 = load i8, ptr %214, align 1, !tbaa !25
  %216 = zext i8 %215 to i32
  %217 = shl i32 %216, 24
  %218 = add i32 %212, %217
  %219 = load i32, ptr %16, align 4, !tbaa !24
  %220 = add i32 %219, %218
  store i32 %220, ptr %16, align 4, !tbaa !24
  br label %221

221:                                              ; preds = %148
  %222 = load i32, ptr %18, align 4, !tbaa !24
  %223 = load i32, ptr %17, align 4, !tbaa !24
  %224 = sub i32 %223, %222
  store i32 %224, ptr %17, align 4, !tbaa !24
  %225 = load i32, ptr %16, align 4, !tbaa !24
  %226 = load i32, ptr %17, align 4, !tbaa !24
  %227 = sub i32 %226, %225
  store i32 %227, ptr %17, align 4, !tbaa !24
  %228 = load i32, ptr %16, align 4, !tbaa !24
  %229 = lshr i32 %228, 13
  %230 = load i32, ptr %17, align 4, !tbaa !24
  %231 = xor i32 %230, %229
  store i32 %231, ptr %17, align 4, !tbaa !24
  %232 = load i32, ptr %16, align 4, !tbaa !24
  %233 = load i32, ptr %18, align 4, !tbaa !24
  %234 = sub i32 %233, %232
  store i32 %234, ptr %18, align 4, !tbaa !24
  %235 = load i32, ptr %17, align 4, !tbaa !24
  %236 = load i32, ptr %18, align 4, !tbaa !24
  %237 = sub i32 %236, %235
  store i32 %237, ptr %18, align 4, !tbaa !24
  %238 = load i32, ptr %17, align 4, !tbaa !24
  %239 = shl i32 %238, 8
  %240 = load i32, ptr %18, align 4, !tbaa !24
  %241 = xor i32 %240, %239
  store i32 %241, ptr %18, align 4, !tbaa !24
  %242 = load i32, ptr %17, align 4, !tbaa !24
  %243 = load i32, ptr %16, align 4, !tbaa !24
  %244 = sub i32 %243, %242
  store i32 %244, ptr %16, align 4, !tbaa !24
  %245 = load i32, ptr %18, align 4, !tbaa !24
  %246 = load i32, ptr %16, align 4, !tbaa !24
  %247 = sub i32 %246, %245
  store i32 %247, ptr %16, align 4, !tbaa !24
  %248 = load i32, ptr %18, align 4, !tbaa !24
  %249 = lshr i32 %248, 13
  %250 = load i32, ptr %16, align 4, !tbaa !24
  %251 = xor i32 %250, %249
  store i32 %251, ptr %16, align 4, !tbaa !24
  %252 = load i32, ptr %18, align 4, !tbaa !24
  %253 = load i32, ptr %17, align 4, !tbaa !24
  %254 = sub i32 %253, %252
  store i32 %254, ptr %17, align 4, !tbaa !24
  %255 = load i32, ptr %16, align 4, !tbaa !24
  %256 = load i32, ptr %17, align 4, !tbaa !24
  %257 = sub i32 %256, %255
  store i32 %257, ptr %17, align 4, !tbaa !24
  %258 = load i32, ptr %16, align 4, !tbaa !24
  %259 = lshr i32 %258, 12
  %260 = load i32, ptr %17, align 4, !tbaa !24
  %261 = xor i32 %260, %259
  store i32 %261, ptr %17, align 4, !tbaa !24
  %262 = load i32, ptr %16, align 4, !tbaa !24
  %263 = load i32, ptr %18, align 4, !tbaa !24
  %264 = sub i32 %263, %262
  store i32 %264, ptr %18, align 4, !tbaa !24
  %265 = load i32, ptr %17, align 4, !tbaa !24
  %266 = load i32, ptr %18, align 4, !tbaa !24
  %267 = sub i32 %266, %265
  store i32 %267, ptr %18, align 4, !tbaa !24
  %268 = load i32, ptr %17, align 4, !tbaa !24
  %269 = shl i32 %268, 16
  %270 = load i32, ptr %18, align 4, !tbaa !24
  %271 = xor i32 %270, %269
  store i32 %271, ptr %18, align 4, !tbaa !24
  %272 = load i32, ptr %17, align 4, !tbaa !24
  %273 = load i32, ptr %16, align 4, !tbaa !24
  %274 = sub i32 %273, %272
  store i32 %274, ptr %16, align 4, !tbaa !24
  %275 = load i32, ptr %18, align 4, !tbaa !24
  %276 = load i32, ptr %16, align 4, !tbaa !24
  %277 = sub i32 %276, %275
  store i32 %277, ptr %16, align 4, !tbaa !24
  %278 = load i32, ptr %18, align 4, !tbaa !24
  %279 = lshr i32 %278, 5
  %280 = load i32, ptr %16, align 4, !tbaa !24
  %281 = xor i32 %280, %279
  store i32 %281, ptr %16, align 4, !tbaa !24
  %282 = load i32, ptr %18, align 4, !tbaa !24
  %283 = load i32, ptr %17, align 4, !tbaa !24
  %284 = sub i32 %283, %282
  store i32 %284, ptr %17, align 4, !tbaa !24
  %285 = load i32, ptr %16, align 4, !tbaa !24
  %286 = load i32, ptr %17, align 4, !tbaa !24
  %287 = sub i32 %286, %285
  store i32 %287, ptr %17, align 4, !tbaa !24
  %288 = load i32, ptr %16, align 4, !tbaa !24
  %289 = lshr i32 %288, 3
  %290 = load i32, ptr %17, align 4, !tbaa !24
  %291 = xor i32 %290, %289
  store i32 %291, ptr %17, align 4, !tbaa !24
  %292 = load i32, ptr %16, align 4, !tbaa !24
  %293 = load i32, ptr %18, align 4, !tbaa !24
  %294 = sub i32 %293, %292
  store i32 %294, ptr %18, align 4, !tbaa !24
  %295 = load i32, ptr %17, align 4, !tbaa !24
  %296 = load i32, ptr %18, align 4, !tbaa !24
  %297 = sub i32 %296, %295
  store i32 %297, ptr %18, align 4, !tbaa !24
  %298 = load i32, ptr %17, align 4, !tbaa !24
  %299 = shl i32 %298, 10
  %300 = load i32, ptr %18, align 4, !tbaa !24
  %301 = xor i32 %300, %299
  store i32 %301, ptr %18, align 4, !tbaa !24
  %302 = load i32, ptr %17, align 4, !tbaa !24
  %303 = load i32, ptr %16, align 4, !tbaa !24
  %304 = sub i32 %303, %302
  store i32 %304, ptr %16, align 4, !tbaa !24
  %305 = load i32, ptr %18, align 4, !tbaa !24
  %306 = load i32, ptr %16, align 4, !tbaa !24
  %307 = sub i32 %306, %305
  store i32 %307, ptr %16, align 4, !tbaa !24
  %308 = load i32, ptr %18, align 4, !tbaa !24
  %309 = lshr i32 %308, 15
  %310 = load i32, ptr %16, align 4, !tbaa !24
  %311 = xor i32 %310, %309
  store i32 %311, ptr %16, align 4, !tbaa !24
  br label %312

312:                                              ; preds = %221
  br label %313

313:                                              ; preds = %312
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = getelementptr inbounds i8, ptr %314, i64 12
  store ptr %315, ptr %20, align 8, !tbaa !5
  %316 = load i32, ptr %19, align 4, !tbaa !24
  %317 = sub i32 %316, 12
  store i32 %317, ptr %19, align 4, !tbaa !24
  br label %145, !llvm.loop !26

318:                                              ; preds = %145
  %319 = load i32, ptr %16, align 4, !tbaa !24
  %320 = add i32 %319, 4
  store i32 %320, ptr %16, align 4, !tbaa !24
  %321 = load i32, ptr %19, align 4, !tbaa !24
  switch i32 %321, label %408 [
    i32 11, label %322
    i32 10, label %330
    i32 9, label %338
    i32 8, label %346
    i32 7, label %354
    i32 6, label %362
    i32 5, label %370
    i32 4, label %377
    i32 3, label %385
    i32 2, label %393
    i32 1, label %401
  ]

322:                                              ; preds = %318
  %323 = load ptr, ptr %20, align 8, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %323, i64 10
  %325 = load i8, ptr %324, align 1, !tbaa !25
  %326 = zext i8 %325 to i32
  %327 = shl i32 %326, 24
  %328 = load i32, ptr %16, align 4, !tbaa !24
  %329 = add i32 %328, %327
  store i32 %329, ptr %16, align 4, !tbaa !24
  br label %330

330:                                              ; preds = %322, %318
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = getelementptr inbounds i8, ptr %331, i64 9
  %333 = load i8, ptr %332, align 1, !tbaa !25
  %334 = zext i8 %333 to i32
  %335 = shl i32 %334, 16
  %336 = load i32, ptr %16, align 4, !tbaa !24
  %337 = add i32 %336, %335
  store i32 %337, ptr %16, align 4, !tbaa !24
  br label %338

338:                                              ; preds = %330, %318
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %339, i64 8
  %341 = load i8, ptr %340, align 1, !tbaa !25
  %342 = zext i8 %341 to i32
  %343 = shl i32 %342, 8
  %344 = load i32, ptr %16, align 4, !tbaa !24
  %345 = add i32 %344, %343
  store i32 %345, ptr %16, align 4, !tbaa !24
  br label %346

346:                                              ; preds = %338, %318
  %347 = load ptr, ptr %20, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i64 7
  %349 = load i8, ptr %348, align 1, !tbaa !25
  %350 = zext i8 %349 to i32
  %351 = shl i32 %350, 24
  %352 = load i32, ptr %18, align 4, !tbaa !24
  %353 = add i32 %352, %351
  store i32 %353, ptr %18, align 4, !tbaa !24
  br label %354

354:                                              ; preds = %346, %318
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %355, i64 6
  %357 = load i8, ptr %356, align 1, !tbaa !25
  %358 = zext i8 %357 to i32
  %359 = shl i32 %358, 16
  %360 = load i32, ptr %18, align 4, !tbaa !24
  %361 = add i32 %360, %359
  store i32 %361, ptr %18, align 4, !tbaa !24
  br label %362

362:                                              ; preds = %354, %318
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %363, i64 5
  %365 = load i8, ptr %364, align 1, !tbaa !25
  %366 = zext i8 %365 to i32
  %367 = shl i32 %366, 8
  %368 = load i32, ptr %18, align 4, !tbaa !24
  %369 = add i32 %368, %367
  store i32 %369, ptr %18, align 4, !tbaa !24
  br label %370

370:                                              ; preds = %362, %318
  %371 = load ptr, ptr %20, align 8, !tbaa !5
  %372 = getelementptr inbounds i8, ptr %371, i64 4
  %373 = load i8, ptr %372, align 1, !tbaa !25
  %374 = zext i8 %373 to i32
  %375 = load i32, ptr %18, align 4, !tbaa !24
  %376 = add i32 %375, %374
  store i32 %376, ptr %18, align 4, !tbaa !24
  br label %377

377:                                              ; preds = %370, %318
  %378 = load ptr, ptr %20, align 8, !tbaa !5
  %379 = getelementptr inbounds i8, ptr %378, i64 3
  %380 = load i8, ptr %379, align 1, !tbaa !25
  %381 = zext i8 %380 to i32
  %382 = shl i32 %381, 24
  %383 = load i32, ptr %17, align 4, !tbaa !24
  %384 = add i32 %383, %382
  store i32 %384, ptr %17, align 4, !tbaa !24
  br label %385

385:                                              ; preds = %377, %318
  %386 = load ptr, ptr %20, align 8, !tbaa !5
  %387 = getelementptr inbounds i8, ptr %386, i64 2
  %388 = load i8, ptr %387, align 1, !tbaa !25
  %389 = zext i8 %388 to i32
  %390 = shl i32 %389, 16
  %391 = load i32, ptr %17, align 4, !tbaa !24
  %392 = add i32 %391, %390
  store i32 %392, ptr %17, align 4, !tbaa !24
  br label %393

393:                                              ; preds = %385, %318
  %394 = load ptr, ptr %20, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i64 1
  %396 = load i8, ptr %395, align 1, !tbaa !25
  %397 = zext i8 %396 to i32
  %398 = shl i32 %397, 8
  %399 = load i32, ptr %17, align 4, !tbaa !24
  %400 = add i32 %399, %398
  store i32 %400, ptr %17, align 4, !tbaa !24
  br label %401

401:                                              ; preds = %393, %318
  %402 = load ptr, ptr %20, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i64 0
  %404 = load i8, ptr %403, align 1, !tbaa !25
  %405 = zext i8 %404 to i32
  %406 = load i32, ptr %17, align 4, !tbaa !24
  %407 = add i32 %406, %405
  store i32 %407, ptr %17, align 4, !tbaa !24
  br label %408

408:                                              ; preds = %401, %318
  br label %409

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

500:                                              ; preds = %409
  br label %501

501:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %502

502:                                              ; preds = %501
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  br label %505

505:                                              ; preds = %504
  br label %506

506:                                              ; preds = %505
  store ptr null, ptr %14, align 8, !tbaa !5
  %507 = load ptr, ptr %11, align 8, !tbaa !5
  %508 = icmp ne ptr %507, null
  br i1 %508, label %509, label %613

509:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  br label %510

510:                                              ; preds = %509
  %511 = load i32, ptr %16, align 4, !tbaa !24
  %512 = load ptr, ptr %11, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %512, i32 0, i32 4
  %514 = getelementptr inbounds %struct.UT_hash_handle, ptr %513, i32 0, i32 0
  %515 = load ptr, ptr %514, align 8, !tbaa !27
  %516 = getelementptr inbounds %struct.UT_hash_table, ptr %515, i32 0, i32 1
  %517 = load i32, ptr %516, align 8, !tbaa !30
  %518 = sub i32 %517, 1
  %519 = and i32 %511, %518
  store i32 %519, ptr %21, align 4, !tbaa !24
  br label %520

520:                                              ; preds = %510
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521
  %523 = load ptr, ptr %11, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %523, i32 0, i32 4
  %525 = getelementptr inbounds %struct.UT_hash_handle, ptr %524, i32 0, i32 0
  %526 = load ptr, ptr %525, align 8, !tbaa !27
  %527 = getelementptr inbounds %struct.UT_hash_table, ptr %526, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !33
  %529 = load i32, ptr %21, align 4, !tbaa !24
  %530 = zext i32 %529 to i64
  %531 = getelementptr inbounds %struct.UT_hash_bucket, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.UT_hash_bucket, ptr %531, i32 0, i32 0
  %533 = load ptr, ptr %532, align 8, !tbaa !34
  %534 = icmp ne ptr %533, null
  br i1 %534, label %535, label %558

535:                                              ; preds = %522
  br label %536

536:                                              ; preds = %535
  %537 = load ptr, ptr %11, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %537, i32 0, i32 4
  %539 = getelementptr inbounds %struct.UT_hash_handle, ptr %538, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !27
  %541 = getelementptr inbounds %struct.UT_hash_table, ptr %540, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !33
  %543 = load i32, ptr %21, align 4, !tbaa !24
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds %struct.UT_hash_bucket, ptr %542, i64 %544
  %546 = getelementptr inbounds %struct.UT_hash_bucket, ptr %545, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8, !tbaa !34
  %548 = load ptr, ptr %11, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %548, i32 0, i32 4
  %550 = getelementptr inbounds %struct.UT_hash_handle, ptr %549, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8, !tbaa !27
  %552 = getelementptr inbounds %struct.UT_hash_table, ptr %551, i32 0, i32 5
  %553 = load i64, ptr %552, align 8, !tbaa !36
  %554 = sub i64 0, %553
  %555 = getelementptr inbounds i8, ptr %547, i64 %554
  store ptr %555, ptr %14, align 8, !tbaa !5
  br label %556

556:                                              ; preds = %536
  br label %557

557:                                              ; preds = %556
  br label %559

558:                                              ; preds = %522
  store ptr null, ptr %14, align 8, !tbaa !5
  br label %559

559:                                              ; preds = %558, %557
  br label %560

560:                                              ; preds = %609, %559
  %561 = load ptr, ptr %14, align 8, !tbaa !5
  %562 = icmp ne ptr %561, null
  br i1 %562, label %563, label %610

563:                                              ; preds = %560
  %564 = load ptr, ptr %14, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %564, i32 0, i32 4
  %566 = getelementptr inbounds %struct.UT_hash_handle, ptr %565, i32 0, i32 7
  %567 = load i32, ptr %566, align 4, !tbaa !37
  %568 = load i32, ptr %16, align 4, !tbaa !24
  %569 = icmp eq i32 %567, %568
  br i1 %569, label %570, label %586

570:                                              ; preds = %563
  %571 = load ptr, ptr %14, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %571, i32 0, i32 4
  %573 = getelementptr inbounds %struct.UT_hash_handle, ptr %572, i32 0, i32 6
  %574 = load i32, ptr %573, align 8, !tbaa !38
  %575 = zext i32 %574 to i64
  %576 = icmp eq i64 %575, 4
  br i1 %576, label %577, label %586

577:                                              ; preds = %570
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %578, i32 0, i32 4
  %580 = getelementptr inbounds %struct.UT_hash_handle, ptr %579, i32 0, i32 5
  %581 = load ptr, ptr %580, align 8, !tbaa !39
  %582 = call i32 @memcmp(ptr noundef %581, ptr noundef %15, i64 noundef 4) #11
  %583 = icmp eq i32 %582, 0
  br i1 %583, label %584, label %585

584:                                              ; preds = %577
  br label %610

585:                                              ; preds = %577
  br label %586

586:                                              ; preds = %585, %570, %563
  %587 = load ptr, ptr %14, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %587, i32 0, i32 4
  %589 = getelementptr inbounds %struct.UT_hash_handle, ptr %588, i32 0, i32 4
  %590 = load ptr, ptr %589, align 8, !tbaa !40
  %591 = icmp ne ptr %590, null
  br i1 %591, label %592, label %608

592:                                              ; preds = %586
  br label %593

593:                                              ; preds = %592
  %594 = load ptr, ptr %14, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %594, i32 0, i32 4
  %596 = getelementptr inbounds %struct.UT_hash_handle, ptr %595, i32 0, i32 4
  %597 = load ptr, ptr %596, align 8, !tbaa !40
  %598 = load ptr, ptr %11, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %598, i32 0, i32 4
  %600 = getelementptr inbounds %struct.UT_hash_handle, ptr %599, i32 0, i32 0
  %601 = load ptr, ptr %600, align 8, !tbaa !27
  %602 = getelementptr inbounds %struct.UT_hash_table, ptr %601, i32 0, i32 5
  %603 = load i64, ptr %602, align 8, !tbaa !36
  %604 = sub i64 0, %603
  %605 = getelementptr inbounds i8, ptr %597, i64 %604
  store ptr %605, ptr %14, align 8, !tbaa !5
  br label %606

606:                                              ; preds = %593
  br label %607

607:                                              ; preds = %606
  br label %609

608:                                              ; preds = %586
  store ptr null, ptr %14, align 8, !tbaa !5
  br label %609

609:                                              ; preds = %608, %607
  br label %560, !llvm.loop !41

610:                                              ; preds = %584, %560
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %613

613:                                              ; preds = %612, %506
  br label %614

614:                                              ; preds = %613
  br label %615

615:                                              ; preds = %614
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %616

616:                                              ; preds = %615
  br label %617

617:                                              ; preds = %616
  %618 = load ptr, ptr %14, align 8, !tbaa !5
  %619 = icmp ne ptr %618, null
  br i1 %619, label %620, label %639

620:                                              ; preds = %617
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.otfcc_Options, ptr %621, i32 0, i32 24
  %623 = load ptr, ptr %622, align 8, !tbaa !42
  %624 = getelementptr inbounds %struct.otfcc_ILogger, ptr %623, i32 0, i32 6
  %625 = load ptr, ptr %624, align 8, !tbaa !45
  %626 = load ptr, ptr %8, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.otfcc_Options, ptr %626, i32 0, i32 24
  %628 = load ptr, ptr %627, align 8, !tbaa !42
  %629 = call ptr @sdsempty()
  %630 = load ptr, ptr %12, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.otl_Coverage, ptr %630, i32 0, i32 2
  %632 = load ptr, ptr %631, align 8, !tbaa !21
  %633 = load i16, ptr %13, align 2, !tbaa !9
  %634 = zext i16 %633 to i64
  %635 = getelementptr inbounds %struct.otfcc_Handle, ptr %632, i64 %634
  %636 = getelementptr inbounds %struct.otfcc_Handle, ptr %635, i32 0, i32 2
  %637 = load ptr, ptr %636, align 8, !tbaa !47
  %638 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %629, ptr noundef @.str, ptr noundef %637)
  call void %625(ptr noundef %628, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %638)
  br label %1530

639:                                              ; preds = %617
  %640 = call ptr @__caryll_allocate_clean(i64 noundef 88, i64 noundef 31)
  store ptr %640, ptr %14, align 8, !tbaa !5
  %641 = load ptr, ptr %12, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.otl_Coverage, ptr %641, i32 0, i32 2
  %643 = load ptr, ptr %642, align 8, !tbaa !21
  %644 = load i16, ptr %13, align 2, !tbaa !9
  %645 = zext i16 %644 to i64
  %646 = getelementptr inbounds %struct.otfcc_Handle, ptr %643, i64 %645
  %647 = getelementptr inbounds %struct.otfcc_Handle, ptr %646, i32 0, i32 1
  %648 = load i16, ptr %647, align 4, !tbaa !22
  %649 = zext i16 %648 to i32
  %650 = load ptr, ptr %14, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %650, i32 0, i32 0
  store i32 %649, ptr %651, align 8, !tbaa !48
  %652 = load ptr, ptr %9, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %652, i32 0, i32 3
  %654 = load ptr, ptr %653, align 8, !tbaa !16
  %655 = getelementptr inbounds %struct.otl_Coverage, ptr %654, i32 0, i32 2
  %656 = load ptr, ptr %655, align 8, !tbaa !21
  %657 = load i16, ptr %13, align 2, !tbaa !9
  %658 = zext i16 %657 to i64
  %659 = getelementptr inbounds %struct.otfcc_Handle, ptr %656, i64 %658
  %660 = getelementptr inbounds %struct.otfcc_Handle, ptr %659, i32 0, i32 1
  %661 = load i16, ptr %660, align 4, !tbaa !22
  %662 = zext i16 %661 to i32
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %663, i32 0, i32 2
  store i32 %662, ptr %664, align 8, !tbaa !49
  %665 = load ptr, ptr %12, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.otl_Coverage, ptr %665, i32 0, i32 2
  %667 = load ptr, ptr %666, align 8, !tbaa !21
  %668 = load i16, ptr %13, align 2, !tbaa !9
  %669 = zext i16 %668 to i64
  %670 = getelementptr inbounds %struct.otfcc_Handle, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.otfcc_Handle, ptr %670, i32 0, i32 2
  %672 = load ptr, ptr %671, align 8, !tbaa !47
  %673 = load ptr, ptr %14, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %673, i32 0, i32 1
  store ptr %672, ptr %674, align 8, !tbaa !50
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %675, i32 0, i32 3
  %677 = load ptr, ptr %676, align 8, !tbaa !16
  %678 = getelementptr inbounds %struct.otl_Coverage, ptr %677, i32 0, i32 2
  %679 = load ptr, ptr %678, align 8, !tbaa !21
  %680 = load i16, ptr %13, align 2, !tbaa !9
  %681 = zext i16 %680 to i64
  %682 = getelementptr inbounds %struct.otfcc_Handle, ptr %679, i64 %681
  %683 = getelementptr inbounds %struct.otfcc_Handle, ptr %682, i32 0, i32 2
  %684 = load ptr, ptr %683, align 8, !tbaa !47
  %685 = load ptr, ptr %14, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %685, i32 0, i32 3
  store ptr %684, ptr %686, align 8, !tbaa !51
  br label %687

687:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  br label %688

688:                                              ; preds = %687
  br label %689

689:                                              ; preds = %688
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %690 = load ptr, ptr %14, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %690, i32 0, i32 0
  store ptr %691, ptr %26, align 8, !tbaa !5
  store i32 -17973521, ptr %22, align 4, !tbaa !24
  store i32 -1640531527, ptr %24, align 4, !tbaa !24
  store i32 -1640531527, ptr %23, align 4, !tbaa !24
  store i32 4, ptr %25, align 4, !tbaa !24
  br label %692

692:                                              ; preds = %860, %689
  %693 = load i32, ptr %25, align 4, !tbaa !24
  %694 = icmp uge i32 %693, 12
  br i1 %694, label %695, label %865

695:                                              ; preds = %692
  %696 = load ptr, ptr %26, align 8, !tbaa !5
  %697 = getelementptr inbounds i8, ptr %696, i64 0
  %698 = load i8, ptr %697, align 1, !tbaa !25
  %699 = zext i8 %698 to i32
  %700 = load ptr, ptr %26, align 8, !tbaa !5
  %701 = getelementptr inbounds i8, ptr %700, i64 1
  %702 = load i8, ptr %701, align 1, !tbaa !25
  %703 = zext i8 %702 to i32
  %704 = shl i32 %703, 8
  %705 = add i32 %699, %704
  %706 = load ptr, ptr %26, align 8, !tbaa !5
  %707 = getelementptr inbounds i8, ptr %706, i64 2
  %708 = load i8, ptr %707, align 1, !tbaa !25
  %709 = zext i8 %708 to i32
  %710 = shl i32 %709, 16
  %711 = add i32 %705, %710
  %712 = load ptr, ptr %26, align 8, !tbaa !5
  %713 = getelementptr inbounds i8, ptr %712, i64 3
  %714 = load i8, ptr %713, align 1, !tbaa !25
  %715 = zext i8 %714 to i32
  %716 = shl i32 %715, 24
  %717 = add i32 %711, %716
  %718 = load i32, ptr %23, align 4, !tbaa !24
  %719 = add i32 %718, %717
  store i32 %719, ptr %23, align 4, !tbaa !24
  %720 = load ptr, ptr %26, align 8, !tbaa !5
  %721 = getelementptr inbounds i8, ptr %720, i64 4
  %722 = load i8, ptr %721, align 1, !tbaa !25
  %723 = zext i8 %722 to i32
  %724 = load ptr, ptr %26, align 8, !tbaa !5
  %725 = getelementptr inbounds i8, ptr %724, i64 5
  %726 = load i8, ptr %725, align 1, !tbaa !25
  %727 = zext i8 %726 to i32
  %728 = shl i32 %727, 8
  %729 = add i32 %723, %728
  %730 = load ptr, ptr %26, align 8, !tbaa !5
  %731 = getelementptr inbounds i8, ptr %730, i64 6
  %732 = load i8, ptr %731, align 1, !tbaa !25
  %733 = zext i8 %732 to i32
  %734 = shl i32 %733, 16
  %735 = add i32 %729, %734
  %736 = load ptr, ptr %26, align 8, !tbaa !5
  %737 = getelementptr inbounds i8, ptr %736, i64 7
  %738 = load i8, ptr %737, align 1, !tbaa !25
  %739 = zext i8 %738 to i32
  %740 = shl i32 %739, 24
  %741 = add i32 %735, %740
  %742 = load i32, ptr %24, align 4, !tbaa !24
  %743 = add i32 %742, %741
  store i32 %743, ptr %24, align 4, !tbaa !24
  %744 = load ptr, ptr %26, align 8, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %744, i64 8
  %746 = load i8, ptr %745, align 1, !tbaa !25
  %747 = zext i8 %746 to i32
  %748 = load ptr, ptr %26, align 8, !tbaa !5
  %749 = getelementptr inbounds i8, ptr %748, i64 9
  %750 = load i8, ptr %749, align 1, !tbaa !25
  %751 = zext i8 %750 to i32
  %752 = shl i32 %751, 8
  %753 = add i32 %747, %752
  %754 = load ptr, ptr %26, align 8, !tbaa !5
  %755 = getelementptr inbounds i8, ptr %754, i64 10
  %756 = load i8, ptr %755, align 1, !tbaa !25
  %757 = zext i8 %756 to i32
  %758 = shl i32 %757, 16
  %759 = add i32 %753, %758
  %760 = load ptr, ptr %26, align 8, !tbaa !5
  %761 = getelementptr inbounds i8, ptr %760, i64 11
  %762 = load i8, ptr %761, align 1, !tbaa !25
  %763 = zext i8 %762 to i32
  %764 = shl i32 %763, 24
  %765 = add i32 %759, %764
  %766 = load i32, ptr %22, align 4, !tbaa !24
  %767 = add i32 %766, %765
  store i32 %767, ptr %22, align 4, !tbaa !24
  br label %768

768:                                              ; preds = %695
  %769 = load i32, ptr %24, align 4, !tbaa !24
  %770 = load i32, ptr %23, align 4, !tbaa !24
  %771 = sub i32 %770, %769
  store i32 %771, ptr %23, align 4, !tbaa !24
  %772 = load i32, ptr %22, align 4, !tbaa !24
  %773 = load i32, ptr %23, align 4, !tbaa !24
  %774 = sub i32 %773, %772
  store i32 %774, ptr %23, align 4, !tbaa !24
  %775 = load i32, ptr %22, align 4, !tbaa !24
  %776 = lshr i32 %775, 13
  %777 = load i32, ptr %23, align 4, !tbaa !24
  %778 = xor i32 %777, %776
  store i32 %778, ptr %23, align 4, !tbaa !24
  %779 = load i32, ptr %22, align 4, !tbaa !24
  %780 = load i32, ptr %24, align 4, !tbaa !24
  %781 = sub i32 %780, %779
  store i32 %781, ptr %24, align 4, !tbaa !24
  %782 = load i32, ptr %23, align 4, !tbaa !24
  %783 = load i32, ptr %24, align 4, !tbaa !24
  %784 = sub i32 %783, %782
  store i32 %784, ptr %24, align 4, !tbaa !24
  %785 = load i32, ptr %23, align 4, !tbaa !24
  %786 = shl i32 %785, 8
  %787 = load i32, ptr %24, align 4, !tbaa !24
  %788 = xor i32 %787, %786
  store i32 %788, ptr %24, align 4, !tbaa !24
  %789 = load i32, ptr %23, align 4, !tbaa !24
  %790 = load i32, ptr %22, align 4, !tbaa !24
  %791 = sub i32 %790, %789
  store i32 %791, ptr %22, align 4, !tbaa !24
  %792 = load i32, ptr %24, align 4, !tbaa !24
  %793 = load i32, ptr %22, align 4, !tbaa !24
  %794 = sub i32 %793, %792
  store i32 %794, ptr %22, align 4, !tbaa !24
  %795 = load i32, ptr %24, align 4, !tbaa !24
  %796 = lshr i32 %795, 13
  %797 = load i32, ptr %22, align 4, !tbaa !24
  %798 = xor i32 %797, %796
  store i32 %798, ptr %22, align 4, !tbaa !24
  %799 = load i32, ptr %24, align 4, !tbaa !24
  %800 = load i32, ptr %23, align 4, !tbaa !24
  %801 = sub i32 %800, %799
  store i32 %801, ptr %23, align 4, !tbaa !24
  %802 = load i32, ptr %22, align 4, !tbaa !24
  %803 = load i32, ptr %23, align 4, !tbaa !24
  %804 = sub i32 %803, %802
  store i32 %804, ptr %23, align 4, !tbaa !24
  %805 = load i32, ptr %22, align 4, !tbaa !24
  %806 = lshr i32 %805, 12
  %807 = load i32, ptr %23, align 4, !tbaa !24
  %808 = xor i32 %807, %806
  store i32 %808, ptr %23, align 4, !tbaa !24
  %809 = load i32, ptr %22, align 4, !tbaa !24
  %810 = load i32, ptr %24, align 4, !tbaa !24
  %811 = sub i32 %810, %809
  store i32 %811, ptr %24, align 4, !tbaa !24
  %812 = load i32, ptr %23, align 4, !tbaa !24
  %813 = load i32, ptr %24, align 4, !tbaa !24
  %814 = sub i32 %813, %812
  store i32 %814, ptr %24, align 4, !tbaa !24
  %815 = load i32, ptr %23, align 4, !tbaa !24
  %816 = shl i32 %815, 16
  %817 = load i32, ptr %24, align 4, !tbaa !24
  %818 = xor i32 %817, %816
  store i32 %818, ptr %24, align 4, !tbaa !24
  %819 = load i32, ptr %23, align 4, !tbaa !24
  %820 = load i32, ptr %22, align 4, !tbaa !24
  %821 = sub i32 %820, %819
  store i32 %821, ptr %22, align 4, !tbaa !24
  %822 = load i32, ptr %24, align 4, !tbaa !24
  %823 = load i32, ptr %22, align 4, !tbaa !24
  %824 = sub i32 %823, %822
  store i32 %824, ptr %22, align 4, !tbaa !24
  %825 = load i32, ptr %24, align 4, !tbaa !24
  %826 = lshr i32 %825, 5
  %827 = load i32, ptr %22, align 4, !tbaa !24
  %828 = xor i32 %827, %826
  store i32 %828, ptr %22, align 4, !tbaa !24
  %829 = load i32, ptr %24, align 4, !tbaa !24
  %830 = load i32, ptr %23, align 4, !tbaa !24
  %831 = sub i32 %830, %829
  store i32 %831, ptr %23, align 4, !tbaa !24
  %832 = load i32, ptr %22, align 4, !tbaa !24
  %833 = load i32, ptr %23, align 4, !tbaa !24
  %834 = sub i32 %833, %832
  store i32 %834, ptr %23, align 4, !tbaa !24
  %835 = load i32, ptr %22, align 4, !tbaa !24
  %836 = lshr i32 %835, 3
  %837 = load i32, ptr %23, align 4, !tbaa !24
  %838 = xor i32 %837, %836
  store i32 %838, ptr %23, align 4, !tbaa !24
  %839 = load i32, ptr %22, align 4, !tbaa !24
  %840 = load i32, ptr %24, align 4, !tbaa !24
  %841 = sub i32 %840, %839
  store i32 %841, ptr %24, align 4, !tbaa !24
  %842 = load i32, ptr %23, align 4, !tbaa !24
  %843 = load i32, ptr %24, align 4, !tbaa !24
  %844 = sub i32 %843, %842
  store i32 %844, ptr %24, align 4, !tbaa !24
  %845 = load i32, ptr %23, align 4, !tbaa !24
  %846 = shl i32 %845, 10
  %847 = load i32, ptr %24, align 4, !tbaa !24
  %848 = xor i32 %847, %846
  store i32 %848, ptr %24, align 4, !tbaa !24
  %849 = load i32, ptr %23, align 4, !tbaa !24
  %850 = load i32, ptr %22, align 4, !tbaa !24
  %851 = sub i32 %850, %849
  store i32 %851, ptr %22, align 4, !tbaa !24
  %852 = load i32, ptr %24, align 4, !tbaa !24
  %853 = load i32, ptr %22, align 4, !tbaa !24
  %854 = sub i32 %853, %852
  store i32 %854, ptr %22, align 4, !tbaa !24
  %855 = load i32, ptr %24, align 4, !tbaa !24
  %856 = lshr i32 %855, 15
  %857 = load i32, ptr %22, align 4, !tbaa !24
  %858 = xor i32 %857, %856
  store i32 %858, ptr %22, align 4, !tbaa !24
  br label %859

859:                                              ; preds = %768
  br label %860

860:                                              ; preds = %859
  %861 = load ptr, ptr %26, align 8, !tbaa !5
  %862 = getelementptr inbounds i8, ptr %861, i64 12
  store ptr %862, ptr %26, align 8, !tbaa !5
  %863 = load i32, ptr %25, align 4, !tbaa !24
  %864 = sub i32 %863, 12
  store i32 %864, ptr %25, align 4, !tbaa !24
  br label %692, !llvm.loop !52

865:                                              ; preds = %692
  %866 = load i32, ptr %22, align 4, !tbaa !24
  %867 = add i32 %866, 4
  store i32 %867, ptr %22, align 4, !tbaa !24
  %868 = load i32, ptr %25, align 4, !tbaa !24
  switch i32 %868, label %955 [
    i32 11, label %869
    i32 10, label %877
    i32 9, label %885
    i32 8, label %893
    i32 7, label %901
    i32 6, label %909
    i32 5, label %917
    i32 4, label %924
    i32 3, label %932
    i32 2, label %940
    i32 1, label %948
  ]

869:                                              ; preds = %865
  %870 = load ptr, ptr %26, align 8, !tbaa !5
  %871 = getelementptr inbounds i8, ptr %870, i64 10
  %872 = load i8, ptr %871, align 1, !tbaa !25
  %873 = zext i8 %872 to i32
  %874 = shl i32 %873, 24
  %875 = load i32, ptr %22, align 4, !tbaa !24
  %876 = add i32 %875, %874
  store i32 %876, ptr %22, align 4, !tbaa !24
  br label %877

877:                                              ; preds = %869, %865
  %878 = load ptr, ptr %26, align 8, !tbaa !5
  %879 = getelementptr inbounds i8, ptr %878, i64 9
  %880 = load i8, ptr %879, align 1, !tbaa !25
  %881 = zext i8 %880 to i32
  %882 = shl i32 %881, 16
  %883 = load i32, ptr %22, align 4, !tbaa !24
  %884 = add i32 %883, %882
  store i32 %884, ptr %22, align 4, !tbaa !24
  br label %885

885:                                              ; preds = %877, %865
  %886 = load ptr, ptr %26, align 8, !tbaa !5
  %887 = getelementptr inbounds i8, ptr %886, i64 8
  %888 = load i8, ptr %887, align 1, !tbaa !25
  %889 = zext i8 %888 to i32
  %890 = shl i32 %889, 8
  %891 = load i32, ptr %22, align 4, !tbaa !24
  %892 = add i32 %891, %890
  store i32 %892, ptr %22, align 4, !tbaa !24
  br label %893

893:                                              ; preds = %885, %865
  %894 = load ptr, ptr %26, align 8, !tbaa !5
  %895 = getelementptr inbounds i8, ptr %894, i64 7
  %896 = load i8, ptr %895, align 1, !tbaa !25
  %897 = zext i8 %896 to i32
  %898 = shl i32 %897, 24
  %899 = load i32, ptr %24, align 4, !tbaa !24
  %900 = add i32 %899, %898
  store i32 %900, ptr %24, align 4, !tbaa !24
  br label %901

901:                                              ; preds = %893, %865
  %902 = load ptr, ptr %26, align 8, !tbaa !5
  %903 = getelementptr inbounds i8, ptr %902, i64 6
  %904 = load i8, ptr %903, align 1, !tbaa !25
  %905 = zext i8 %904 to i32
  %906 = shl i32 %905, 16
  %907 = load i32, ptr %24, align 4, !tbaa !24
  %908 = add i32 %907, %906
  store i32 %908, ptr %24, align 4, !tbaa !24
  br label %909

909:                                              ; preds = %901, %865
  %910 = load ptr, ptr %26, align 8, !tbaa !5
  %911 = getelementptr inbounds i8, ptr %910, i64 5
  %912 = load i8, ptr %911, align 1, !tbaa !25
  %913 = zext i8 %912 to i32
  %914 = shl i32 %913, 8
  %915 = load i32, ptr %24, align 4, !tbaa !24
  %916 = add i32 %915, %914
  store i32 %916, ptr %24, align 4, !tbaa !24
  br label %917

917:                                              ; preds = %909, %865
  %918 = load ptr, ptr %26, align 8, !tbaa !5
  %919 = getelementptr inbounds i8, ptr %918, i64 4
  %920 = load i8, ptr %919, align 1, !tbaa !25
  %921 = zext i8 %920 to i32
  %922 = load i32, ptr %24, align 4, !tbaa !24
  %923 = add i32 %922, %921
  store i32 %923, ptr %24, align 4, !tbaa !24
  br label %924

924:                                              ; preds = %917, %865
  %925 = load ptr, ptr %26, align 8, !tbaa !5
  %926 = getelementptr inbounds i8, ptr %925, i64 3
  %927 = load i8, ptr %926, align 1, !tbaa !25
  %928 = zext i8 %927 to i32
  %929 = shl i32 %928, 24
  %930 = load i32, ptr %23, align 4, !tbaa !24
  %931 = add i32 %930, %929
  store i32 %931, ptr %23, align 4, !tbaa !24
  br label %932

932:                                              ; preds = %924, %865
  %933 = load ptr, ptr %26, align 8, !tbaa !5
  %934 = getelementptr inbounds i8, ptr %933, i64 2
  %935 = load i8, ptr %934, align 1, !tbaa !25
  %936 = zext i8 %935 to i32
  %937 = shl i32 %936, 16
  %938 = load i32, ptr %23, align 4, !tbaa !24
  %939 = add i32 %938, %937
  store i32 %939, ptr %23, align 4, !tbaa !24
  br label %940

940:                                              ; preds = %932, %865
  %941 = load ptr, ptr %26, align 8, !tbaa !5
  %942 = getelementptr inbounds i8, ptr %941, i64 1
  %943 = load i8, ptr %942, align 1, !tbaa !25
  %944 = zext i8 %943 to i32
  %945 = shl i32 %944, 8
  %946 = load i32, ptr %23, align 4, !tbaa !24
  %947 = add i32 %946, %945
  store i32 %947, ptr %23, align 4, !tbaa !24
  br label %948

948:                                              ; preds = %940, %865
  %949 = load ptr, ptr %26, align 8, !tbaa !5
  %950 = getelementptr inbounds i8, ptr %949, i64 0
  %951 = load i8, ptr %950, align 1, !tbaa !25
  %952 = zext i8 %951 to i32
  %953 = load i32, ptr %23, align 4, !tbaa !24
  %954 = add i32 %953, %952
  store i32 %954, ptr %23, align 4, !tbaa !24
  br label %955

955:                                              ; preds = %948, %865
  br label %956

956:                                              ; preds = %955
  %957 = load i32, ptr %24, align 4, !tbaa !24
  %958 = load i32, ptr %23, align 4, !tbaa !24
  %959 = sub i32 %958, %957
  store i32 %959, ptr %23, align 4, !tbaa !24
  %960 = load i32, ptr %22, align 4, !tbaa !24
  %961 = load i32, ptr %23, align 4, !tbaa !24
  %962 = sub i32 %961, %960
  store i32 %962, ptr %23, align 4, !tbaa !24
  %963 = load i32, ptr %22, align 4, !tbaa !24
  %964 = lshr i32 %963, 13
  %965 = load i32, ptr %23, align 4, !tbaa !24
  %966 = xor i32 %965, %964
  store i32 %966, ptr %23, align 4, !tbaa !24
  %967 = load i32, ptr %22, align 4, !tbaa !24
  %968 = load i32, ptr %24, align 4, !tbaa !24
  %969 = sub i32 %968, %967
  store i32 %969, ptr %24, align 4, !tbaa !24
  %970 = load i32, ptr %23, align 4, !tbaa !24
  %971 = load i32, ptr %24, align 4, !tbaa !24
  %972 = sub i32 %971, %970
  store i32 %972, ptr %24, align 4, !tbaa !24
  %973 = load i32, ptr %23, align 4, !tbaa !24
  %974 = shl i32 %973, 8
  %975 = load i32, ptr %24, align 4, !tbaa !24
  %976 = xor i32 %975, %974
  store i32 %976, ptr %24, align 4, !tbaa !24
  %977 = load i32, ptr %23, align 4, !tbaa !24
  %978 = load i32, ptr %22, align 4, !tbaa !24
  %979 = sub i32 %978, %977
  store i32 %979, ptr %22, align 4, !tbaa !24
  %980 = load i32, ptr %24, align 4, !tbaa !24
  %981 = load i32, ptr %22, align 4, !tbaa !24
  %982 = sub i32 %981, %980
  store i32 %982, ptr %22, align 4, !tbaa !24
  %983 = load i32, ptr %24, align 4, !tbaa !24
  %984 = lshr i32 %983, 13
  %985 = load i32, ptr %22, align 4, !tbaa !24
  %986 = xor i32 %985, %984
  store i32 %986, ptr %22, align 4, !tbaa !24
  %987 = load i32, ptr %24, align 4, !tbaa !24
  %988 = load i32, ptr %23, align 4, !tbaa !24
  %989 = sub i32 %988, %987
  store i32 %989, ptr %23, align 4, !tbaa !24
  %990 = load i32, ptr %22, align 4, !tbaa !24
  %991 = load i32, ptr %23, align 4, !tbaa !24
  %992 = sub i32 %991, %990
  store i32 %992, ptr %23, align 4, !tbaa !24
  %993 = load i32, ptr %22, align 4, !tbaa !24
  %994 = lshr i32 %993, 12
  %995 = load i32, ptr %23, align 4, !tbaa !24
  %996 = xor i32 %995, %994
  store i32 %996, ptr %23, align 4, !tbaa !24
  %997 = load i32, ptr %22, align 4, !tbaa !24
  %998 = load i32, ptr %24, align 4, !tbaa !24
  %999 = sub i32 %998, %997
  store i32 %999, ptr %24, align 4, !tbaa !24
  %1000 = load i32, ptr %23, align 4, !tbaa !24
  %1001 = load i32, ptr %24, align 4, !tbaa !24
  %1002 = sub i32 %1001, %1000
  store i32 %1002, ptr %24, align 4, !tbaa !24
  %1003 = load i32, ptr %23, align 4, !tbaa !24
  %1004 = shl i32 %1003, 16
  %1005 = load i32, ptr %24, align 4, !tbaa !24
  %1006 = xor i32 %1005, %1004
  store i32 %1006, ptr %24, align 4, !tbaa !24
  %1007 = load i32, ptr %23, align 4, !tbaa !24
  %1008 = load i32, ptr %22, align 4, !tbaa !24
  %1009 = sub i32 %1008, %1007
  store i32 %1009, ptr %22, align 4, !tbaa !24
  %1010 = load i32, ptr %24, align 4, !tbaa !24
  %1011 = load i32, ptr %22, align 4, !tbaa !24
  %1012 = sub i32 %1011, %1010
  store i32 %1012, ptr %22, align 4, !tbaa !24
  %1013 = load i32, ptr %24, align 4, !tbaa !24
  %1014 = lshr i32 %1013, 5
  %1015 = load i32, ptr %22, align 4, !tbaa !24
  %1016 = xor i32 %1015, %1014
  store i32 %1016, ptr %22, align 4, !tbaa !24
  %1017 = load i32, ptr %24, align 4, !tbaa !24
  %1018 = load i32, ptr %23, align 4, !tbaa !24
  %1019 = sub i32 %1018, %1017
  store i32 %1019, ptr %23, align 4, !tbaa !24
  %1020 = load i32, ptr %22, align 4, !tbaa !24
  %1021 = load i32, ptr %23, align 4, !tbaa !24
  %1022 = sub i32 %1021, %1020
  store i32 %1022, ptr %23, align 4, !tbaa !24
  %1023 = load i32, ptr %22, align 4, !tbaa !24
  %1024 = lshr i32 %1023, 3
  %1025 = load i32, ptr %23, align 4, !tbaa !24
  %1026 = xor i32 %1025, %1024
  store i32 %1026, ptr %23, align 4, !tbaa !24
  %1027 = load i32, ptr %22, align 4, !tbaa !24
  %1028 = load i32, ptr %24, align 4, !tbaa !24
  %1029 = sub i32 %1028, %1027
  store i32 %1029, ptr %24, align 4, !tbaa !24
  %1030 = load i32, ptr %23, align 4, !tbaa !24
  %1031 = load i32, ptr %24, align 4, !tbaa !24
  %1032 = sub i32 %1031, %1030
  store i32 %1032, ptr %24, align 4, !tbaa !24
  %1033 = load i32, ptr %23, align 4, !tbaa !24
  %1034 = shl i32 %1033, 10
  %1035 = load i32, ptr %24, align 4, !tbaa !24
  %1036 = xor i32 %1035, %1034
  store i32 %1036, ptr %24, align 4, !tbaa !24
  %1037 = load i32, ptr %23, align 4, !tbaa !24
  %1038 = load i32, ptr %22, align 4, !tbaa !24
  %1039 = sub i32 %1038, %1037
  store i32 %1039, ptr %22, align 4, !tbaa !24
  %1040 = load i32, ptr %24, align 4, !tbaa !24
  %1041 = load i32, ptr %22, align 4, !tbaa !24
  %1042 = sub i32 %1041, %1040
  store i32 %1042, ptr %22, align 4, !tbaa !24
  %1043 = load i32, ptr %24, align 4, !tbaa !24
  %1044 = lshr i32 %1043, 15
  %1045 = load i32, ptr %22, align 4, !tbaa !24
  %1046 = xor i32 %1045, %1044
  store i32 %1046, ptr %22, align 4, !tbaa !24
  br label %1047

1047:                                             ; preds = %956
  br label %1048

1048:                                             ; preds = %1047
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  br label %1049

1049:                                             ; preds = %1048
  br label %1050

1050:                                             ; preds = %1049
  br label %1051

1051:                                             ; preds = %1050
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052
  %1054 = load i32, ptr %22, align 4, !tbaa !24
  %1055 = load ptr, ptr %14, 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 7
  store i32 %1054, ptr %1057, align 4, !tbaa !37
  %1058 = load ptr, ptr %14, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1058, i32 0, i32 0
  %1060 = load ptr, ptr %14, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1060, i32 0, i32 4
  %1062 = getelementptr inbounds %struct.UT_hash_handle, ptr %1061, i32 0, i32 5
  store ptr %1059, ptr %1062, align 8, !tbaa !39
  %1063 = load ptr, ptr %14, 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 6
  store i32 4, ptr %1065, align 8, !tbaa !38
  %1066 = load ptr, ptr %11, align 8, !tbaa !5
  %1067 = icmp ne ptr %1066, null
  br i1 %1067, label %1150, label %1068

1068:                                             ; preds = %1053
  %1069 = load ptr, ptr %14, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1069, i32 0, i32 4
  %1071 = getelementptr inbounds %struct.UT_hash_handle, ptr %1070, i32 0, i32 2
  store ptr null, ptr %1071, align 8, !tbaa !53
  %1072 = load ptr, ptr %14, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1072, i32 0, i32 4
  %1074 = getelementptr inbounds %struct.UT_hash_handle, ptr %1073, i32 0, i32 1
  store ptr null, ptr %1074, align 8, !tbaa !54
  br label %1075

1075:                                             ; preds = %1068
  %1076 = call noalias ptr @malloc(i64 noundef 64) #12
  %1077 = load ptr, ptr %14, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1077, i32 0, i32 4
  %1079 = getelementptr inbounds %struct.UT_hash_handle, ptr %1078, i32 0, i32 0
  store ptr %1076, ptr %1079, align 8, !tbaa !27
  %1080 = load ptr, ptr %14, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1080, i32 0, i32 4
  %1082 = getelementptr inbounds %struct.UT_hash_handle, ptr %1081, i32 0, i32 0
  %1083 = load ptr, ptr %1082, align 8, !tbaa !27
  %1084 = icmp ne ptr %1083, null
  br i1 %1084, label %1086, label %1085

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

1086:                                             ; preds = %1075
  %1087 = load ptr, ptr %14, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1087, i32 0, i32 4
  %1089 = getelementptr inbounds %struct.UT_hash_handle, ptr %1088, i32 0, i32 0
  %1090 = load ptr, ptr %1089, align 8, !tbaa !27
  call void @llvm.memset.p0.i64(ptr align 8 %1090, i8 0, i64 64, i1 false)
  %1091 = load ptr, ptr %14, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1091, i32 0, i32 4
  %1093 = load ptr, ptr %14, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1093, i32 0, i32 4
  %1095 = getelementptr inbounds %struct.UT_hash_handle, ptr %1094, i32 0, i32 0
  %1096 = load ptr, ptr %1095, align 8, !tbaa !27
  %1097 = getelementptr inbounds %struct.UT_hash_table, ptr %1096, i32 0, i32 4
  store ptr %1092, ptr %1097, align 8, !tbaa !55
  %1098 = load ptr, ptr %14, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1098, i32 0, i32 4
  %1100 = getelementptr inbounds %struct.UT_hash_handle, ptr %1099, i32 0, i32 0
  %1101 = load ptr, ptr %1100, align 8, !tbaa !27
  %1102 = getelementptr inbounds %struct.UT_hash_table, ptr %1101, i32 0, i32 1
  store i32 32, ptr %1102, align 8, !tbaa !30
  %1103 = load ptr, ptr %14, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1103, i32 0, i32 4
  %1105 = getelementptr inbounds %struct.UT_hash_handle, ptr %1104, i32 0, i32 0
  %1106 = load ptr, ptr %1105, align 8, !tbaa !27
  %1107 = getelementptr inbounds %struct.UT_hash_table, ptr %1106, i32 0, i32 2
  store i32 5, ptr %1107, align 4, !tbaa !56
  %1108 = load ptr, ptr %14, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1108, i32 0, i32 4
  %1110 = load ptr, ptr %14, align 8, !tbaa !5
  %1111 = ptrtoint ptr %1109 to i64
  %1112 = ptrtoint ptr %1110 to i64
  %1113 = sub i64 %1111, %1112
  %1114 = load ptr, ptr %14, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1114, i32 0, i32 4
  %1116 = getelementptr inbounds %struct.UT_hash_handle, ptr %1115, i32 0, i32 0
  %1117 = load ptr, ptr %1116, align 8, !tbaa !27
  %1118 = getelementptr inbounds %struct.UT_hash_table, ptr %1117, i32 0, i32 5
  store i64 %1113, ptr %1118, align 8, !tbaa !36
  %1119 = call noalias ptr @malloc(i64 noundef 512) #12
  %1120 = load ptr, ptr %14, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1120, i32 0, i32 4
  %1122 = getelementptr inbounds %struct.UT_hash_handle, ptr %1121, i32 0, i32 0
  %1123 = load ptr, ptr %1122, align 8, !tbaa !27
  %1124 = getelementptr inbounds %struct.UT_hash_table, ptr %1123, i32 0, i32 0
  store ptr %1119, ptr %1124, align 8, !tbaa !33
  %1125 = load ptr, ptr %14, 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 !27
  %1129 = getelementptr inbounds %struct.UT_hash_table, ptr %1128, i32 0, i32 10
  store i32 -1609490463, ptr %1129, align 8, !tbaa !57
  %1130 = load ptr, ptr %14, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1130, i32 0, i32 4
  %1132 = getelementptr inbounds %struct.UT_hash_handle, ptr %1131, i32 0, i32 0
  %1133 = load ptr, ptr %1132, align 8, !tbaa !27
  %1134 = getelementptr inbounds %struct.UT_hash_table, ptr %1133, i32 0, i32 0
  %1135 = load ptr, ptr %1134, align 8, !tbaa !33
  %1136 = icmp ne ptr %1135, null
  br i1 %1136, label %1138, label %1137

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

1138:                                             ; preds = %1086
  %1139 = load ptr, ptr %14, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1139, i32 0, i32 4
  %1141 = getelementptr inbounds %struct.UT_hash_handle, ptr %1140, i32 0, i32 0
  %1142 = load ptr, ptr %1141, align 8, !tbaa !27
  %1143 = getelementptr inbounds %struct.UT_hash_table, ptr %1142, i32 0, i32 0
  %1144 = load ptr, ptr %1143, align 8, !tbaa !33
  call void @llvm.memset.p0.i64(ptr align 8 %1144, i8 0, i64 512, i1 false)
  br label %1145

1145:                                             ; preds = %1138
  br label %1146

1146:                                             ; preds = %1145
  br label %1147

1147:                                             ; preds = %1146
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %1149, ptr %11, align 8, !tbaa !5
  br label %1196

1150:                                             ; preds = %1053
  %1151 = load ptr, ptr %11, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1151, i32 0, i32 4
  %1153 = getelementptr inbounds %struct.UT_hash_handle, ptr %1152, i32 0, i32 0
  %1154 = load ptr, ptr %1153, align 8, !tbaa !27
  %1155 = load ptr, ptr %14, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1155, i32 0, i32 4
  %1157 = getelementptr inbounds %struct.UT_hash_handle, ptr %1156, i32 0, i32 0
  store ptr %1154, ptr %1157, align 8, !tbaa !27
  br label %1158

1158:                                             ; preds = %1150
  %1159 = load ptr, ptr %14, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1159, i32 0, i32 4
  %1161 = getelementptr inbounds %struct.UT_hash_handle, ptr %1160, i32 0, i32 2
  store ptr null, ptr %1161, align 8, !tbaa !53
  %1162 = load ptr, ptr %11, 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 0
  %1165 = load ptr, ptr %1164, align 8, !tbaa !27
  %1166 = getelementptr inbounds %struct.UT_hash_table, ptr %1165, i32 0, i32 4
  %1167 = load ptr, ptr %1166, align 8, !tbaa !55
  %1168 = load ptr, ptr %11, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1168, i32 0, i32 4
  %1170 = getelementptr inbounds %struct.UT_hash_handle, ptr %1169, i32 0, i32 0
  %1171 = load ptr, ptr %1170, align 8, !tbaa !27
  %1172 = getelementptr inbounds %struct.UT_hash_table, ptr %1171, i32 0, i32 5
  %1173 = load i64, ptr %1172, align 8, !tbaa !36
  %1174 = sub i64 0, %1173
  %1175 = getelementptr inbounds i8, ptr %1167, i64 %1174
  %1176 = load ptr, ptr %14, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1176, i32 0, i32 4
  %1178 = getelementptr inbounds %struct.UT_hash_handle, ptr %1177, i32 0, i32 1
  store ptr %1175, ptr %1178, align 8, !tbaa !54
  %1179 = load ptr, ptr %14, align 8, !tbaa !5
  %1180 = load ptr, ptr %11, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1180, i32 0, i32 4
  %1182 = getelementptr inbounds %struct.UT_hash_handle, ptr %1181, i32 0, i32 0
  %1183 = load ptr, ptr %1182, align 8, !tbaa !27
  %1184 = getelementptr inbounds %struct.UT_hash_table, ptr %1183, i32 0, i32 4
  %1185 = load ptr, ptr %1184, align 8, !tbaa !55
  %1186 = getelementptr inbounds %struct.UT_hash_handle, ptr %1185, i32 0, i32 2
  store ptr %1179, ptr %1186, align 8, !tbaa !58
  %1187 = load ptr, ptr %14, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1187, i32 0, i32 4
  %1189 = load ptr, ptr %11, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1189, i32 0, i32 4
  %1191 = getelementptr inbounds %struct.UT_hash_handle, ptr %1190, i32 0, i32 0
  %1192 = load ptr, ptr %1191, align 8, !tbaa !27
  %1193 = getelementptr inbounds %struct.UT_hash_table, ptr %1192, i32 0, i32 4
  store ptr %1188, ptr %1193, align 8, !tbaa !55
  br label %1194

1194:                                             ; preds = %1158
  br label %1195

1195:                                             ; preds = %1194
  br label %1196

1196:                                             ; preds = %1195, %1148
  br label %1197

1197:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %1198 = load ptr, ptr %11, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1198, i32 0, i32 4
  %1200 = getelementptr inbounds %struct.UT_hash_handle, ptr %1199, i32 0, i32 0
  %1201 = load ptr, ptr %1200, align 8, !tbaa !27
  %1202 = getelementptr inbounds %struct.UT_hash_table, ptr %1201, i32 0, i32 3
  %1203 = load i32, ptr %1202, align 8, !tbaa !59
  %1204 = add i32 %1203, 1
  store i32 %1204, ptr %1202, align 8, !tbaa !59
  br label %1205

1205:                                             ; preds = %1197
  %1206 = load i32, ptr %22, align 4, !tbaa !24
  %1207 = load ptr, ptr %11, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1207, i32 0, i32 4
  %1209 = getelementptr inbounds %struct.UT_hash_handle, ptr %1208, i32 0, i32 0
  %1210 = load ptr, ptr %1209, align 8, !tbaa !27
  %1211 = getelementptr inbounds %struct.UT_hash_table, ptr %1210, i32 0, i32 1
  %1212 = load i32, ptr %1211, align 8, !tbaa !30
  %1213 = sub i32 %1212, 1
  %1214 = and i32 %1206, %1213
  store i32 %1214, ptr %27, align 4, !tbaa !24
  br label %1215

1215:                                             ; preds = %1205
  br label %1216

1216:                                             ; preds = %1215
  br label %1217

1217:                                             ; preds = %1216
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %1218 = load ptr, ptr %11, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1218, i32 0, i32 4
  %1220 = getelementptr inbounds %struct.UT_hash_handle, ptr %1219, i32 0, i32 0
  %1221 = load ptr, ptr %1220, align 8, !tbaa !27
  %1222 = getelementptr inbounds %struct.UT_hash_table, ptr %1221, i32 0, i32 0
  %1223 = load ptr, ptr %1222, align 8, !tbaa !33
  %1224 = load i32, ptr %27, align 4, !tbaa !24
  %1225 = zext i32 %1224 to i64
  %1226 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1223, i64 %1225
  store ptr %1226, ptr %28, align 8, !tbaa !5
  %1227 = load ptr, ptr %28, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1227, i32 0, i32 1
  %1229 = load i32, ptr %1228, align 8, !tbaa !60
  %1230 = add i32 %1229, 1
  store i32 %1230, ptr %1228, align 8, !tbaa !60
  %1231 = load ptr, ptr %28, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1231, i32 0, i32 0
  %1233 = load ptr, ptr %1232, align 8, !tbaa !34
  %1234 = load ptr, ptr %14, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1234, i32 0, i32 4
  %1236 = getelementptr inbounds %struct.UT_hash_handle, ptr %1235, i32 0, i32 4
  store ptr %1233, ptr %1236, align 8, !tbaa !40
  %1237 = load ptr, ptr %14, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1237, i32 0, i32 4
  %1239 = getelementptr inbounds %struct.UT_hash_handle, ptr %1238, i32 0, i32 3
  store ptr null, ptr %1239, align 8, !tbaa !61
  %1240 = load ptr, ptr %28, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1240, i32 0, i32 0
  %1242 = load ptr, ptr %1241, align 8, !tbaa !34
  %1243 = icmp ne ptr %1242, null
  br i1 %1243, label %1244, label %1251

1244:                                             ; preds = %1217
  %1245 = load ptr, ptr %14, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1245, i32 0, i32 4
  %1247 = load ptr, ptr %28, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1247, i32 0, i32 0
  %1249 = load ptr, ptr %1248, align 8, !tbaa !34
  %1250 = getelementptr inbounds %struct.UT_hash_handle, ptr %1249, i32 0, i32 3
  store ptr %1246, ptr %1250, align 8, !tbaa !62
  br label %1251

1251:                                             ; preds = %1244, %1217
  %1252 = load ptr, ptr %14, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1252, i32 0, i32 4
  %1254 = load ptr, ptr %28, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1254, i32 0, i32 0
  store ptr %1253, ptr %1255, align 8, !tbaa !34
  %1256 = load ptr, ptr %28, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1256, i32 0, i32 1
  %1258 = load i32, ptr %1257, align 8, !tbaa !60
  %1259 = load ptr, ptr %28, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1259, i32 0, i32 2
  %1261 = load i32, ptr %1260, align 4, !tbaa !63
  %1262 = add i32 %1261, 1
  %1263 = mul i32 %1262, 10
  %1264 = icmp uge i32 %1258, %1263
  br i1 %1264, label %1265, label %1521

1265:                                             ; preds = %1251
  %1266 = load ptr, ptr %14, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1266, i32 0, i32 4
  %1268 = getelementptr inbounds %struct.UT_hash_handle, ptr %1267, i32 0, i32 0
  %1269 = load ptr, ptr %1268, align 8, !tbaa !27
  %1270 = getelementptr inbounds %struct.UT_hash_table, ptr %1269, i32 0, i32 9
  %1271 = load i32, ptr %1270, align 4, !tbaa !64
  %1272 = icmp ne i32 %1271, 0
  br i1 %1272, label %1521, label %1273

1273:                                             ; preds = %1265
  br label %1274

1274:                                             ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %1275 = load ptr, ptr %14, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1275, i32 0, i32 4
  %1277 = getelementptr inbounds %struct.UT_hash_handle, ptr %1276, i32 0, i32 0
  %1278 = load ptr, ptr %1277, align 8, !tbaa !27
  %1279 = getelementptr inbounds %struct.UT_hash_table, ptr %1278, i32 0, i32 1
  %1280 = load i32, ptr %1279, align 8, !tbaa !30
  %1281 = zext i32 %1280 to i64
  %1282 = mul i64 2, %1281
  %1283 = mul i64 %1282, 16
  %1284 = call noalias ptr @malloc(i64 noundef %1283) #12
  store ptr %1284, ptr %33, align 8, !tbaa !5
  %1285 = load ptr, ptr %33, align 8, !tbaa !5
  %1286 = icmp ne ptr %1285, null
  br i1 %1286, label %1288, label %1287

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

1288:                                             ; preds = %1274
  %1289 = load ptr, ptr %33, align 8, !tbaa !5
  %1290 = load ptr, ptr %14, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1290, i32 0, i32 4
  %1292 = getelementptr inbounds %struct.UT_hash_handle, ptr %1291, i32 0, i32 0
  %1293 = load ptr, ptr %1292, align 8, !tbaa !27
  %1294 = getelementptr inbounds %struct.UT_hash_table, ptr %1293, i32 0, i32 1
  %1295 = load i32, ptr %1294, align 8, !tbaa !30
  %1296 = zext i32 %1295 to i64
  %1297 = mul i64 2, %1296
  %1298 = mul i64 %1297, 16
  call void @llvm.memset.p0.i64(ptr align 8 %1289, i8 0, i64 %1298, i1 false)
  %1299 = load ptr, ptr %14, 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 !27
  %1303 = getelementptr inbounds %struct.UT_hash_table, ptr %1302, i32 0, i32 3
  %1304 = load i32, ptr %1303, align 8, !tbaa !59
  %1305 = load ptr, ptr %14, 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 !27
  %1309 = getelementptr inbounds %struct.UT_hash_table, ptr %1308, i32 0, i32 2
  %1310 = load i32, ptr %1309, align 4, !tbaa !56
  %1311 = add i32 %1310, 1
  %1312 = lshr i32 %1304, %1311
  %1313 = load ptr, ptr %14, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1313, i32 0, i32 4
  %1315 = getelementptr inbounds %struct.UT_hash_handle, ptr %1314, i32 0, i32 0
  %1316 = load ptr, ptr %1315, align 8, !tbaa !27
  %1317 = getelementptr inbounds %struct.UT_hash_table, ptr %1316, i32 0, i32 3
  %1318 = load i32, ptr %1317, align 8, !tbaa !59
  %1319 = load ptr, ptr %14, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1319, i32 0, i32 4
  %1321 = getelementptr inbounds %struct.UT_hash_handle, ptr %1320, i32 0, i32 0
  %1322 = load ptr, ptr %1321, align 8, !tbaa !27
  %1323 = getelementptr inbounds %struct.UT_hash_table, ptr %1322, i32 0, i32 1
  %1324 = load i32, ptr %1323, align 8, !tbaa !30
  %1325 = mul i32 %1324, 2
  %1326 = sub i32 %1325, 1
  %1327 = and i32 %1318, %1326
  %1328 = icmp ne i32 %1327, 0
  %1329 = zext i1 %1328 to i64
  %1330 = select i1 %1328, i32 1, i32 0
  %1331 = add i32 %1312, %1330
  %1332 = load ptr, ptr %14, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1332, i32 0, i32 4
  %1334 = getelementptr inbounds %struct.UT_hash_handle, ptr %1333, i32 0, i32 0
  %1335 = load ptr, ptr %1334, align 8, !tbaa !27
  %1336 = getelementptr inbounds %struct.UT_hash_table, ptr %1335, i32 0, i32 6
  store i32 %1331, ptr %1336, align 8, !tbaa !65
  %1337 = load ptr, ptr %14, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1337, i32 0, i32 4
  %1339 = getelementptr inbounds %struct.UT_hash_handle, ptr %1338, i32 0, i32 0
  %1340 = load ptr, ptr %1339, align 8, !tbaa !27
  %1341 = getelementptr inbounds %struct.UT_hash_table, ptr %1340, i32 0, i32 7
  store i32 0, ptr %1341, align 4, !tbaa !66
  store i32 0, ptr %30, align 4, !tbaa !24
  br label %1342

1342:                                             ; preds = %1444, %1288
  %1343 = load i32, ptr %30, align 4, !tbaa !24
  %1344 = load ptr, ptr %14, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1344, i32 0, i32 4
  %1346 = getelementptr inbounds %struct.UT_hash_handle, ptr %1345, i32 0, i32 0
  %1347 = load ptr, ptr %1346, align 8, !tbaa !27
  %1348 = getelementptr inbounds %struct.UT_hash_table, ptr %1347, i32 0, i32 1
  %1349 = load i32, ptr %1348, align 8, !tbaa !30
  %1350 = icmp ult i32 %1343, %1349
  br i1 %1350, label %1351, label %1447

1351:                                             ; preds = %1342
  %1352 = load ptr, ptr %14, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1352, i32 0, i32 4
  %1354 = getelementptr inbounds %struct.UT_hash_handle, ptr %1353, i32 0, i32 0
  %1355 = load ptr, ptr %1354, align 8, !tbaa !27
  %1356 = getelementptr inbounds %struct.UT_hash_table, ptr %1355, i32 0, i32 0
  %1357 = load ptr, ptr %1356, align 8, !tbaa !33
  %1358 = load i32, ptr %30, align 4, !tbaa !24
  %1359 = zext i32 %1358 to i64
  %1360 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1357, i64 %1359
  %1361 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1360, i32 0, i32 0
  %1362 = load ptr, ptr %1361, align 8, !tbaa !34
  store ptr %1362, ptr %31, align 8, !tbaa !5
  br label %1363

1363:                                             ; preds = %1438, %1351
  %1364 = load ptr, ptr %31, align 8, !tbaa !5
  %1365 = icmp ne ptr %1364, null
  br i1 %1365, label %1366, label %1443

1366:                                             ; preds = %1363
  %1367 = load ptr, ptr %31, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.UT_hash_handle, ptr %1367, i32 0, i32 4
  %1369 = load ptr, ptr %1368, align 8, !tbaa !67
  store ptr %1369, ptr %32, align 8, !tbaa !5
  br label %1370

1370:                                             ; preds = %1366
  %1371 = load ptr, ptr %31, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.UT_hash_handle, ptr %1371, i32 0, i32 7
  %1373 = load i32, ptr %1372, align 4, !tbaa !68
  %1374 = load ptr, ptr %14, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1374, i32 0, i32 4
  %1376 = getelementptr inbounds %struct.UT_hash_handle, ptr %1375, i32 0, i32 0
  %1377 = load ptr, ptr %1376, align 8, !tbaa !27
  %1378 = getelementptr inbounds %struct.UT_hash_table, ptr %1377, i32 0, i32 1
  %1379 = load i32, ptr %1378, align 8, !tbaa !30
  %1380 = mul i32 %1379, 2
  %1381 = sub i32 %1380, 1
  %1382 = and i32 %1373, %1381
  store i32 %1382, ptr %29, align 4, !tbaa !24
  br label %1383

1383:                                             ; preds = %1370
  br label %1384

1384:                                             ; preds = %1383
  %1385 = load ptr, ptr %33, align 8, !tbaa !5
  %1386 = load i32, ptr %29, align 4, !tbaa !24
  %1387 = zext i32 %1386 to i64
  %1388 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1385, i64 %1387
  store ptr %1388, ptr %34, align 8, !tbaa !5
  %1389 = load ptr, ptr %34, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1389, i32 0, i32 1
  %1391 = load i32, ptr %1390, align 8, !tbaa !60
  %1392 = add i32 %1391, 1
  store i32 %1392, ptr %1390, align 8, !tbaa !60
  %1393 = load ptr, ptr %14, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1393, i32 0, i32 4
  %1395 = getelementptr inbounds %struct.UT_hash_handle, ptr %1394, i32 0, i32 0
  %1396 = load ptr, ptr %1395, align 8, !tbaa !27
  %1397 = getelementptr inbounds %struct.UT_hash_table, ptr %1396, i32 0, i32 6
  %1398 = load i32, ptr %1397, align 8, !tbaa !65
  %1399 = icmp ugt i32 %1392, %1398
  br i1 %1399, label %1400, label %1420

1400:                                             ; preds = %1384
  %1401 = load ptr, ptr %14, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1401, i32 0, i32 4
  %1403 = getelementptr inbounds %struct.UT_hash_handle, ptr %1402, i32 0, i32 0
  %1404 = load ptr, ptr %1403, align 8, !tbaa !27
  %1405 = getelementptr inbounds %struct.UT_hash_table, ptr %1404, i32 0, i32 7
  %1406 = load i32, ptr %1405, align 4, !tbaa !66
  %1407 = add i32 %1406, 1
  store i32 %1407, ptr %1405, align 4, !tbaa !66
  %1408 = load ptr, ptr %34, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1408, i32 0, i32 1
  %1410 = load i32, ptr %1409, align 8, !tbaa !60
  %1411 = load ptr, ptr %14, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1411, i32 0, i32 4
  %1413 = getelementptr inbounds %struct.UT_hash_handle, ptr %1412, i32 0, i32 0
  %1414 = load ptr, ptr %1413, align 8, !tbaa !27
  %1415 = getelementptr inbounds %struct.UT_hash_table, ptr %1414, i32 0, i32 6
  %1416 = load i32, ptr %1415, align 8, !tbaa !65
  %1417 = udiv i32 %1410, %1416
  %1418 = load ptr, ptr %34, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1418, i32 0, i32 2
  store i32 %1417, ptr %1419, align 4, !tbaa !63
  br label %1420

1420:                                             ; preds = %1400, %1384
  %1421 = load ptr, ptr %31, align 8, !tbaa !5
  %1422 = getelementptr inbounds %struct.UT_hash_handle, ptr %1421, i32 0, i32 3
  store ptr null, ptr %1422, align 8, !tbaa !62
  %1423 = load ptr, ptr %34, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1423, i32 0, i32 0
  %1425 = load ptr, ptr %1424, align 8, !tbaa !34
  %1426 = load ptr, ptr %31, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.UT_hash_handle, ptr %1426, i32 0, i32 4
  store ptr %1425, ptr %1427, align 8, !tbaa !67
  %1428 = load ptr, ptr %34, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1428, i32 0, i32 0
  %1430 = load ptr, ptr %1429, align 8, !tbaa !34
  %1431 = icmp ne ptr %1430, null
  br i1 %1431, label %1432, label %1438

1432:                                             ; preds = %1420
  %1433 = load ptr, ptr %31, align 8, !tbaa !5
  %1434 = load ptr, ptr %34, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1434, i32 0, i32 0
  %1436 = load ptr, ptr %1435, align 8, !tbaa !34
  %1437 = getelementptr inbounds %struct.UT_hash_handle, ptr %1436, i32 0, i32 3
  store ptr %1433, ptr %1437, align 8, !tbaa !62
  br label %1438

1438:                                             ; preds = %1432, %1420
  %1439 = load ptr, ptr %31, align 8, !tbaa !5
  %1440 = load ptr, ptr %34, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1440, i32 0, i32 0
  store ptr %1439, ptr %1441, align 8, !tbaa !34
  %1442 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %1442, ptr %31, align 8, !tbaa !5
  br label %1363, !llvm.loop !69

1443:                                             ; preds = %1363
  br label %1444

1444:                                             ; preds = %1443
  %1445 = load i32, ptr %30, align 4, !tbaa !24
  %1446 = add i32 %1445, 1
  store i32 %1446, ptr %30, align 4, !tbaa !24
  br label %1342, !llvm.loop !70

1447:                                             ; preds = %1342
  %1448 = load ptr, ptr %14, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1448, i32 0, i32 4
  %1450 = getelementptr inbounds %struct.UT_hash_handle, ptr %1449, i32 0, i32 0
  %1451 = load ptr, ptr %1450, align 8, !tbaa !27
  %1452 = getelementptr inbounds %struct.UT_hash_table, ptr %1451, i32 0, i32 0
  %1453 = load ptr, ptr %1452, align 8, !tbaa !33
  call void @free(ptr noundef %1453) #10
  %1454 = load ptr, ptr %14, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1454, i32 0, i32 4
  %1456 = getelementptr inbounds %struct.UT_hash_handle, ptr %1455, i32 0, i32 0
  %1457 = load ptr, ptr %1456, align 8, !tbaa !27
  %1458 = getelementptr inbounds %struct.UT_hash_table, ptr %1457, i32 0, i32 1
  %1459 = load i32, ptr %1458, align 8, !tbaa !30
  %1460 = mul i32 %1459, 2
  store i32 %1460, ptr %1458, align 8, !tbaa !30
  %1461 = load ptr, ptr %14, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1461, i32 0, i32 4
  %1463 = getelementptr inbounds %struct.UT_hash_handle, ptr %1462, i32 0, i32 0
  %1464 = load ptr, ptr %1463, align 8, !tbaa !27
  %1465 = getelementptr inbounds %struct.UT_hash_table, ptr %1464, i32 0, i32 2
  %1466 = load i32, ptr %1465, align 4, !tbaa !56
  %1467 = add i32 %1466, 1
  store i32 %1467, ptr %1465, align 4, !tbaa !56
  %1468 = load ptr, ptr %33, align 8, !tbaa !5
  %1469 = load ptr, ptr %14, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1469, i32 0, i32 4
  %1471 = getelementptr inbounds %struct.UT_hash_handle, ptr %1470, i32 0, i32 0
  %1472 = load ptr, ptr %1471, align 8, !tbaa !27
  %1473 = getelementptr inbounds %struct.UT_hash_table, ptr %1472, i32 0, i32 0
  store ptr %1468, ptr %1473, align 8, !tbaa !33
  %1474 = load ptr, ptr %14, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1474, i32 0, i32 4
  %1476 = getelementptr inbounds %struct.UT_hash_handle, ptr %1475, i32 0, i32 0
  %1477 = load ptr, ptr %1476, align 8, !tbaa !27
  %1478 = getelementptr inbounds %struct.UT_hash_table, ptr %1477, i32 0, i32 7
  %1479 = load i32, ptr %1478, align 4, !tbaa !66
  %1480 = load ptr, ptr %14, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1480, i32 0, i32 4
  %1482 = getelementptr inbounds %struct.UT_hash_handle, ptr %1481, i32 0, i32 0
  %1483 = load ptr, ptr %1482, align 8, !tbaa !27
  %1484 = getelementptr inbounds %struct.UT_hash_table, ptr %1483, i32 0, i32 3
  %1485 = load i32, ptr %1484, align 8, !tbaa !59
  %1486 = lshr i32 %1485, 1
  %1487 = icmp ugt i32 %1479, %1486
  br i1 %1487, label %1488, label %1496

1488:                                             ; preds = %1447
  %1489 = load ptr, ptr %14, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1489, i32 0, i32 4
  %1491 = getelementptr inbounds %struct.UT_hash_handle, ptr %1490, i32 0, i32 0
  %1492 = load ptr, ptr %1491, align 8, !tbaa !27
  %1493 = getelementptr inbounds %struct.UT_hash_table, ptr %1492, i32 0, i32 8
  %1494 = load i32, ptr %1493, align 8, !tbaa !71
  %1495 = add i32 %1494, 1
  br label %1497

1496:                                             ; preds = %1447
  br label %1497

1497:                                             ; preds = %1496, %1488
  %1498 = phi i32 [ %1495, %1488 ], [ 0, %1496 ]
  %1499 = load ptr, ptr %14, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1499, i32 0, i32 4
  %1501 = getelementptr inbounds %struct.UT_hash_handle, ptr %1500, i32 0, i32 0
  %1502 = load ptr, ptr %1501, align 8, !tbaa !27
  %1503 = getelementptr inbounds %struct.UT_hash_table, ptr %1502, i32 0, i32 8
  store i32 %1498, ptr %1503, align 8, !tbaa !71
  %1504 = load ptr, ptr %14, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1504, i32 0, i32 4
  %1506 = getelementptr inbounds %struct.UT_hash_handle, ptr %1505, i32 0, i32 0
  %1507 = load ptr, ptr %1506, align 8, !tbaa !27
  %1508 = getelementptr inbounds %struct.UT_hash_table, ptr %1507, i32 0, i32 8
  %1509 = load i32, ptr %1508, align 8, !tbaa !71
  %1510 = icmp ugt i32 %1509, 1
  br i1 %1510, label %1511, label %1517

1511:                                             ; preds = %1497
  %1512 = load ptr, ptr %14, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1512, i32 0, i32 4
  %1514 = getelementptr inbounds %struct.UT_hash_handle, ptr %1513, i32 0, i32 0
  %1515 = load ptr, ptr %1514, align 8, !tbaa !27
  %1516 = getelementptr inbounds %struct.UT_hash_table, ptr %1515, i32 0, i32 9
  store i32 1, ptr %1516, align 4, !tbaa !64
  br label %1517

1517:                                             ; preds = %1511, %1497
  br label %1518

1518:                                             ; preds = %1517
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  br label %1519

1519:                                             ; preds = %1518
  br label %1520

1520:                                             ; preds = %1519
  br label %1521

1521:                                             ; preds = %1520, %1265, %1251
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %1522

1522:                                             ; preds = %1521
  br label %1523

1523:                                             ; preds = %1522
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %1524

1524:                                             ; preds = %1523
  br label %1525

1525:                                             ; preds = %1524
  br label %1526

1526:                                             ; preds = %1525
  br label %1527

1527:                                             ; preds = %1526
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %1528

1528:                                             ; preds = %1527
  br label %1529

1529:                                             ; preds = %1528
  br label %1530

1530:                                             ; preds = %1529, %620
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  br label %1531

1531:                                             ; preds = %1530
  %1532 = load i16, ptr %13, align 2, !tbaa !9
  %1533 = add i16 %1532, 1
  store i16 %1533, ptr %13, align 2, !tbaa !9
  br label %111, !llvm.loop !72

1534:                                             ; preds = %131
  br label %1535

1535:                                             ; preds = %1534
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  %1536 = load ptr, ptr %11, align 8, !tbaa !5
  %1537 = icmp ne ptr %1536, null
  br i1 %1537, label %1538, label %1808

1538:                                             ; preds = %1535
  store i32 1, ptr %38, align 4, !tbaa !24
  store i32 1, ptr %36, align 4, !tbaa !24
  %1539 = load ptr, ptr %11, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1539, i32 0, i32 4
  store ptr %1540, ptr %44, align 8, !tbaa !5
  br label %1541

1541:                                             ; preds = %1804, %1538
  %1542 = load i32, ptr %36, align 4, !tbaa !24
  %1543 = icmp ne i32 %1542, 0
  br i1 %1543, label %1544, label %1807

1544:                                             ; preds = %1541
  %1545 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %1545, ptr %41, align 8, !tbaa !5
  store ptr null, ptr %44, align 8, !tbaa !5
  store ptr null, ptr %45, align 8, !tbaa !5
  store i32 0, ptr %37, align 4, !tbaa !24
  br label %1546

1546:                                             ; preds = %1774, %1544
  %1547 = load ptr, ptr %41, align 8, !tbaa !5
  %1548 = icmp ne ptr %1547, null
  br i1 %1548, label %1549, label %1776

1549:                                             ; preds = %1546
  %1550 = load i32, ptr %37, align 4, !tbaa !24
  %1551 = add i32 %1550, 1
  store i32 %1551, ptr %37, align 4, !tbaa !24
  %1552 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1552, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %39, align 4, !tbaa !24
  store i32 0, ptr %35, align 4, !tbaa !24
  br label %1553

1553:                                             ; preds = %1582, %1549
  %1554 = load i32, ptr %35, align 4, !tbaa !24
  %1555 = load i32, ptr %38, align 4, !tbaa !24
  %1556 = icmp ult i32 %1554, %1555
  br i1 %1556, label %1557, label %1585

1557:                                             ; preds = %1553
  %1558 = load i32, ptr %39, align 4, !tbaa !24
  %1559 = add i32 %1558, 1
  store i32 %1559, ptr %39, align 4, !tbaa !24
  %1560 = load ptr, ptr %42, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.UT_hash_handle, ptr %1560, i32 0, i32 2
  %1562 = load ptr, ptr %1561, align 8, !tbaa !58
  %1563 = icmp ne ptr %1562, null
  br i1 %1563, label %1564, label %1575

1564:                                             ; preds = %1557
  %1565 = load ptr, ptr %42, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.UT_hash_handle, ptr %1565, i32 0, i32 2
  %1567 = load ptr, ptr %1566, align 8, !tbaa !58
  %1568 = load ptr, ptr %11, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1568, i32 0, i32 4
  %1570 = getelementptr inbounds %struct.UT_hash_handle, ptr %1569, i32 0, i32 0
  %1571 = load ptr, ptr %1570, align 8, !tbaa !27
  %1572 = getelementptr inbounds %struct.UT_hash_table, ptr %1571, i32 0, i32 5
  %1573 = load i64, ptr %1572, align 8, !tbaa !36
  %1574 = getelementptr inbounds i8, ptr %1567, i64 %1573
  br label %1576

1575:                                             ; preds = %1557
  br label %1576

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

1580:                                             ; preds = %1576
  br label %1585

1581:                                             ; preds = %1576
  br label %1582

1582:                                             ; preds = %1581
  %1583 = load i32, ptr %35, align 4, !tbaa !24
  %1584 = add i32 %1583, 1
  store i32 %1584, ptr %35, align 4, !tbaa !24
  br label %1553, !llvm.loop !73

1585:                                             ; preds = %1580, %1553
  %1586 = load i32, ptr %38, align 4, !tbaa !24
  store i32 %1586, ptr %40, align 4, !tbaa !24
  br label %1587

1587:                                             ; preds = %1772, %1585
  %1588 = load i32, ptr %39, align 4, !tbaa !24
  %1589 = icmp ne i32 %1588, 0
  br i1 %1589, label %1598, label %1590

1590:                                             ; preds = %1587
  %1591 = load i32, ptr %40, align 4, !tbaa !24
  %1592 = icmp ne i32 %1591, 0
  br i1 %1592, label %1593, label %1596

1593:                                             ; preds = %1590
  %1594 = load ptr, ptr %42, align 8, !tbaa !5
  %1595 = icmp ne ptr %1594, null
  br label %1596

1596:                                             ; preds = %1593, %1590
  %1597 = phi i1 [ false, %1590 ], [ %1595, %1593 ]
  br label %1598

1598:                                             ; preds = %1596, %1587
  %1599 = phi i1 [ true, %1587 ], [ %1597, %1596 ]
  br i1 %1599, label %1600, label %1774

1600:                                             ; preds = %1598
  %1601 = load i32, ptr %39, align 4, !tbaa !24
  %1602 = icmp eq i32 %1601, 0
  br i1 %1602, label %1603, label %1625

1603:                                             ; preds = %1600
  %1604 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1604, ptr %43, align 8, !tbaa !5
  %1605 = load ptr, ptr %42, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.UT_hash_handle, ptr %1605, i32 0, i32 2
  %1607 = load ptr, ptr %1606, align 8, !tbaa !58
  %1608 = icmp ne ptr %1607, null
  br i1 %1608, label %1609, label %1620

1609:                                             ; preds = %1603
  %1610 = load ptr, ptr %42, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.UT_hash_handle, ptr %1610, i32 0, i32 2
  %1612 = load ptr, ptr %1611, align 8, !tbaa !58
  %1613 = load ptr, ptr %11, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1613, i32 0, i32 4
  %1615 = getelementptr inbounds %struct.UT_hash_handle, ptr %1614, i32 0, i32 0
  %1616 = load ptr, ptr %1615, align 8, !tbaa !27
  %1617 = getelementptr inbounds %struct.UT_hash_table, ptr %1616, i32 0, i32 5
  %1618 = load i64, ptr %1617, align 8, !tbaa !36
  %1619 = getelementptr inbounds i8, ptr %1612, i64 %1618
  br label %1621

1620:                                             ; preds = %1603
  br label %1621

1621:                                             ; preds = %1620, %1609
  %1622 = phi ptr [ %1619, %1609 ], [ null, %1620 ]
  store ptr %1622, ptr %42, align 8, !tbaa !5
  %1623 = load i32, ptr %40, align 4, !tbaa !24
  %1624 = add i32 %1623, -1
  store i32 %1624, ptr %40, align 4, !tbaa !24
  br label %1728

1625:                                             ; preds = %1600
  %1626 = load i32, ptr %40, align 4, !tbaa !24
  %1627 = icmp eq i32 %1626, 0
  br i1 %1627, label %1631, label %1628

1628:                                             ; preds = %1625
  %1629 = load ptr, ptr %42, align 8, !tbaa !5
  %1630 = icmp eq ptr %1629, null
  br i1 %1630, label %1631, label %1657

1631:                                             ; preds = %1628, %1625
  %1632 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1632, ptr %43, align 8, !tbaa !5
  %1633 = load ptr, ptr %41, align 8, !tbaa !5
  %1634 = icmp ne ptr %1633, null
  br i1 %1634, label %1635, label %1654

1635:                                             ; preds = %1631
  %1636 = load ptr, ptr %41, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.UT_hash_handle, ptr %1636, i32 0, i32 2
  %1638 = load ptr, ptr %1637, align 8, !tbaa !58
  %1639 = icmp ne ptr %1638, null
  br i1 %1639, label %1640, label %1651

1640:                                             ; preds = %1635
  %1641 = load ptr, ptr %41, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.UT_hash_handle, ptr %1641, i32 0, i32 2
  %1643 = load ptr, ptr %1642, align 8, !tbaa !58
  %1644 = load ptr, ptr %11, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1644, i32 0, i32 4
  %1646 = getelementptr inbounds %struct.UT_hash_handle, ptr %1645, i32 0, i32 0
  %1647 = load ptr, ptr %1646, align 8, !tbaa !27
  %1648 = getelementptr inbounds %struct.UT_hash_table, ptr %1647, i32 0, i32 5
  %1649 = load i64, ptr %1648, align 8, !tbaa !36
  %1650 = getelementptr inbounds i8, ptr %1643, i64 %1649
  br label %1652

1651:                                             ; preds = %1635
  br label %1652

1652:                                             ; preds = %1651, %1640
  %1653 = phi ptr [ %1650, %1640 ], [ null, %1651 ]
  store ptr %1653, ptr %41, align 8, !tbaa !5
  br label %1654

1654:                                             ; preds = %1652, %1631
  %1655 = load i32, ptr %39, align 4, !tbaa !24
  %1656 = add i32 %1655, -1
  store i32 %1656, ptr %39, align 4, !tbaa !24
  br label %1727

1657:                                             ; preds = %1628
  %1658 = load ptr, ptr %41, align 8, !tbaa !5
  %1659 = load ptr, ptr %11, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1659, i32 0, i32 4
  %1661 = getelementptr inbounds %struct.UT_hash_handle, ptr %1660, i32 0, i32 0
  %1662 = load ptr, ptr %1661, align 8, !tbaa !27
  %1663 = getelementptr inbounds %struct.UT_hash_table, ptr %1662, i32 0, i32 5
  %1664 = load i64, ptr %1663, align 8, !tbaa !36
  %1665 = sub i64 0, %1664
  %1666 = getelementptr inbounds i8, ptr %1658, i64 %1665
  %1667 = load ptr, ptr %42, align 8, !tbaa !5
  %1668 = load ptr, ptr %11, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1668, i32 0, i32 4
  %1670 = getelementptr inbounds %struct.UT_hash_handle, ptr %1669, i32 0, i32 0
  %1671 = load ptr, ptr %1670, align 8, !tbaa !27
  %1672 = getelementptr inbounds %struct.UT_hash_table, ptr %1671, i32 0, i32 5
  %1673 = load i64, ptr %1672, align 8, !tbaa !36
  %1674 = sub i64 0, %1673
  %1675 = getelementptr inbounds i8, ptr %1667, i64 %1674
  %1676 = call i32 @by_from_id(ptr noundef %1666, ptr noundef %1675)
  %1677 = icmp sle i32 %1676, 0
  br i1 %1677, label %1678, label %1704

1678:                                             ; preds = %1657
  %1679 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1679, ptr %43, align 8, !tbaa !5
  %1680 = load ptr, ptr %41, align 8, !tbaa !5
  %1681 = icmp ne ptr %1680, null
  br i1 %1681, label %1682, label %1701

1682:                                             ; preds = %1678
  %1683 = load ptr, ptr %41, align 8, !tbaa !5
  %1684 = getelementptr inbounds %struct.UT_hash_handle, ptr %1683, i32 0, i32 2
  %1685 = load ptr, ptr %1684, align 8, !tbaa !58
  %1686 = icmp ne ptr %1685, null
  br i1 %1686, label %1687, label %1698

1687:                                             ; preds = %1682
  %1688 = load ptr, ptr %41, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.UT_hash_handle, ptr %1688, i32 0, i32 2
  %1690 = load ptr, ptr %1689, align 8, !tbaa !58
  %1691 = load ptr, ptr %11, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1691, i32 0, i32 4
  %1693 = getelementptr inbounds %struct.UT_hash_handle, ptr %1692, i32 0, i32 0
  %1694 = load ptr, ptr %1693, align 8, !tbaa !27
  %1695 = getelementptr inbounds %struct.UT_hash_table, ptr %1694, i32 0, i32 5
  %1696 = load i64, ptr %1695, align 8, !tbaa !36
  %1697 = getelementptr inbounds i8, ptr %1690, i64 %1696
  br label %1699

1698:                                             ; preds = %1682
  br label %1699

1699:                                             ; preds = %1698, %1687
  %1700 = phi ptr [ %1697, %1687 ], [ null, %1698 ]
  store ptr %1700, ptr %41, align 8, !tbaa !5
  br label %1701

1701:                                             ; preds = %1699, %1678
  %1702 = load i32, ptr %39, align 4, !tbaa !24
  %1703 = add i32 %1702, -1
  store i32 %1703, ptr %39, align 4, !tbaa !24
  br label %1726

1704:                                             ; preds = %1657
  %1705 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1705, ptr %43, align 8, !tbaa !5
  %1706 = load ptr, ptr %42, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.UT_hash_handle, ptr %1706, i32 0, i32 2
  %1708 = load ptr, ptr %1707, align 8, !tbaa !58
  %1709 = icmp ne ptr %1708, null
  br i1 %1709, label %1710, label %1721

1710:                                             ; preds = %1704
  %1711 = load ptr, ptr %42, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.UT_hash_handle, ptr %1711, i32 0, i32 2
  %1713 = load ptr, ptr %1712, align 8, !tbaa !58
  %1714 = load ptr, ptr %11, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1714, i32 0, i32 4
  %1716 = getelementptr inbounds %struct.UT_hash_handle, ptr %1715, i32 0, i32 0
  %1717 = load ptr, ptr %1716, align 8, !tbaa !27
  %1718 = getelementptr inbounds %struct.UT_hash_table, ptr %1717, i32 0, i32 5
  %1719 = load i64, ptr %1718, align 8, !tbaa !36
  %1720 = getelementptr inbounds i8, ptr %1713, i64 %1719
  br label %1722

1721:                                             ; preds = %1704
  br label %1722

1722:                                             ; preds = %1721, %1710
  %1723 = phi ptr [ %1720, %1710 ], [ null, %1721 ]
  store ptr %1723, ptr %42, align 8, !tbaa !5
  %1724 = load i32, ptr %40, align 4, !tbaa !24
  %1725 = add i32 %1724, -1
  store i32 %1725, ptr %40, align 4, !tbaa !24
  br label %1726

1726:                                             ; preds = %1722, %1701
  br label %1727

1727:                                             ; preds = %1726, %1654
  br label %1728

1728:                                             ; preds = %1727, %1621
  %1729 = load ptr, ptr %45, align 8, !tbaa !5
  %1730 = icmp ne ptr %1729, null
  br i1 %1730, label %1731, label %1749

1731:                                             ; preds = %1728
  %1732 = load ptr, ptr %43, align 8, !tbaa !5
  %1733 = icmp ne ptr %1732, null
  br i1 %1733, label %1734, label %1744

1734:                                             ; preds = %1731
  %1735 = load ptr, ptr %43, align 8, !tbaa !5
  %1736 = load ptr, ptr %11, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1736, i32 0, i32 4
  %1738 = getelementptr inbounds %struct.UT_hash_handle, ptr %1737, i32 0, i32 0
  %1739 = load ptr, ptr %1738, align 8, !tbaa !27
  %1740 = getelementptr inbounds %struct.UT_hash_table, ptr %1739, i32 0, i32 5
  %1741 = load i64, ptr %1740, align 8, !tbaa !36
  %1742 = sub i64 0, %1741
  %1743 = getelementptr inbounds i8, ptr %1735, i64 %1742
  br label %1745

1744:                                             ; preds = %1731
  br label %1745

1745:                                             ; preds = %1744, %1734
  %1746 = phi ptr [ %1743, %1734 ], [ null, %1744 ]
  %1747 = load ptr, ptr %45, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.UT_hash_handle, ptr %1747, i32 0, i32 2
  store ptr %1746, ptr %1748, align 8, !tbaa !58
  br label %1751

1749:                                             ; preds = %1728
  %1750 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1750, ptr %44, align 8, !tbaa !5
  br label %1751

1751:                                             ; preds = %1749, %1745
  %1752 = load ptr, ptr %43, align 8, !tbaa !5
  %1753 = icmp ne ptr %1752, null
  br i1 %1753, label %1754, label %1772

1754:                                             ; preds = %1751
  %1755 = load ptr, ptr %45, align 8, !tbaa !5
  %1756 = icmp ne ptr %1755, null
  br i1 %1756, label %1757, label %1767

1757:                                             ; preds = %1754
  %1758 = load ptr, ptr %45, align 8, !tbaa !5
  %1759 = load ptr, ptr %11, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1759, i32 0, i32 4
  %1761 = getelementptr inbounds %struct.UT_hash_handle, ptr %1760, i32 0, i32 0
  %1762 = load ptr, ptr %1761, align 8, !tbaa !27
  %1763 = getelementptr inbounds %struct.UT_hash_table, ptr %1762, i32 0, i32 5
  %1764 = load i64, ptr %1763, align 8, !tbaa !36
  %1765 = sub i64 0, %1764
  %1766 = getelementptr inbounds i8, ptr %1758, i64 %1765
  br label %1768

1767:                                             ; preds = %1754
  br label %1768

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

1772:                                             ; preds = %1768, %1751
  %1773 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1773, ptr %45, align 8, !tbaa !5
  br label %1587, !llvm.loop !75

1774:                                             ; preds = %1598
  %1775 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1775, ptr %41, align 8, !tbaa !5
  br label %1546, !llvm.loop !76

1776:                                             ; preds = %1546
  %1777 = load ptr, ptr %45, align 8, !tbaa !5
  %1778 = icmp ne ptr %1777, null
  br i1 %1778, label %1779, label %1782

1779:                                             ; preds = %1776
  %1780 = load ptr, ptr %45, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.UT_hash_handle, ptr %1780, i32 0, i32 2
  store ptr null, ptr %1781, align 8, !tbaa !58
  br label %1782

1782:                                             ; preds = %1779, %1776
  %1783 = load i32, ptr %37, align 4, !tbaa !24
  %1784 = icmp ule i32 %1783, 1
  br i1 %1784, label %1785, label %1804

1785:                                             ; preds = %1782
  store i32 0, ptr %36, align 4, !tbaa !24
  %1786 = load ptr, ptr %45, align 8, !tbaa !5
  %1787 = load ptr, ptr %11, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1787, i32 0, i32 4
  %1789 = getelementptr inbounds %struct.UT_hash_handle, ptr %1788, i32 0, i32 0
  %1790 = load ptr, ptr %1789, align 8, !tbaa !27
  %1791 = getelementptr inbounds %struct.UT_hash_table, ptr %1790, i32 0, i32 4
  store ptr %1786, ptr %1791, align 8, !tbaa !55
  br label %1792

1792:                                             ; preds = %1785
  %1793 = load ptr, ptr %44, align 8, !tbaa !5
  %1794 = load ptr, ptr %11, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1794, i32 0, i32 4
  %1796 = getelementptr inbounds %struct.UT_hash_handle, ptr %1795, i32 0, i32 0
  %1797 = load ptr, ptr %1796, align 8, !tbaa !27
  %1798 = getelementptr inbounds %struct.UT_hash_table, ptr %1797, i32 0, i32 5
  %1799 = load i64, ptr %1798, align 8, !tbaa !36
  %1800 = sub i64 0, %1799
  %1801 = getelementptr inbounds i8, ptr %1793, i64 %1800
  store ptr %1801, ptr %11, align 8, !tbaa !5
  br label %1802

1802:                                             ; preds = %1792
  br label %1803

1803:                                             ; preds = %1802
  br label %1804

1804:                                             ; preds = %1803, %1782
  %1805 = load i32, ptr %38, align 4, !tbaa !24
  %1806 = mul i32 %1805, 2
  store i32 %1806, ptr %38, align 4, !tbaa !24
  br label %1541, !llvm.loop !77

1807:                                             ; preds = %1541
  br label %1808

1808:                                             ; preds = %1807, %1535
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1809

1809:                                             ; preds = %1808
  br label %1810

1810:                                             ; preds = %1809
  %1811 = load ptr, ptr %11, align 8, !tbaa !5
  %1812 = icmp ne ptr %1811, null
  br i1 %1812, label %1813, label %1820

1813:                                             ; preds = %1810
  %1814 = load ptr, ptr %11, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1814, i32 0, i32 4
  %1816 = getelementptr inbounds %struct.UT_hash_handle, ptr %1815, i32 0, i32 0
  %1817 = load ptr, ptr %1816, align 8, !tbaa !27
  %1818 = getelementptr inbounds %struct.UT_hash_table, ptr %1817, i32 0, i32 3
  %1819 = load i32, ptr %1818, align 8, !tbaa !59
  br label %1821

1820:                                             ; preds = %1810
  br label %1821

1821:                                             ; preds = %1820, %1813
  %1822 = phi i32 [ %1819, %1813 ], [ 0, %1820 ]
  %1823 = load ptr, ptr %12, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.otl_Coverage, ptr %1823, i32 0, i32 0
  %1825 = load i16, ptr %1824, align 8, !tbaa !18
  %1826 = zext i16 %1825 to i32
  %1827 = icmp ne i32 %1822, %1826
  br i1 %1827, label %1848, label %1828

1828:                                             ; preds = %1821
  %1829 = load ptr, ptr %11, align 8, !tbaa !5
  %1830 = icmp ne ptr %1829, null
  br i1 %1830, label %1831, label %1838

1831:                                             ; preds = %1828
  %1832 = load ptr, ptr %11, 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 0
  %1835 = load ptr, ptr %1834, align 8, !tbaa !27
  %1836 = getelementptr inbounds %struct.UT_hash_table, ptr %1835, i32 0, i32 3
  %1837 = load i32, ptr %1836, align 8, !tbaa !59
  br label %1839

1838:                                             ; preds = %1828
  br label %1839

1839:                                             ; preds = %1838, %1831
  %1840 = phi i32 [ %1837, %1831 ], [ 0, %1838 ]
  %1841 = load ptr, ptr %9, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %1841, i32 0, i32 3
  %1843 = load ptr, ptr %1842, align 8, !tbaa !16
  %1844 = getelementptr inbounds %struct.otl_Coverage, ptr %1843, i32 0, i32 0
  %1845 = load i16, ptr %1844, align 8, !tbaa !18
  %1846 = zext i16 %1845 to i32
  %1847 = icmp ne i32 %1840, %1846
  br i1 %1847, label %1848, label %1859

1848:                                             ; preds = %1839, %1821
  %1849 = load ptr, ptr %8, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.otfcc_Options, ptr %1849, i32 0, i32 24
  %1851 = load ptr, ptr %1850, align 8, !tbaa !42
  %1852 = getelementptr inbounds %struct.otfcc_ILogger, ptr %1851, i32 0, i32 6
  %1853 = load ptr, ptr %1852, align 8, !tbaa !45
  %1854 = load ptr, ptr %8, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.otfcc_Options, ptr %1854, i32 0, i32 24
  %1856 = load ptr, ptr %1855, align 8, !tbaa !42
  %1857 = call ptr @sdsempty()
  %1858 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %1857, ptr noundef @.str.1)
  call void %1853(ptr noundef %1856, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %1858)
  br label %1859

1859:                                             ; preds = %1848, %1839
  %1860 = load ptr, ptr %11, align 8, !tbaa !5
  %1861 = icmp ne ptr %1860, null
  br i1 %1861, label %1862, label %1869

1862:                                             ; preds = %1859
  %1863 = load ptr, ptr %11, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1863, i32 0, i32 4
  %1865 = getelementptr inbounds %struct.UT_hash_handle, ptr %1864, i32 0, i32 0
  %1866 = load ptr, ptr %1865, align 8, !tbaa !27
  %1867 = getelementptr inbounds %struct.UT_hash_table, ptr %1866, i32 0, i32 3
  %1868 = load i32, ptr %1867, align 8, !tbaa !59
  br label %1870

1869:                                             ; preds = %1859
  br label %1870

1870:                                             ; preds = %1869, %1862
  %1871 = phi i32 [ %1868, %1862 ], [ 0, %1869 ]
  %1872 = trunc i32 %1871 to i16
  %1873 = load ptr, ptr %12, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.otl_Coverage, ptr %1873, i32 0, i32 0
  store i16 %1872, ptr %1874, align 8, !tbaa !18
  %1875 = load ptr, ptr %11, align 8, !tbaa !5
  %1876 = icmp ne ptr %1875, null
  br i1 %1876, label %1877, label %1884

1877:                                             ; preds = %1870
  %1878 = load ptr, ptr %11, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1878, i32 0, i32 4
  %1880 = getelementptr inbounds %struct.UT_hash_handle, ptr %1879, i32 0, i32 0
  %1881 = load ptr, ptr %1880, align 8, !tbaa !27
  %1882 = getelementptr inbounds %struct.UT_hash_table, ptr %1881, i32 0, i32 3
  %1883 = load i32, ptr %1882, align 8, !tbaa !59
  br label %1885

1884:                                             ; preds = %1870
  br label %1885

1885:                                             ; preds = %1884, %1877
  %1886 = phi i32 [ %1883, %1877 ], [ 0, %1884 ]
  %1887 = trunc i32 %1886 to i16
  %1888 = load ptr, ptr %9, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %1888, i32 0, i32 3
  %1890 = load ptr, ptr %1889, align 8, !tbaa !16
  %1891 = getelementptr inbounds %struct.otl_Coverage, ptr %1890, i32 0, i32 0
  store i16 %1887, ptr %1891, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 2, ptr %48) #10
  store i16 0, ptr %48, align 2, !tbaa !9
  %1892 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1892, ptr %46, align 8, !tbaa !5
  %1893 = load ptr, ptr %11, align 8, !tbaa !5
  %1894 = icmp ne ptr %1893, null
  br i1 %1894, label %1895, label %1900

1895:                                             ; preds = %1885
  %1896 = load ptr, ptr %11, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1896, i32 0, i32 4
  %1898 = getelementptr inbounds %struct.UT_hash_handle, ptr %1897, i32 0, i32 2
  %1899 = load ptr, ptr %1898, align 8, !tbaa !53
  br label %1901

1900:                                             ; preds = %1885
  br label %1901

1901:                                             ; preds = %1900, %1895
  %1902 = phi ptr [ %1899, %1895 ], [ null, %1900 ]
  store ptr %1902, ptr %47, align 8, !tbaa !5
  br label %1903

1903:                                             ; preds = %2134, %1901
  %1904 = load ptr, ptr %46, align 8, !tbaa !5
  %1905 = icmp ne ptr %1904, null
  br i1 %1905, label %1906, label %2136

1906:                                             ; preds = %1903
  %1907 = load ptr, ptr %12, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.otl_Coverage, ptr %1907, i32 0, i32 2
  %1909 = load ptr, ptr %1908, align 8, !tbaa !21
  %1910 = load i16, ptr %48, align 2, !tbaa !9
  %1911 = zext i16 %1910 to i64
  %1912 = getelementptr inbounds %struct.otfcc_Handle, ptr %1909, i64 %1911
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #10
  %1913 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !78
  %1914 = load ptr, ptr %46, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1914, i32 0, i32 0
  %1916 = load i32, ptr %1915, align 8, !tbaa !48
  %1917 = trunc i32 %1916 to i16
  %1918 = load ptr, ptr %46, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1918, i32 0, i32 1
  %1920 = load ptr, ptr %1919, align 8, !tbaa !50
  %1921 = call { i64, ptr } %1913(i16 noundef zeroext %1917, ptr noundef %1920)
  %1922 = getelementptr inbounds { i64, ptr }, ptr %49, i32 0, i32 0
  %1923 = extractvalue { i64, ptr } %1921, 0
  store i64 %1923, ptr %1922, align 8
  %1924 = getelementptr inbounds { i64, ptr }, ptr %49, i32 0, i32 1
  %1925 = extractvalue { i64, ptr } %1921, 1
  store ptr %1925, ptr %1924, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1912, ptr align 8 %49, i64 16, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #10
  %1926 = load ptr, ptr %9, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.subtable_gsub_reverse, ptr %1926, i32 0, i32 3
  %1928 = load ptr, ptr %1927, align 8, !tbaa !16
  %1929 = getelementptr inbounds %struct.otl_Coverage, ptr %1928, i32 0, i32 2
  %1930 = load ptr, ptr %1929, align 8, !tbaa !21
  %1931 = load i16, ptr %48, align 2, !tbaa !9
  %1932 = zext i16 %1931 to i64
  %1933 = getelementptr inbounds %struct.otfcc_Handle, ptr %1930, i64 %1932
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #10
  %1934 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 10), align 8, !tbaa !78
  %1935 = load ptr, ptr %46, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1935, i32 0, i32 2
  %1937 = load i32, ptr %1936, align 8, !tbaa !49
  %1938 = trunc i32 %1937 to i16
  %1939 = load ptr, ptr %46, align 8, !tbaa !5
  %1940 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1939, i32 0, i32 3
  %1941 = load ptr, ptr %1940, align 8, !tbaa !51
  %1942 = call { i64, ptr } %1934(i16 noundef zeroext %1938, ptr noundef %1941)
  %1943 = getelementptr inbounds { i64, ptr }, ptr %50, i32 0, i32 0
  %1944 = extractvalue { i64, ptr } %1942, 0
  store i64 %1944, ptr %1943, align 8
  %1945 = getelementptr inbounds { i64, ptr }, ptr %50, i32 0, i32 1
  %1946 = extractvalue { i64, ptr } %1942, 1
  store ptr %1946, ptr %1945, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1933, ptr align 8 %50, i64 16, i1 false), !tbaa.struct !80
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #10
  %1947 = load i16, ptr %48, align 2, !tbaa !9
  %1948 = add i16 %1947, 1
  store i16 %1948, ptr %48, align 2, !tbaa !9
  br label %1949

1949:                                             ; preds = %1906
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %1950 = load ptr, ptr %46, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1950, i32 0, i32 4
  store ptr %1951, ptr %51, align 8, !tbaa !5
  %1952 = load ptr, ptr %51, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.UT_hash_handle, ptr %1952, i32 0, i32 1
  %1954 = load ptr, ptr %1953, align 8, !tbaa !74
  %1955 = icmp eq ptr %1954, null
  br i1 %1955, label %1956, label %1972

1956:                                             ; preds = %1949
  %1957 = load ptr, ptr %51, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.UT_hash_handle, ptr %1957, i32 0, i32 2
  %1959 = load ptr, ptr %1958, align 8, !tbaa !58
  %1960 = icmp eq ptr %1959, null
  br i1 %1960, label %1961, label %1972

1961:                                             ; preds = %1956
  %1962 = load ptr, ptr %11, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1962, i32 0, i32 4
  %1964 = getelementptr inbounds %struct.UT_hash_handle, ptr %1963, i32 0, i32 0
  %1965 = load ptr, ptr %1964, align 8, !tbaa !27
  %1966 = getelementptr inbounds %struct.UT_hash_table, ptr %1965, i32 0, i32 0
  %1967 = load ptr, ptr %1966, align 8, !tbaa !33
  call void @free(ptr noundef %1967) #10
  %1968 = load ptr, ptr %11, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1968, i32 0, i32 4
  %1970 = getelementptr inbounds %struct.UT_hash_handle, ptr %1969, i32 0, i32 0
  %1971 = load ptr, ptr %1970, align 8, !tbaa !27
  call void @free(ptr noundef %1971) #10
  store ptr null, ptr %11, align 8, !tbaa !5
  br label %2120

1972:                                             ; preds = %1956, %1949
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %1973 = load ptr, ptr %51, align 8, !tbaa !5
  %1974 = load ptr, ptr %11, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1974, i32 0, i32 4
  %1976 = getelementptr inbounds %struct.UT_hash_handle, ptr %1975, i32 0, i32 0
  %1977 = load ptr, ptr %1976, align 8, !tbaa !27
  %1978 = getelementptr inbounds %struct.UT_hash_table, ptr %1977, i32 0, i32 4
  %1979 = load ptr, ptr %1978, align 8, !tbaa !55
  %1980 = icmp eq ptr %1973, %1979
  br i1 %1980, label %1981, label %1997

1981:                                             ; preds = %1972
  %1982 = load ptr, ptr %51, align 8, !tbaa !5
  %1983 = getelementptr inbounds %struct.UT_hash_handle, ptr %1982, i32 0, i32 1
  %1984 = load ptr, ptr %1983, align 8, !tbaa !74
  %1985 = load ptr, ptr %11, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1985, i32 0, i32 4
  %1987 = getelementptr inbounds %struct.UT_hash_handle, ptr %1986, i32 0, i32 0
  %1988 = load ptr, ptr %1987, align 8, !tbaa !27
  %1989 = getelementptr inbounds %struct.UT_hash_table, ptr %1988, i32 0, i32 5
  %1990 = load i64, ptr %1989, align 8, !tbaa !36
  %1991 = getelementptr inbounds i8, ptr %1984, i64 %1990
  %1992 = load ptr, ptr %11, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %1992, i32 0, i32 4
  %1994 = getelementptr inbounds %struct.UT_hash_handle, ptr %1993, i32 0, i32 0
  %1995 = load ptr, ptr %1994, align 8, !tbaa !27
  %1996 = getelementptr inbounds %struct.UT_hash_table, ptr %1995, i32 0, i32 4
  store ptr %1991, ptr %1996, align 8, !tbaa !55
  br label %1997

1997:                                             ; preds = %1981, %1972
  %1998 = load ptr, ptr %51, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.UT_hash_handle, ptr %1998, i32 0, i32 1
  %2000 = load ptr, ptr %1999, align 8, !tbaa !74
  %2001 = icmp ne ptr %2000, null
  br i1 %2001, label %2002, label %2017

2002:                                             ; preds = %1997
  %2003 = load ptr, ptr %51, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.UT_hash_handle, ptr %2003, i32 0, i32 2
  %2005 = load ptr, ptr %2004, align 8, !tbaa !58
  %2006 = load ptr, ptr %51, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.UT_hash_handle, ptr %2006, i32 0, i32 1
  %2008 = load ptr, ptr %2007, align 8, !tbaa !74
  %2009 = load ptr, ptr %11, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2009, i32 0, i32 4
  %2011 = getelementptr inbounds %struct.UT_hash_handle, ptr %2010, i32 0, i32 0
  %2012 = load ptr, ptr %2011, align 8, !tbaa !27
  %2013 = getelementptr inbounds %struct.UT_hash_table, ptr %2012, i32 0, i32 5
  %2014 = load i64, ptr %2013, align 8, !tbaa !36
  %2015 = getelementptr inbounds i8, ptr %2008, i64 %2014
  %2016 = getelementptr inbounds %struct.UT_hash_handle, ptr %2015, i32 0, i32 2
  store ptr %2005, ptr %2016, align 8, !tbaa !58
  br label %2024

2017:                                             ; preds = %1997
  br label %2018

2018:                                             ; preds = %2017
  %2019 = load ptr, ptr %51, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.UT_hash_handle, ptr %2019, i32 0, i32 2
  %2021 = load ptr, ptr %2020, align 8, !tbaa !58
  store ptr %2021, ptr %11, align 8, !tbaa !5
  br label %2022

2022:                                             ; preds = %2018
  br label %2023

2023:                                             ; preds = %2022
  br label %2024

2024:                                             ; preds = %2023, %2002
  %2025 = load ptr, ptr %51, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.UT_hash_handle, ptr %2025, i32 0, i32 2
  %2027 = load ptr, ptr %2026, align 8, !tbaa !58
  %2028 = icmp ne ptr %2027, null
  br i1 %2028, label %2029, label %2044

2029:                                             ; preds = %2024
  %2030 = load ptr, ptr %51, align 8, !tbaa !5
  %2031 = getelementptr inbounds %struct.UT_hash_handle, ptr %2030, i32 0, i32 1
  %2032 = load ptr, ptr %2031, align 8, !tbaa !74
  %2033 = load ptr, ptr %51, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.UT_hash_handle, ptr %2033, i32 0, i32 2
  %2035 = load ptr, ptr %2034, align 8, !tbaa !58
  %2036 = load ptr, ptr %11, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2036, i32 0, i32 4
  %2038 = getelementptr inbounds %struct.UT_hash_handle, ptr %2037, i32 0, i32 0
  %2039 = load ptr, ptr %2038, align 8, !tbaa !27
  %2040 = getelementptr inbounds %struct.UT_hash_table, ptr %2039, i32 0, i32 5
  %2041 = load i64, ptr %2040, align 8, !tbaa !36
  %2042 = getelementptr inbounds i8, ptr %2035, i64 %2041
  %2043 = getelementptr inbounds %struct.UT_hash_handle, ptr %2042, i32 0, i32 1
  store ptr %2032, ptr %2043, align 8, !tbaa !74
  br label %2044

2044:                                             ; preds = %2029, %2024
  br label %2045

2045:                                             ; preds = %2044
  %2046 = load ptr, ptr %51, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.UT_hash_handle, ptr %2046, i32 0, i32 7
  %2048 = load i32, ptr %2047, align 4, !tbaa !68
  %2049 = load ptr, ptr %11, align 8, !tbaa !5
  %2050 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2049, i32 0, i32 4
  %2051 = getelementptr inbounds %struct.UT_hash_handle, ptr %2050, i32 0, i32 0
  %2052 = load ptr, ptr %2051, align 8, !tbaa !27
  %2053 = getelementptr inbounds %struct.UT_hash_table, ptr %2052, i32 0, i32 1
  %2054 = load i32, ptr %2053, align 8, !tbaa !30
  %2055 = sub i32 %2054, 1
  %2056 = and i32 %2048, %2055
  store i32 %2056, ptr %52, align 4, !tbaa !24
  br label %2057

2057:                                             ; preds = %2045
  br label %2058

2058:                                             ; preds = %2057
  br label %2059

2059:                                             ; preds = %2058
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %2060 = load ptr, ptr %11, align 8, !tbaa !5
  %2061 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2060, i32 0, i32 4
  %2062 = getelementptr inbounds %struct.UT_hash_handle, ptr %2061, i32 0, i32 0
  %2063 = load ptr, ptr %2062, align 8, !tbaa !27
  %2064 = getelementptr inbounds %struct.UT_hash_table, ptr %2063, i32 0, i32 0
  %2065 = load ptr, ptr %2064, align 8, !tbaa !33
  %2066 = load i32, ptr %52, align 4, !tbaa !24
  %2067 = zext i32 %2066 to i64
  %2068 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2065, i64 %2067
  store ptr %2068, ptr %53, align 8, !tbaa !5
  %2069 = load ptr, ptr %53, align 8, !tbaa !5
  %2070 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2069, i32 0, i32 1
  %2071 = load i32, ptr %2070, align 8, !tbaa !60
  %2072 = add i32 %2071, -1
  store i32 %2072, ptr %2070, align 8, !tbaa !60
  %2073 = load ptr, ptr %53, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2073, i32 0, i32 0
  %2075 = load ptr, ptr %2074, align 8, !tbaa !34
  %2076 = load ptr, ptr %51, align 8, !tbaa !5
  %2077 = icmp eq ptr %2075, %2076
  br i1 %2077, label %2078, label %2084

2078:                                             ; preds = %2059
  %2079 = load ptr, ptr %51, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.UT_hash_handle, ptr %2079, i32 0, i32 4
  %2081 = load ptr, ptr %2080, align 8, !tbaa !67
  %2082 = load ptr, ptr %53, align 8, !tbaa !5
  %2083 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2082, i32 0, i32 0
  store ptr %2081, ptr %2083, align 8, !tbaa !34
  br label %2084

2084:                                             ; preds = %2078, %2059
  %2085 = load ptr, ptr %51, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.UT_hash_handle, ptr %2085, i32 0, i32 3
  %2087 = load ptr, ptr %2086, align 8, !tbaa !62
  %2088 = icmp ne ptr %2087, null
  br i1 %2088, label %2089, label %2097

2089:                                             ; preds = %2084
  %2090 = load ptr, ptr %51, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct.UT_hash_handle, ptr %2090, i32 0, i32 4
  %2092 = load ptr, ptr %2091, align 8, !tbaa !67
  %2093 = load ptr, ptr %51, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.UT_hash_handle, ptr %2093, i32 0, i32 3
  %2095 = load ptr, ptr %2094, align 8, !tbaa !62
  %2096 = getelementptr inbounds %struct.UT_hash_handle, ptr %2095, i32 0, i32 4
  store ptr %2092, ptr %2096, align 8, !tbaa !67
  br label %2097

2097:                                             ; preds = %2089, %2084
  %2098 = load ptr, ptr %51, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.UT_hash_handle, ptr %2098, i32 0, i32 4
  %2100 = load ptr, ptr %2099, align 8, !tbaa !67
  %2101 = icmp ne ptr %2100, null
  br i1 %2101, label %2102, label %2110

2102:                                             ; preds = %2097
  %2103 = load ptr, ptr %51, align 8, !tbaa !5
  %2104 = getelementptr inbounds %struct.UT_hash_handle, ptr %2103, i32 0, i32 3
  %2105 = load ptr, ptr %2104, align 8, !tbaa !62
  %2106 = load ptr, ptr %51, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct.UT_hash_handle, ptr %2106, i32 0, i32 4
  %2108 = load ptr, ptr %2107, align 8, !tbaa !67
  %2109 = getelementptr inbounds %struct.UT_hash_handle, ptr %2108, i32 0, i32 3
  store ptr %2105, ptr %2109, align 8, !tbaa !62
  br label %2110

2110:                                             ; preds = %2102, %2097
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %2111

2111:                                             ; preds = %2110
  br label %2112

2112:                                             ; preds = %2111
  %2113 = load ptr, ptr %11, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2113, i32 0, i32 4
  %2115 = getelementptr inbounds %struct.UT_hash_handle, ptr %2114, i32 0, i32 0
  %2116 = load ptr, ptr %2115, align 8, !tbaa !27
  %2117 = getelementptr inbounds %struct.UT_hash_table, ptr %2116, i32 0, i32 3
  %2118 = load i32, ptr %2117, align 8, !tbaa !59
  %2119 = add i32 %2118, -1
  store i32 %2119, ptr %2117, align 8, !tbaa !59
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %2120

2120:                                             ; preds = %2112, %1961
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  br label %2121

2121:                                             ; preds = %2120
  br label %2122

2122:                                             ; preds = %2121
  %2123 = load ptr, ptr %46, align 8, !tbaa !5
  call void @free(ptr noundef %2123) #10
  store ptr null, ptr %46, align 8, !tbaa !5
  br label %2124

2124:                                             ; preds = %2122
  %2125 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %2125, ptr %46, align 8, !tbaa !5
  %2126 = load ptr, ptr %47, align 8, !tbaa !5
  %2127 = icmp ne ptr %2126, null
  br i1 %2127, label %2128, label %2133

2128:                                             ; preds = %2124
  %2129 = load ptr, ptr %47, align 8, !tbaa !5
  %2130 = getelementptr inbounds %struct.gsub_single_map_hash, ptr %2129, i32 0, i32 4
  %2131 = getelementptr inbounds %struct.UT_hash_handle, ptr %2130, i32 0, i32 2
  %2132 = load ptr, ptr %2131, align 8, !tbaa !53
  br label %2134

2133:                                             ; preds = %2124
  br label %2134

2134:                                             ; preds = %2133, %2128
  %2135 = phi ptr [ %2132, %2128 ], [ null, %2133 ]
  store ptr %2135, ptr %47, align 8, !tbaa !5
  br label %1903, !llvm.loop !81

2136:                                             ; preds = %1903
  call void @llvm.lifetime.end.p0(i64 2, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  ret i1 false
}

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

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

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

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

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

declare ptr @sdsempty() #2

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

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

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

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

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { nounwind allocsize(0) }
attributes #13 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"short", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 2, !6, i64 8, !6, i64 16}
!13 = !{!12, !6, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!12, !6, i64 16}
!17 = !{!12, !10, i64 2}
!18 = !{!19, !10, i64 0}
!19 = !{!"", !10, i64 0, !20, i64 4, !6, i64 8}
!20 = !{!"int", !7, i64 0}
!21 = !{!19, !6, i64 8}
!22 = !{!23, !10, i64 4}
!23 = !{!"otfcc_Handle", !20, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!20, !20, i64 0}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !15}
!27 = !{!28, !6, i64 32}
!28 = !{!"", !20, i64 0, !6, i64 8, !20, i64 16, !6, i64 24, !29, i64 32}
!29 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !20, i64 48, !20, i64 52}
!30 = !{!31, !20, i64 8}
!31 = !{!"UT_hash_table", !6, i64 0, !20, i64 8, !20, i64 12, !20, i64 16, !6, i64 24, !32, i64 32, !20, i64 40, !20, i64 44, !20, i64 48, !20, i64 52, !20, i64 56}
!32 = !{!"long", !7, i64 0}
!33 = !{!31, !6, i64 0}
!34 = !{!35, !6, i64 0}
!35 = !{!"UT_hash_bucket", !6, i64 0, !20, i64 8, !20, i64 12}
!36 = !{!31, !32, i64 32}
!37 = !{!28, !20, i64 84}
!38 = !{!28, !20, i64 80}
!39 = !{!28, !6, i64 72}
!40 = !{!28, !6, i64 64}
!41 = distinct !{!41, !15}
!42 = !{!43, !6, i64 32}
!43 = !{!"", !44, i64 0, !44, i64 1, !44, i64 2, !44, i64 3, !44, i64 4, !44, i64 5, !44, i64 6, !44, i64 7, !44, i64 8, !44, i64 9, !44, i64 10, !44, i64 11, !44, i64 12, !44, i64 13, !44, i64 14, !44, i64 15, !44, i64 16, !44, i64 17, !44, i64 18, !44, i64 19, !44, i64 20, !44, i64 21, !44, i64 22, !6, i64 24, !6, i64 32}
!44 = !{!"_Bool", !7, i64 0}
!45 = !{!46, !6, i64 48}
!46 = !{!"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}
!47 = !{!23, !6, i64 8}
!48 = !{!28, !20, i64 0}
!49 = !{!28, !20, i64 16}
!50 = !{!28, !6, i64 8}
!51 = !{!28, !6, i64 24}
!52 = distinct !{!52, !15}
!53 = !{!28, !6, i64 48}
!54 = !{!28, !6, i64 40}
!55 = !{!31, !6, i64 24}
!56 = !{!31, !20, i64 12}
!57 = !{!31, !20, i64 56}
!58 = !{!29, !6, i64 16}
!59 = !{!31, !20, i64 16}
!60 = !{!35, !20, i64 8}
!61 = !{!28, !6, i64 56}
!62 = !{!29, !6, i64 24}
!63 = !{!35, !20, i64 12}
!64 = !{!31, !20, i64 52}
!65 = !{!31, !20, i64 40}
!66 = !{!31, !20, i64 44}
!67 = !{!29, !6, i64 32}
!68 = !{!29, !20, i64 52}
!69 = distinct !{!69, !15}
!70 = distinct !{!70, !15}
!71 = !{!31, !20, i64 48}
!72 = distinct !{!72, !15}
!73 = distinct !{!73, !15}
!74 = !{!29, !6, i64 8}
!75 = distinct !{!75, !15}
!76 = distinct !{!76, !15}
!77 = distinct !{!77, !15}
!78 = !{!79, !6, i64 80}
!79 = !{!"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}
!80 = !{i64 0, i64 4, !24, i64 4, i64 2, !9, i64 8, i64 8, !5}
!81 = distinct !{!81, !15}


; 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_HandlePackage = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@.str = external hidden unnamed_addr constant [69 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef zeroext i1 @consolidate_gsub_reverse(ptr noundef %0, ptr nocapture noundef readnone %1, ptr nocapture noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = alloca i32, align 4
  %6 = load i16, ptr %2, align 8, !tbaa !5
  %.not877 = icmp eq i16 %6, 0
  br i1 %.not877, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %4
  %7 = getelementptr inbounds i8, ptr %2, i64 8
  br label %13

._crit_edge:                                      ; preds = %13, %4
  %8 = getelementptr inbounds i8, ptr %2, i64 16
  %9 = load ptr, ptr %8, align 8, !tbaa !11
  tail call void @fontop_consolidateCoverage(ptr noundef %0, ptr noundef %9, ptr noundef %3) #10
  %10 = getelementptr inbounds i8, ptr %2, i64 2
  %11 = load i16, ptr %10, align 2, !tbaa !12
  %12 = load i16, ptr %2, align 8, !tbaa !5
  %.not = icmp ult i16 %11, %12
  br i1 %.not, label %22, label %20

13:                                               ; preds = %.lr.ph, %13
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %13 ]
  %14 = load ptr, ptr %7, align 8, !tbaa !13
  %15 = getelementptr inbounds ptr, ptr %14, i64 %indvars.iv
  %16 = load ptr, ptr %15, align 8, !tbaa !14
  tail call void @fontop_consolidateCoverage(ptr noundef %0, ptr noundef %16, ptr noundef %3) #10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %17 = load i16, ptr %2, align 8, !tbaa !5
  %18 = zext i16 %17 to i64
  %19 = icmp ult i64 %indvars.iv.next, %18
  br i1 %19, label %13, label %._crit_edge, !llvm.loop !15

20:                                               ; preds = %._crit_edge
  %21 = add i16 %12, -1
  store i16 %21, ptr %10, align 2, !tbaa !12
  br label %22

22:                                               ; preds = %20, %._crit_edge
  %23 = phi i16 [ %21, %20 ], [ %11, %._crit_edge ]
  %24 = getelementptr inbounds i8, ptr %2, i64 8
  %25 = load ptr, ptr %24, align 8, !tbaa !13
  %26 = zext i16 %23 to i64
  %27 = getelementptr inbounds ptr, ptr %25, i64 %26
  %28 = load ptr, ptr %27, align 8, !tbaa !14
  %29 = load i16, ptr %28, align 8, !tbaa !17
  %.not878 = icmp eq i16 %29, 0
  br i1 %.not878, label %.thread776, label %.lr.ph843

.lr.ph843:                                        ; preds = %22
  %30 = getelementptr inbounds i8, ptr %28, i64 8
  %31 = getelementptr inbounds i8, ptr %3, i64 32
  %32 = load ptr, ptr %8, align 8, !tbaa !11
  %33 = load i16, ptr %32, align 8, !tbaa !17
  %.not955 = icmp eq i16 %33, 0
  br i1 %.not955, label %.critedge, label %.lr.ph948

34:                                               ; preds = %309
  %35 = load ptr, ptr %8, align 8, !tbaa !11
  %36 = load i16, ptr %35, align 8, !tbaa !17
  %37 = zext i16 %36 to i64
  %38 = icmp ult i64 %indvars.iv.next887, %37
  br i1 %38, label %.lr.ph948, label %.critedge.loopexit, !llvm.loop !20

.critedge.loopexit:                               ; preds = %34, %309
  %39 = icmp eq i16 %310, 0
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %.lr.ph843
  %.not709769 = phi i1 [ false, %.lr.ph843 ], [ %39, %.critedge.loopexit ]
  %.0594.lcssa = phi ptr [ null, %.lr.ph843 ], [ %.2, %.critedge.loopexit ]
  %.not706 = icmp eq ptr %.0594.lcssa, null
  br i1 %.not706, label %.thread766, label %313

.lr.ph948:                                        ; preds = %.lr.ph843, %34
  %.0594840947 = phi ptr [ %.2, %34 ], [ null, %.lr.ph843 ]
  %indvars.iv886946 = phi i64 [ %indvars.iv.next887, %34 ], [ 0, %.lr.ph843 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  %40 = load ptr, ptr %30, align 8, !tbaa !21
  %41 = getelementptr inbounds %struct.otfcc_Handle, ptr %40, i64 %indvars.iv886946, i32 1
  %42 = load i16, ptr %41, align 4, !tbaa !22
  %43 = zext i16 %42 to i32
  store i32 %43, ptr %5, align 4, !tbaa !24
  %44 = and i16 %42, -256
  %45 = zext i16 %44 to i32
  %46 = and i16 %42, 255
  %47 = zext nneg i16 %46 to i32
  %48 = add nuw nsw i32 %45, 17973517
  %49 = add nuw nsw i32 %48, %47
  %50 = xor i32 %49, 522093
  %51 = sub nuw nsw i32 -1622558010, %50
  %52 = shl i32 %50, 8
  %53 = xor i32 %51, %52
  %54 = add nuw nsw i32 %50, %53
  %55 = sub nuw nsw i32 -17973517, %54
  %56 = lshr i32 %53, 13
  %57 = xor i32 %55, %56
  %58 = add nuw nsw i32 %53, %57
  %59 = sub nsw i32 %50, %58
  %60 = lshr i32 %57, 12
  %61 = xor i32 %59, %60
  %62 = add nuw nsw i32 %57, %61
  %63 = sub nuw i32 %53, %62
  %64 = shl i32 %61, 16
  %65 = xor i32 %63, %64
  %66 = add i32 %61, %65
  %67 = sub i32 %57, %66
  %68 = lshr i32 %65, 5
  %69 = xor i32 %67, %68
  %70 = add i32 %65, %69
  %71 = sub i32 %61, %70
  %72 = lshr i32 %69, 3
  %73 = xor i32 %71, %72
  %74 = add i32 %69, %73
  %75 = sub i32 %65, %74
  %76 = shl i32 %73, 10
  %77 = xor i32 %75, %76
  %78 = add i32 %73, %77
  %79 = sub i32 %69, %78
  %80 = lshr i32 %77, 15
  %81 = xor i32 %79, %80
  %.not730 = icmp eq ptr %.0594840947, null
  br i1 %.not730, label %.loopexit821, label %82

82:                                               ; preds = %.lr.ph948
  %83 = getelementptr inbounds i8, ptr %.0594840947, i64 32
  %84 = load ptr, ptr %83, align 8, !tbaa !25
  %85 = getelementptr inbounds i8, ptr %84, i64 8
  %86 = load i32, ptr %85, align 8, !tbaa !28
  %87 = add i32 %86, -1
  %88 = and i32 %87, %81
  %89 = load ptr, ptr %84, align 8, !tbaa !31
  %90 = zext i32 %88 to i64
  %91 = getelementptr inbounds %struct.UT_hash_bucket, ptr %89, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !32
  %.not731 = icmp eq ptr %92, null
  br i1 %.not731, label %.loopexit821, label %.lr.ph829

.lr.ph829:                                        ; preds = %82
  %93 = getelementptr inbounds i8, ptr %84, i64 32
  %94 = load i64, ptr %93, align 8, !tbaa !34
  %95 = sub i64 0, %94
  %96 = getelementptr inbounds i8, ptr %92, i64 %95
  %97 = getelementptr inbounds i8, ptr %84, i64 32
  br label %98

98:                                               ; preds = %113, %.lr.ph829
  %.1597827 = phi ptr [ %96, %.lr.ph829 ], [ %116, %113 ]
  %99 = getelementptr inbounds i8, ptr %.1597827, i64 84
  %100 = load i32, ptr %99, align 4, !tbaa !35
  %101 = icmp eq i32 %100, %81
  br i1 %101, label %102, label %110

102:                                              ; preds = %98
  %103 = getelementptr inbounds i8, ptr %.1597827, i64 80
  %104 = load i32, ptr %103, align 8, !tbaa !36
  %105 = icmp eq i32 %104, 4
  br i1 %105, label %106, label %110

106:                                              ; preds = %102
  %107 = getelementptr inbounds i8, ptr %.1597827, i64 72
  %108 = load ptr, ptr %107, align 8, !tbaa !37
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %108, ptr noundef nonnull dereferenceable(4) %5, i64 4)
  %109 = icmp eq i32 %bcmp, 0
  br i1 %109, label %117, label %110

110:                                              ; preds = %106, %102, %98
  %111 = getelementptr inbounds i8, ptr %.1597827, i64 64
  %112 = load ptr, ptr %111, align 8, !tbaa !38
  %.not733 = icmp eq ptr %112, null
  br i1 %.not733, label %.loopexit821, label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %97, align 8, !tbaa !34
  %115 = sub i64 0, %114
  %116 = getelementptr inbounds i8, ptr %112, i64 %115
  br label %98, !llvm.loop !39

117:                                              ; preds = %106
  %118 = load ptr, ptr %31, align 8, !tbaa !40
  %119 = getelementptr inbounds i8, ptr %118, i64 48
  %120 = load ptr, ptr %119, align 8, !tbaa !43
  %121 = tail call ptr @sdsempty() #10
  %122 = load ptr, ptr %30, align 8, !tbaa !21
  %123 = getelementptr inbounds %struct.otfcc_Handle, ptr %122, i64 %indvars.iv886946, i32 2
  %124 = load ptr, ptr %123, align 8, !tbaa !45
  %125 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %121, ptr noundef nonnull @.str, ptr noundef %124) #10
  tail call void %120(ptr noundef %118, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %125) #10
  br label %309

.loopexit821:                                     ; preds = %110, %82, %.lr.ph948
  %126 = tail call ptr @__caryll_allocate_clean(i64 noundef 88, i64 noundef 31)
  %127 = load ptr, ptr %30, align 8, !tbaa !21
  %128 = getelementptr inbounds %struct.otfcc_Handle, ptr %127, i64 %indvars.iv886946, i32 1
  %129 = load i16, ptr %128, align 4, !tbaa !22
  %130 = zext i16 %129 to i32
  store i32 %130, ptr %126, align 8, !tbaa !46
  %131 = load ptr, ptr %8, align 8, !tbaa !11
  %132 = getelementptr inbounds i8, ptr %131, i64 8
  %133 = load ptr, ptr %132, align 8, !tbaa !21
  %134 = getelementptr inbounds %struct.otfcc_Handle, ptr %133, i64 %indvars.iv886946, i32 1
  %135 = load i16, ptr %134, align 4, !tbaa !22
  %136 = zext i16 %135 to i32
  %137 = getelementptr inbounds i8, ptr %126, i64 16
  store i32 %136, ptr %137, align 8, !tbaa !47
  %138 = getelementptr inbounds %struct.otfcc_Handle, ptr %127, i64 %indvars.iv886946, i32 2
  %139 = load ptr, ptr %138, align 8, !tbaa !45
  %140 = getelementptr inbounds i8, ptr %126, i64 8
  store ptr %139, ptr %140, align 8, !tbaa !48
  %141 = getelementptr inbounds %struct.otfcc_Handle, ptr %133, i64 %indvars.iv886946, i32 2
  %142 = load ptr, ptr %141, align 8, !tbaa !45
  %143 = getelementptr inbounds i8, ptr %126, i64 24
  store ptr %142, ptr %143, align 8, !tbaa !49
  %144 = and i16 %129, -256
  %145 = zext i16 %144 to i32
  %146 = and i16 %129, 255
  %147 = zext nneg i16 %146 to i32
  %148 = add nuw nsw i32 %145, 17973517
  %149 = add nuw nsw i32 %148, %147
  %150 = xor i32 %149, 522093
  %151 = sub nuw nsw i32 -1622558010, %150
  %152 = shl i32 %150, 8
  %153 = xor i32 %151, %152
  %154 = add nuw nsw i32 %150, %153
  %155 = sub nuw nsw i32 -17973517, %154
  %156 = lshr i32 %153, 13
  %157 = xor i32 %155, %156
  %158 = add nuw nsw i32 %153, %157
  %159 = sub nsw i32 %150, %158
  %160 = lshr i32 %157, 12
  %161 = xor i32 %159, %160
  %162 = add nuw nsw i32 %157, %161
  %163 = sub nuw i32 %153, %162
  %164 = shl i32 %161, 16
  %165 = xor i32 %163, %164
  %166 = add i32 %161, %165
  %167 = sub i32 %157, %166
  %168 = lshr i32 %165, 5
  %169 = xor i32 %167, %168
  %170 = add i32 %165, %169
  %171 = sub i32 %161, %170
  %172 = lshr i32 %169, 3
  %173 = xor i32 %171, %172
  %174 = add i32 %169, %173
  %175 = sub i32 %165, %174
  %176 = shl i32 %173, 10
  %177 = xor i32 %175, %176
  %178 = add i32 %173, %177
  %179 = sub i32 %169, %178
  %180 = lshr i32 %177, 15
  %181 = xor i32 %179, %180
  %182 = getelementptr inbounds i8, ptr %126, i64 32
  %183 = getelementptr inbounds i8, ptr %126, i64 84
  store i32 %181, ptr %183, align 4, !tbaa !35
  %184 = getelementptr inbounds i8, ptr %126, i64 72
  store ptr %126, ptr %184, align 8, !tbaa !37
  %185 = getelementptr inbounds i8, ptr %126, i64 80
  store i32 4, ptr %185, align 8, !tbaa !36
  br i1 %.not730, label %186, label %200

186:                                              ; preds = %.loopexit821
  %187 = getelementptr inbounds i8, ptr %126, i64 40
  %188 = 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) %187, i8 0, i64 16, i1 false)
  store ptr %188, ptr %182, align 8, !tbaa !25
  %.not735 = icmp eq ptr %188, null
  br i1 %.not735, label %189, label %190

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

190:                                              ; preds = %186
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %188, i8 0, i64 64, i1 false)
  %191 = load ptr, ptr %182, align 8, !tbaa !25
  %192 = getelementptr inbounds i8, ptr %191, i64 24
  store ptr %182, ptr %192, align 8, !tbaa !50
  %193 = getelementptr inbounds i8, ptr %191, i64 8
  store i32 32, ptr %193, align 8, !tbaa !28
  %194 = getelementptr inbounds i8, ptr %191, i64 12
  store i32 5, ptr %194, align 4, !tbaa !51
  %195 = getelementptr inbounds i8, ptr %191, i64 32
  store i64 32, ptr %195, align 8, !tbaa !34
  %196 = tail call noalias dereferenceable_or_null(512) ptr @malloc(i64 noundef 512) #11
  store ptr %196, ptr %191, align 8, !tbaa !31
  %197 = getelementptr inbounds i8, ptr %191, i64 56
  store i32 -1609490463, ptr %197, align 8, !tbaa !52
  %.not736 = icmp eq ptr %196, null
  br i1 %.not736, label %198, label %199

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

199:                                              ; preds = %190
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(512) %196, i8 0, i64 512, i1 false)
  %.pre = load ptr, ptr %182, align 8, !tbaa !25
  br label %212

200:                                              ; preds = %.loopexit821
  %201 = getelementptr inbounds i8, ptr %.0594840947, i64 32
  %202 = load ptr, ptr %201, align 8, !tbaa !25
  store ptr %202, ptr %182, align 8, !tbaa !25
  %203 = getelementptr inbounds i8, ptr %126, i64 48
  store ptr null, ptr %203, align 8, !tbaa !53
  %204 = getelementptr inbounds i8, ptr %202, i64 24
  %205 = load ptr, ptr %204, align 8, !tbaa !50
  %206 = getelementptr inbounds i8, ptr %202, i64 32
  %207 = load i64, ptr %206, align 8, !tbaa !34
  %208 = sub i64 0, %207
  %209 = getelementptr inbounds i8, ptr %205, i64 %208
  %210 = getelementptr inbounds i8, ptr %126, i64 40
  store ptr %209, ptr %210, align 8, !tbaa !54
  %211 = getelementptr inbounds i8, ptr %205, i64 16
  store ptr %126, ptr %211, align 8, !tbaa !55
  store ptr %182, ptr %204, align 8, !tbaa !50
  br label %212

212:                                              ; preds = %199, %200
  %213 = phi ptr [ %202, %200 ], [ %.pre, %199 ]
  %.1 = phi ptr [ %.0594840947, %200 ], [ %126, %199 ]
  %214 = getelementptr inbounds i8, ptr %213, i64 16
  %215 = load i32, ptr %214, align 8, !tbaa !56
  %216 = add i32 %215, 1
  store i32 %216, ptr %214, align 8, !tbaa !56
  %217 = getelementptr inbounds i8, ptr %213, i64 8
  %218 = load i32, ptr %217, align 8, !tbaa !28
  %219 = add i32 %218, -1
  %220 = and i32 %219, %181
  %221 = load ptr, ptr %213, align 8, !tbaa !31
  %222 = zext i32 %220 to i64
  %223 = getelementptr inbounds %struct.UT_hash_bucket, ptr %221, i64 %222
  %224 = getelementptr inbounds i8, ptr %223, i64 8
  %225 = load i32, ptr %224, align 8, !tbaa !57
  %226 = add i32 %225, 1
  store i32 %226, ptr %224, align 8, !tbaa !57
  %227 = load ptr, ptr %223, align 8, !tbaa !32
  %228 = getelementptr inbounds i8, ptr %126, i64 64
  store ptr %227, ptr %228, align 8, !tbaa !38
  %229 = getelementptr inbounds i8, ptr %126, i64 56
  store ptr null, ptr %229, align 8, !tbaa !58
  %.not737 = icmp eq ptr %227, null
  br i1 %.not737, label %232, label %230

230:                                              ; preds = %212
  %231 = getelementptr inbounds i8, ptr %227, i64 24
  store ptr %182, ptr %231, align 8, !tbaa !59
  br label %232

232:                                              ; preds = %230, %212
  store ptr %182, ptr %223, align 8, !tbaa !32
  %233 = getelementptr inbounds i8, ptr %223, i64 12
  %234 = load i32, ptr %233, align 4, !tbaa !60
  %235 = mul i32 %234, 10
  %236 = add i32 %235, 10
  %.not738 = icmp ult i32 %226, %236
  br i1 %.not738, label %309, label %237

237:                                              ; preds = %232
  %238 = getelementptr inbounds i8, ptr %213, i64 52
  %239 = load i32, ptr %238, align 4, !tbaa !61
  %.not739 = icmp eq i32 %239, 0
  br i1 %.not739, label %240, label %309

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

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

244:                                              ; preds = %240
  %245 = load ptr, ptr %182, align 8, !tbaa !25
  %246 = getelementptr inbounds i8, ptr %245, i64 16
  %247 = load i32, ptr %246, align 8, !tbaa !56
  %248 = getelementptr inbounds i8, ptr %245, i64 12
  %249 = load i32, ptr %248, align 4, !tbaa !51
  %250 = add i32 %249, 1
  %251 = lshr i32 %247, %250
  %252 = getelementptr inbounds i8, ptr %245, i64 8
  %253 = load i32, ptr %252, align 8, !tbaa !28
  %254 = shl i32 %253, 1
  %255 = add i32 %254, -1
  %256 = and i32 %255, %247
  %.not741 = icmp ne i32 %256, 0
  %257 = zext i1 %.not741 to i32
  %258 = add i32 %251, %257
  %259 = getelementptr inbounds i8, ptr %245, i64 40
  store i32 %258, ptr %259, align 8, !tbaa !62
  %260 = getelementptr inbounds i8, ptr %245, i64 44
  store i32 0, ptr %260, align 4, !tbaa !63
  %.not879 = icmp eq i32 %253, 0
  %.pre890 = load ptr, ptr %245, align 8, !tbaa !31
  br i1 %.not879, label %._crit_edge838, label %.lr.ph837

.lr.ph837:                                        ; preds = %244
  %wide.trip.count = zext i32 %253 to i64
  br label %261

261:                                              ; preds = %.lr.ph837, %._crit_edge834
  %262 = phi i32 [ 0, %.lr.ph837 ], [ %288, %._crit_edge834 ]
  %indvars.iv883 = phi i64 [ 0, %.lr.ph837 ], [ %indvars.iv.next884, %._crit_edge834 ]
  %263 = getelementptr inbounds %struct.UT_hash_bucket, ptr %.pre890, i64 %indvars.iv883
  %264 = load ptr, ptr %263, align 8, !tbaa !32
  %.not742830 = icmp eq ptr %264, null
  br i1 %.not742830, label %._crit_edge834, label %.lr.ph833

.lr.ph833:                                        ; preds = %261, %287
  %265 = phi i32 [ %282, %287 ], [ %262, %261 ]
  %.0667831 = phi ptr [ %267, %287 ], [ %264, %261 ]
  %266 = getelementptr inbounds i8, ptr %.0667831, i64 32
  %267 = load ptr, ptr %266, align 8, !tbaa !64
  %268 = getelementptr inbounds i8, ptr %.0667831, i64 52
  %269 = load i32, ptr %268, align 4, !tbaa !65
  %270 = and i32 %269, %255
  %271 = zext i32 %270 to i64
  %272 = getelementptr inbounds %struct.UT_hash_bucket, ptr %calloc, i64 %271
  %273 = getelementptr inbounds i8, ptr %272, i64 8
  %274 = load i32, ptr %273, align 8, !tbaa !57
  %275 = add i32 %274, 1
  store i32 %275, ptr %273, align 8, !tbaa !57
  %276 = icmp ugt i32 %275, %258
  br i1 %276, label %277, label %281

277:                                              ; preds = %.lr.ph833
  %278 = add i32 %265, 1
  store i32 %278, ptr %260, align 4, !tbaa !63
  %279 = udiv i32 %275, %258
  %280 = getelementptr inbounds i8, ptr %272, i64 12
  store i32 %279, ptr %280, align 4, !tbaa !60
  br label %281

281:                                              ; preds = %277, %.lr.ph833
  %282 = phi i32 [ %278, %277 ], [ %265, %.lr.ph833 ]
  %283 = getelementptr inbounds i8, ptr %.0667831, i64 24
  store ptr null, ptr %283, align 8, !tbaa !59
  %284 = load ptr, ptr %272, align 8, !tbaa !32
  store ptr %284, ptr %266, align 8, !tbaa !64
  %.not743 = icmp eq ptr %284, null
  br i1 %.not743, label %287, label %285

285:                                              ; preds = %281
  %286 = getelementptr inbounds i8, ptr %284, i64 24
  store ptr %.0667831, ptr %286, align 8, !tbaa !59
  br label %287

287:                                              ; preds = %285, %281
  store ptr %.0667831, ptr %272, align 8, !tbaa !32
  %.not742 = icmp eq ptr %267, null
  br i1 %.not742, label %._crit_edge834, label %.lr.ph833, !llvm.loop !66

._crit_edge834:                                   ; preds = %287, %261
  %288 = phi i32 [ %262, %261 ], [ %282, %287 ]
  %indvars.iv.next884 = add nuw nsw i64 %indvars.iv883, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next884, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge838, label %261, !llvm.loop !67

._crit_edge838:                                   ; preds = %._crit_edge834, %244
  tail call void @free(ptr noundef %.pre890) #10
  %289 = load ptr, ptr %182, align 8, !tbaa !25
  %290 = getelementptr inbounds i8, ptr %289, i64 8
  %291 = load i32, ptr %290, align 8, !tbaa !28
  %292 = shl i32 %291, 1
  store i32 %292, ptr %290, align 8, !tbaa !28
  %293 = getelementptr inbounds i8, ptr %289, i64 12
  %294 = load i32, ptr %293, align 4, !tbaa !51
  %295 = add i32 %294, 1
  store i32 %295, ptr %293, align 4, !tbaa !51
  store ptr %calloc, ptr %289, align 8, !tbaa !31
  %296 = getelementptr inbounds i8, ptr %289, i64 44
  %297 = load i32, ptr %296, align 4, !tbaa !63
  %298 = getelementptr inbounds i8, ptr %289, i64 16
  %299 = load i32, ptr %298, align 8, !tbaa !56
  %300 = lshr i32 %299, 1
  %301 = icmp ugt i32 %297, %300
  %302 = getelementptr inbounds i8, ptr %289, i64 48
  br i1 %301, label %303, label %.thread750

.thread750:                                       ; preds = %._crit_edge838
  store i32 0, ptr %302, align 8, !tbaa !68
  br label %309

303:                                              ; preds = %._crit_edge838
  %304 = load i32, ptr %302, align 8, !tbaa !68
  %305 = add i32 %304, 1
  store i32 %305, ptr %302, align 8, !tbaa !68
  %306 = icmp ugt i32 %305, 1
  br i1 %306, label %307, label %309

307:                                              ; preds = %303
  %308 = getelementptr inbounds i8, ptr %289, i64 52
  store i32 1, ptr %308, align 4, !tbaa !61
  br label %309

309:                                              ; preds = %.thread750, %232, %237, %303, %307, %117
  %.2 = phi ptr [ %.0594840947, %117 ], [ %.1, %307 ], [ %.1, %303 ], [ %.1, %237 ], [ %.1, %232 ], [ %.1, %.thread750 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  %indvars.iv.next887 = add nuw nsw i64 %indvars.iv886946, 1
  %310 = load i16, ptr %28, align 8, !tbaa !17
  %311 = zext i16 %310 to i64
  %312 = icmp ult i64 %indvars.iv.next887, %311
  br i1 %312, label %34, label %.critedge.loopexit, !llvm.loop !20

313:                                              ; preds = %.critedge
  %314 = getelementptr inbounds i8, ptr %.0594.lcssa, i64 32
  %315 = getelementptr inbounds i8, ptr %.0594.lcssa, i64 32
  br label %.lr.ph861

.preheader:                                       ; preds = %403
  %316 = shl i32 %.0648866954, 1
  %.not717856 = icmp eq ptr %.2630.ph, null
  br i1 %.not717856, label %.thread913, label %.lr.ph861

.lr.ph861:                                        ; preds = %313, %.preheader
  %.0648866954 = phi i32 [ 1, %313 ], [ %316, %.preheader ]
  %.0628867953 = phi ptr [ %314, %313 ], [ %.2630.ph, %.preheader ]
  %.not880 = icmp eq i32 %.0648866954, 0
  br label %317

.loopexit:                                        ; preds = %327
  %.not717 = icmp eq ptr %.2635, null
  br i1 %.not717, label %._crit_edge862, label %317, !llvm.loop !69

317:                                              ; preds = %.lr.ph861, %.loopexit
  %.0626860 = phi ptr [ null, %.lr.ph861 ], [ %.1627, %.loopexit ]
  %.1629859 = phi ptr [ null, %.lr.ph861 ], [ %.2630.ph, %.loopexit ]
  %.0637858 = phi ptr [ %.0628867953, %.lr.ph861 ], [ %.2635, %.loopexit ]
  %.0649857 = phi i32 [ 0, %.lr.ph861 ], [ %318, %.loopexit ]
  %318 = add i32 %.0649857, 1
  br i1 %.not880, label %.thread751.preheader, label %.lr.ph850

.lr.ph850:                                        ; preds = %317, %322
  %.0633848 = phi ptr [ %326, %322 ], [ %.0637858, %317 ]
  %.0644847 = phi i32 [ %319, %322 ], [ 0, %317 ]
  %319 = add nuw i32 %.0644847, 1
  %320 = getelementptr inbounds i8, ptr %.0633848, i64 16
  %321 = load ptr, ptr %320, align 8, !tbaa !55
  %.not719 = icmp eq ptr %321, null
  br i1 %.not719, label %.thread751.preheader, label %322

322:                                              ; preds = %.lr.ph850
  %323 = load ptr, ptr %315, align 8, !tbaa !25
  %324 = getelementptr inbounds i8, ptr %323, i64 32
  %325 = load i64, ptr %324, align 8, !tbaa !34
  %326 = getelementptr inbounds i8, ptr %321, i64 %325
  %exitcond889.not = icmp eq i32 %319, %.0648866954
  br i1 %exitcond889.not, label %.thread751.preheader, label %.lr.ph850, !llvm.loop !70

.thread751.preheader:                             ; preds = %322, %.lr.ph850, %317
  %.2646.ph = phi i32 [ 0, %317 ], [ %319, %.lr.ph850 ], [ %.0648866954, %322 ]
  %.2635.ph = phi ptr [ %.0637858, %317 ], [ null, %.lr.ph850 ], [ %326, %322 ]
  br label %.thread751.outer

.thread751.outer:                                 ; preds = %.thread751.outer.backedge, %.thread751.preheader
  %.2646.ph956 = phi i32 [ %.2646.ph, %.thread751.preheader ], [ %.3647, %.thread751.outer.backedge ]
  %.0642.ph = phi i32 [ %.0648866954, %.thread751.preheader ], [ %.1643, %.thread751.outer.backedge ]
  %.1638.ph = phi ptr [ %.0637858, %.thread751.preheader ], [ %.4641, %.thread751.outer.backedge ]
  %.2635.ph957 = phi ptr [ %.2635.ph, %.thread751.preheader ], [ %.3636, %.thread751.outer.backedge ]
  %.2630.ph = phi ptr [ %.1629859, %.thread751.preheader ], [ %.2630.ph.be, %.thread751.outer.backedge ]
  %.1627.ph = phi ptr [ %.0626860, %.thread751.preheader ], [ %.0632, %.thread751.outer.backedge ]
  br label %.thread751

.thread751:                                       ; preds = %.thread751.outer, %.thread752.thread
  %.2646 = phi i32 [ %.3647, %.thread752.thread ], [ %.2646.ph956, %.thread751.outer ]
  %.0642 = phi i32 [ %.1643, %.thread752.thread ], [ %.0642.ph, %.thread751.outer ]
  %.1638 = phi ptr [ %.4641, %.thread752.thread ], [ %.1638.ph, %.thread751.outer ]
  %.2635 = phi ptr [ %.3636, %.thread752.thread ], [ %.2635.ph957, %.thread751.outer ]
  %.1627 = phi ptr [ %.0632, %.thread752.thread ], [ %.1627.ph, %.thread751.outer ]
  %cond = icmp eq i32 %.2646, 0
  br i1 %cond, label %327, label %341

327:                                              ; preds = %.thread751
  %328 = icmp ne i32 %.0642, 0
  %329 = icmp ne ptr %.2635, null
  %330 = select i1 %328, i1 %329, i1 false
  br i1 %330, label %.critedge2, label %.loopexit

.critedge2:                                       ; preds = %327
  %331 = getelementptr inbounds i8, ptr %.2635, i64 16
  %332 = load ptr, ptr %331, align 8, !tbaa !55
  %.not726 = icmp eq ptr %332, null
  br i1 %.not726, label %338, label %333

333:                                              ; preds = %.critedge2
  %334 = load ptr, ptr %315, align 8, !tbaa !25
  %335 = getelementptr inbounds i8, ptr %334, i64 32
  %336 = load i64, ptr %335, align 8, !tbaa !34
  %337 = getelementptr inbounds i8, ptr %332, i64 %336
  br label %338

338:                                              ; preds = %.critedge2, %333
  %339 = phi ptr [ %337, %333 ], [ null, %.critedge2 ]
  %340 = add i32 %.0642, -1
  br label %386

341:                                              ; preds = %.thread751
  %342 = icmp eq i32 %.0642, 0
  %343 = icmp eq ptr %.2635, null
  %or.cond = select i1 %342, i1 true, i1 %343
  br i1 %or.cond, label %344, label %355

344:                                              ; preds = %341
  %.not724 = icmp eq ptr %.1638, null
  br i1 %.not724, label %353, label %345

345:                                              ; preds = %344
  %346 = getelementptr inbounds i8, ptr %.1638, i64 16
  %347 = load ptr, ptr %346, align 8, !tbaa !55
  %.not725 = icmp eq ptr %347, null
  br i1 %.not725, label %353, label %348

348:                                              ; preds = %345
  %349 = load ptr, ptr %315, align 8, !tbaa !25
  %350 = getelementptr inbounds i8, ptr %349, i64 32
  %351 = load i64, ptr %350, align 8, !tbaa !34
  %352 = getelementptr inbounds i8, ptr %347, i64 %351
  br label %353

353:                                              ; preds = %348, %345, %344
  %.2639 = phi ptr [ null, %344 ], [ %352, %348 ], [ null, %345 ]
  %354 = add i32 %.2646, -1
  br label %386

355:                                              ; preds = %341
  %356 = load ptr, ptr %315, align 8, !tbaa !25
  %357 = getelementptr inbounds i8, ptr %356, i64 32
  %358 = load i64, ptr %357, align 8, !tbaa !34
  %359 = sub i64 0, %358
  %360 = getelementptr inbounds i8, ptr %.1638, i64 %359
  %361 = getelementptr inbounds i8, ptr %.2635, i64 %359
  %362 = tail call i32 @by_from_id(ptr noundef %360, ptr noundef %361)
  %363 = icmp slt i32 %362, 1
  br i1 %363, label %364, label %375

364:                                              ; preds = %355
  %.not722 = icmp eq ptr %.1638, null
  br i1 %.not722, label %373, label %365

365:                                              ; preds = %364
  %366 = getelementptr inbounds i8, ptr %.1638, i64 16
  %367 = load ptr, ptr %366, align 8, !tbaa !55
  %.not723 = icmp eq ptr %367, null
  br i1 %.not723, label %373, label %368

368:                                              ; preds = %365
  %369 = load ptr, ptr %315, align 8, !tbaa !25
  %370 = getelementptr inbounds i8, ptr %369, i64 32
  %371 = load i64, ptr %370, align 8, !tbaa !34
  %372 = getelementptr inbounds i8, ptr %367, i64 %371
  br label %373

373:                                              ; preds = %368, %365, %364
  %.3640 = phi ptr [ null, %364 ], [ %372, %368 ], [ null, %365 ]
  %374 = add i32 %.2646, -1
  br label %386

375:                                              ; preds = %355
  %376 = getelementptr inbounds i8, ptr %.2635, i64 16
  %377 = load ptr, ptr %376, align 8, !tbaa !55
  %.not721 = icmp eq ptr %377, null
  br i1 %.not721, label %383, label %378

378:                                              ; preds = %375
  %379 = load ptr, ptr %315, align 8, !tbaa !25
  %380 = getelementptr inbounds i8, ptr %379, i64 32
  %381 = load i64, ptr %380, align 8, !tbaa !34
  %382 = getelementptr inbounds i8, ptr %377, i64 %381
  br label %383

383:                                              ; preds = %375, %378
  %384 = phi ptr [ %382, %378 ], [ null, %375 ]
  %385 = add i32 %.0642, -1
  br label %386

386:                                              ; preds = %353, %383, %373, %338
  %.3647 = phi i32 [ 0, %338 ], [ %354, %353 ], [ %374, %373 ], [ %.2646, %383 ]
  %.1643 = phi i32 [ %340, %338 ], [ %.0642, %353 ], [ %.0642, %373 ], [ %385, %383 ]
  %.4641 = phi ptr [ %.1638, %338 ], [ %.2639, %353 ], [ %.3640, %373 ], [ %.1638, %383 ]
  %.3636 = phi ptr [ %339, %338 ], [ %.2635, %353 ], [ %.2635, %373 ], [ %384, %383 ]
  %.0632 = phi ptr [ %.2635, %338 ], [ %.1638, %353 ], [ %.1638, %373 ], [ %.2635, %383 ]
  %.not727 = icmp eq ptr %.1627, null
  %.not729 = icmp eq ptr %.0632, null
  br i1 %.not727, label %389, label %387

387:                                              ; preds = %386
  br i1 %.not729, label %.thread752.thread, label %390

.thread752.thread:                                ; preds = %387
  %388 = getelementptr inbounds i8, ptr %.1627, i64 16
  store ptr null, ptr %388, align 8, !tbaa !55
  br label %.thread751, !llvm.loop !71

389:                                              ; preds = %386
  br i1 %.not729, label %.thread751.outer.backedge, label %398

390:                                              ; preds = %387
  %391 = load ptr, ptr %315, align 8, !tbaa !25
  %392 = getelementptr inbounds i8, ptr %391, i64 32
  %393 = load i64, ptr %392, align 8, !tbaa !34
  %394 = sub i64 0, %393
  %395 = getelementptr inbounds i8, ptr %.0632, i64 %394
  %396 = getelementptr inbounds i8, ptr %.1627, i64 16
  store ptr %395, ptr %396, align 8, !tbaa !55
  %397 = getelementptr inbounds i8, ptr %.1627, i64 %394
  br label %398

398:                                              ; preds = %389, %390
  %.3631755760 = phi ptr [ %.2630.ph, %390 ], [ %.0632, %389 ]
  %399 = phi ptr [ %397, %390 ], [ null, %389 ]
  %400 = getelementptr inbounds i8, ptr %.0632, i64 8
  store ptr %399, ptr %400, align 8, !tbaa !72
  br label %.thread751.outer.backedge

.thread751.outer.backedge:                        ; preds = %398, %389
  %.2630.ph.be = phi ptr [ null, %389 ], [ %.3631755760, %398 ]
  br label %.thread751.outer, !llvm.loop !71

._crit_edge862:                                   ; preds = %.loopexit
  %.not718 = icmp eq ptr %.1627, null
  br i1 %.not718, label %403, label %401

401:                                              ; preds = %._crit_edge862
  %402 = getelementptr inbounds i8, ptr %.1627, i64 16
  store ptr null, ptr %402, align 8, !tbaa !55
  br label %403

403:                                              ; preds = %401, %._crit_edge862
  %.0626.lcssa912 = phi ptr [ %.1627, %401 ], [ null, %._crit_edge862 ]
  %404 = icmp ult i32 %318, 2
  br i1 %404, label %.thread913, label %.preheader

.thread913:                                       ; preds = %.preheader, %403
  %.1629.lcssa911918 = phi ptr [ %.2630.ph, %403 ], [ null, %.preheader ]
  %.0626.lcssa912917 = phi ptr [ %.0626.lcssa912, %403 ], [ null, %.preheader ]
  %405 = getelementptr inbounds i8, ptr %.0594.lcssa, i64 32
  %406 = load ptr, ptr %405, align 8, !tbaa !25
  %407 = getelementptr inbounds i8, ptr %406, i64 24
  store ptr %.0626.lcssa912917, ptr %407, align 8, !tbaa !50
  %408 = getelementptr inbounds i8, ptr %406, i64 32
  %409 = load i64, ptr %408, align 8, !tbaa !34
  %410 = sub i64 0, %409
  %411 = getelementptr inbounds i8, ptr %.1629.lcssa911918, i64 %410
  %.not708 = icmp eq ptr %.1629.lcssa911918, null
  br i1 %.not708, label %412, label %.thread925

412:                                              ; preds = %.thread913
  %413 = load i16, ptr %28, align 8, !tbaa !17
  %.not709 = icmp eq i16 %413, 0
  br i1 %.not709, label %.thread776, label %429

.thread925:                                       ; preds = %.thread913
  %414 = getelementptr inbounds i8, ptr %411, i64 32
  %415 = load ptr, ptr %414, align 8, !tbaa !25
  %416 = getelementptr inbounds i8, ptr %415, i64 16
  %417 = load i32, ptr %416, align 8, !tbaa !56
  %418 = load i16, ptr %28, align 8, !tbaa !17
  %419 = zext i16 %418 to i32
  %.not709926 = icmp eq i32 %417, %419
  br i1 %.not709926, label %.thread776.thread, label %429

.thread766:                                       ; preds = %.critedge
  br i1 %.not709769, label %.thread776, label %429

.thread776:                                       ; preds = %22, %412, %.thread766
  %420 = load ptr, ptr %8, align 8, !tbaa !11
  %421 = load i16, ptr %420, align 8, !tbaa !17
  %.not710 = icmp eq i16 %421, 0
  br i1 %.not710, label %.thread940, label %429

.thread940:                                       ; preds = %.thread776
  store i16 0, ptr %28, align 8, !tbaa !17
  store i16 0, ptr %420, align 8, !tbaa !17
  br label %._crit_edge876

.thread776.thread:                                ; preds = %.thread925
  %422 = getelementptr inbounds i8, ptr %411, i64 32
  %423 = load ptr, ptr %422, align 8, !tbaa !25
  %424 = getelementptr inbounds i8, ptr %423, i64 16
  %425 = load i32, ptr %424, align 8, !tbaa !56
  %426 = load ptr, ptr %8, align 8, !tbaa !11
  %427 = load i16, ptr %426, align 8, !tbaa !17
  %428 = zext i16 %427 to i32
  %.not710930 = icmp eq i32 %425, %428
  br i1 %.not710930, label %.thread936, label %429

429:                                              ; preds = %.thread776.thread, %.thread925, %.thread766, %.thread776, %412
  %.5764774 = phi ptr [ null, %.thread766 ], [ null, %.thread776 ], [ %411, %412 ], [ %411, %.thread925 ], [ %411, %.thread776.thread ]
  %.not708765771 = phi i1 [ true, %.thread766 ], [ true, %.thread776 ], [ %.not708, %412 ], [ false, %.thread925 ], [ false, %.thread776.thread ]
  %430 = getelementptr inbounds i8, ptr %3, i64 32
  %431 = load ptr, ptr %430, align 8, !tbaa !40
  %432 = getelementptr inbounds i8, ptr %431, i64 48
  %433 = load ptr, ptr %432, align 8, !tbaa !43
  %434 = tail call ptr @sdsempty() #10
  %435 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %434, ptr noundef nonnull @.str.1) #10
  tail call void %433(ptr noundef %431, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %435) #10
  %.pre893 = load ptr, ptr %8, align 8, !tbaa !11
  br i1 %.not708765771, label %444, label %.thread936

.thread936:                                       ; preds = %429, %.thread776.thread
  %436 = phi ptr [ %.pre893, %429 ], [ %426, %.thread776.thread ]
  %.5764773782 = phi ptr [ %.5764774, %429 ], [ %411, %.thread776.thread ]
  %437 = getelementptr inbounds i8, ptr %.5764773782, i64 32
  %438 = load ptr, ptr %437, align 8, !tbaa !25
  %439 = getelementptr inbounds i8, ptr %438, i64 16
  %440 = load i32, ptr %439, align 8, !tbaa !56
  %441 = trunc i32 %440 to i16
  store i16 %441, ptr %28, align 8, !tbaa !17
  store i16 %441, ptr %436, align 8, !tbaa !17
  %442 = getelementptr inbounds i8, ptr %.5764773782, i64 48
  %443 = load ptr, ptr %442, align 8, !tbaa !53
  br label %.lr.ph875

444:                                              ; preds = %429
  store i16 0, ptr %28, align 8, !tbaa !17
  store i16 0, ptr %.pre893, align 8, !tbaa !17
  %.not711869 = icmp eq ptr %.5764774, null
  br i1 %.not711869, label %._crit_edge876, label %.lr.ph875

.lr.ph875:                                        ; preds = %.thread936, %444
  %445 = phi ptr [ %443, %.thread936 ], [ null, %444 ]
  %.5764773781790939 = phi ptr [ %.5764773782, %.thread936 ], [ %.5764774, %444 ]
  %446 = getelementptr inbounds i8, ptr %28, i64 8
  %447 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 80), align 8, !tbaa !73
  br label %448

448:                                              ; preds = %538, %.lr.ph875
  %.6873 = phi ptr [ %.5764773781790939, %.lr.ph875 ], [ %.8, %538 ]
  %.0623872 = phi i16 [ 0, %.lr.ph875 ], [ %471, %538 ]
  %.0624871 = phi ptr [ %445, %.lr.ph875 ], [ %540, %538 ]
  %.0625870 = phi ptr [ %.5764773781790939, %.lr.ph875 ], [ %.0624871, %538 ]
  %449 = load ptr, ptr %446, align 8, !tbaa !21
  %450 = zext i16 %.0623872 to i64
  %451 = getelementptr inbounds %struct.otfcc_Handle, ptr %449, i64 %450
  %452 = load i32, ptr %.0625870, align 8, !tbaa !46
  %453 = trunc i32 %452 to i16
  %454 = getelementptr inbounds i8, ptr %.0625870, i64 8
  %455 = load ptr, ptr %454, align 8, !tbaa !48
  %456 = tail call { i64, ptr } %447(i16 noundef zeroext %453, ptr noundef %455) #10
  %457 = extractvalue { i64, ptr } %456, 0
  %458 = extractvalue { i64, ptr } %456, 1
  store i64 %457, ptr %451, align 8
  %.sroa.427.0..sroa_idx = getelementptr inbounds i8, ptr %451, i64 8
  store ptr %458, ptr %.sroa.427.0..sroa_idx, align 8, !tbaa !14
  %459 = load ptr, ptr %8, align 8, !tbaa !11
  %460 = getelementptr inbounds i8, ptr %459, i64 8
  %461 = load ptr, ptr %460, align 8, !tbaa !21
  %462 = getelementptr inbounds %struct.otfcc_Handle, ptr %461, i64 %450
  %463 = getelementptr inbounds i8, ptr %.0625870, i64 16
  %464 = load i32, ptr %463, align 8, !tbaa !47
  %465 = trunc i32 %464 to i16
  %466 = getelementptr inbounds i8, ptr %.0625870, i64 24
  %467 = load ptr, ptr %466, align 8, !tbaa !49
  %468 = tail call { i64, ptr } %447(i16 noundef zeroext %465, ptr noundef %467) #10
  %469 = extractvalue { i64, ptr } %468, 0
  %470 = extractvalue { i64, ptr } %468, 1
  store i64 %469, ptr %462, align 8
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %462, i64 8
  store ptr %470, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !14
  %471 = add i16 %.0623872, 1
  %472 = getelementptr inbounds i8, ptr %.0625870, i64 32
  %473 = getelementptr inbounds i8, ptr %.0625870, i64 40
  %474 = load ptr, ptr %473, align 8, !tbaa !72
  %475 = icmp eq ptr %474, null
  br i1 %475, label %476, label %485

476:                                              ; preds = %448
  %477 = getelementptr inbounds i8, ptr %.0625870, i64 48
  %478 = load ptr, ptr %477, align 8, !tbaa !55
  %479 = icmp eq ptr %478, null
  br i1 %479, label %480, label %485

480:                                              ; preds = %476
  %481 = getelementptr inbounds i8, ptr %.6873, i64 32
  %482 = load ptr, ptr %481, align 8, !tbaa !25
  %483 = load ptr, ptr %482, align 8, !tbaa !31
  tail call void @free(ptr noundef %483) #10
  %484 = load ptr, ptr %481, align 8, !tbaa !25
  tail call void @free(ptr noundef %484) #10
  br label %537

485:                                              ; preds = %476, %448
  %486 = getelementptr inbounds i8, ptr %.6873, i64 32
  %487 = load ptr, ptr %486, align 8, !tbaa !25
  %488 = getelementptr inbounds i8, ptr %487, i64 24
  %489 = load ptr, ptr %488, align 8, !tbaa !50
  %490 = icmp eq ptr %472, %489
  br i1 %490, label %491, label %495

491:                                              ; preds = %485
  %492 = getelementptr inbounds i8, ptr %487, i64 32
  %493 = load i64, ptr %492, align 8, !tbaa !34
  %494 = getelementptr inbounds i8, ptr %474, i64 %493
  store ptr %494, ptr %488, align 8, !tbaa !50
  br label %495

495:                                              ; preds = %491, %485
  %496 = getelementptr inbounds i8, ptr %.0625870, i64 48
  %497 = load ptr, ptr %496, align 8, !tbaa !55
  br i1 %475, label %503, label %498

498:                                              ; preds = %495
  %499 = getelementptr inbounds i8, ptr %487, i64 32
  %500 = load i64, ptr %499, align 8, !tbaa !34
  %501 = getelementptr inbounds i8, ptr %474, i64 %500
  %502 = getelementptr inbounds i8, ptr %501, i64 16
  store ptr %497, ptr %502, align 8, !tbaa !55
  br label %503

503:                                              ; preds = %495, %498
  %.7 = phi ptr [ %.6873, %498 ], [ %497, %495 ]
  %.not713 = icmp eq ptr %497, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.7, i64 32
  %.pre895 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !25
  br i1 %.not713, label %._crit_edge894, label %504

504:                                              ; preds = %503
  %505 = getelementptr inbounds i8, ptr %.pre895, i64 32
  %506 = load i64, ptr %505, align 8, !tbaa !34
  %507 = getelementptr inbounds i8, ptr %497, i64 %506
  %508 = getelementptr inbounds i8, ptr %507, i64 8
  store ptr %474, ptr %508, align 8, !tbaa !72
  br label %._crit_edge894

._crit_edge894:                                   ; preds = %503, %504
  %509 = getelementptr inbounds i8, ptr %.0625870, i64 84
  %510 = load i32, ptr %509, align 4, !tbaa !65
  %511 = getelementptr inbounds i8, ptr %.pre895, i64 8
  %512 = load i32, ptr %511, align 8, !tbaa !28
  %513 = add i32 %512, -1
  %514 = and i32 %513, %510
  %515 = load ptr, ptr %.pre895, align 8, !tbaa !31
  %516 = zext i32 %514 to i64
  %517 = getelementptr inbounds %struct.UT_hash_bucket, ptr %515, i64 %516
  %518 = getelementptr inbounds i8, ptr %517, i64 8
  %519 = load i32, ptr %518, align 8, !tbaa !57
  %520 = add i32 %519, -1
  store i32 %520, ptr %518, align 8, !tbaa !57
  %521 = load ptr, ptr %517, align 8, !tbaa !32
  %522 = icmp eq ptr %521, %472
  br i1 %522, label %523, label %526

523:                                              ; preds = %._crit_edge894
  %524 = getelementptr inbounds i8, ptr %.0625870, i64 64
  %525 = load ptr, ptr %524, align 8, !tbaa !64
  store ptr %525, ptr %517, align 8, !tbaa !32
  br label %526

526:                                              ; preds = %523, %._crit_edge894
  %527 = getelementptr inbounds i8, ptr %.0625870, i64 56
  %528 = load ptr, ptr %527, align 8, !tbaa !59
  %.not714 = icmp eq ptr %528, null
  %.phi.trans.insert897 = getelementptr inbounds i8, ptr %.0625870, i64 64
  %.pre898 = load ptr, ptr %.phi.trans.insert897, align 8, !tbaa !64
  br i1 %.not714, label %._crit_edge896, label %529

529:                                              ; preds = %526
  %530 = getelementptr inbounds i8, ptr %528, i64 32
  store ptr %.pre898, ptr %530, align 8, !tbaa !64
  br label %._crit_edge896

._crit_edge896:                                   ; preds = %526, %529
  %.not715 = icmp eq ptr %.pre898, null
  br i1 %.not715, label %533, label %531

531:                                              ; preds = %._crit_edge896
  %532 = getelementptr inbounds i8, ptr %.pre898, i64 24
  store ptr %528, ptr %532, align 8, !tbaa !59
  br label %533

533:                                              ; preds = %531, %._crit_edge896
  %534 = getelementptr inbounds i8, ptr %.pre895, i64 16
  %535 = load i32, ptr %534, align 8, !tbaa !56
  %536 = add i32 %535, -1
  store i32 %536, ptr %534, align 8, !tbaa !56
  br label %537

537:                                              ; preds = %533, %480
  %.8 = phi ptr [ null, %480 ], [ %.7, %533 ]
  tail call void @free(ptr noundef nonnull %.0625870) #10
  %.not716 = icmp eq ptr %.0624871, null
  br i1 %.not716, label %._crit_edge876, label %538

538:                                              ; preds = %537
  %539 = getelementptr inbounds i8, ptr %.0624871, i64 48
  %540 = load ptr, ptr %539, align 8, !tbaa !53
  br label %448, !llvm.loop !75

._crit_edge876:                                   ; preds = %537, %.thread940, %444
  ret i1 false
}

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

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

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

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

declare ptr @sdsempty() local_unnamed_addr #2

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

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

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

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

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

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

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


; 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