; LLVM IR from caryll/otfcc :: lib/table (cmap)

; 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.table_cmap = type { ptr, ptr }
%struct.cmap_Entry = type { %struct.UT_hash_handle, i32, %struct.otfcc_Handle }
%struct.UT_hash_handle = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.otfcc_Handle = type { i32, i16, ptr }
%struct.UT_hash_table = type { ptr, i32, i32, i32, ptr, i64, i32, i32, i32, i32, i32 }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@otfcc_iHandle = external constant %struct.otfcc_HandlePackage, align 8

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @otfcc_unmapCmap(ptr noundef %0, i32 noundef %1) #3 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  br label %17

17:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  br label %18

18:                                               ; preds = %17
  br label %19

19:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  store ptr %5, ptr %11, align 8, !tbaa !5
  store i32 -17973521, ptr %7, align 4, !tbaa !9
  store i32 -1640531527, ptr %9, align 4, !tbaa !9
  store i32 -1640531527, ptr %8, align 4, !tbaa !9
  store i32 4, ptr %10, align 4, !tbaa !9
  br label %20

20:                                               ; preds = %188, %19
  %21 = load i32, ptr %10, align 4, !tbaa !9
  %22 = icmp uge i32 %21, 12
  br i1 %22, label %23, label %193

23:                                               ; preds = %20
  %24 = load ptr, ptr %11, align 8, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %24, i64 0
  %26 = load i8, ptr %25, align 1, !tbaa !11
  %27 = zext i8 %26 to i32
  %28 = load ptr, ptr %11, align 8, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %28, i64 1
  %30 = load i8, ptr %29, align 1, !tbaa !11
  %31 = zext i8 %30 to i32
  %32 = shl i32 %31, 8
  %33 = add i32 %27, %32
  %34 = load ptr, ptr %11, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %34, i64 2
  %36 = load i8, ptr %35, align 1, !tbaa !11
  %37 = zext i8 %36 to i32
  %38 = shl i32 %37, 16
  %39 = add i32 %33, %38
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 3
  %42 = load i8, ptr %41, align 1, !tbaa !11
  %43 = zext i8 %42 to i32
  %44 = shl i32 %43, 24
  %45 = add i32 %39, %44
  %46 = load i32, ptr %8, align 4, !tbaa !9
  %47 = add i32 %46, %45
  store i32 %47, ptr %8, align 4, !tbaa !9
  %48 = load ptr, ptr %11, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %48, i64 4
  %50 = load i8, ptr %49, align 1, !tbaa !11
  %51 = zext i8 %50 to i32
  %52 = load ptr, ptr %11, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %52, i64 5
  %54 = load i8, ptr %53, align 1, !tbaa !11
  %55 = zext i8 %54 to i32
  %56 = shl i32 %55, 8
  %57 = add i32 %51, %56
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %58, i64 6
  %60 = load i8, ptr %59, align 1, !tbaa !11
  %61 = zext i8 %60 to i32
  %62 = shl i32 %61, 16
  %63 = add i32 %57, %62
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = getelementptr inbounds i8, ptr %64, i64 7
  %66 = load i8, ptr %65, align 1, !tbaa !11
  %67 = zext i8 %66 to i32
  %68 = shl i32 %67, 24
  %69 = add i32 %63, %68
  %70 = load i32, ptr %9, align 4, !tbaa !9
  %71 = add i32 %70, %69
  store i32 %71, ptr %9, align 4, !tbaa !9
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds i8, ptr %72, i64 8
  %74 = load i8, ptr %73, align 1, !tbaa !11
  %75 = zext i8 %74 to i32
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %76, i64 9
  %78 = load i8, ptr %77, align 1, !tbaa !11
  %79 = zext i8 %78 to i32
  %80 = shl i32 %79, 8
  %81 = add i32 %75, %80
  %82 = load ptr, ptr %11, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %82, i64 10
  %84 = load i8, ptr %83, align 1, !tbaa !11
  %85 = zext i8 %84 to i32
  %86 = shl i32 %85, 16
  %87 = add i32 %81, %86
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = getelementptr inbounds i8, ptr %88, i64 11
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = zext i8 %90 to i32
  %92 = shl i32 %91, 24
  %93 = add i32 %87, %92
  %94 = load i32, ptr %7, align 4, !tbaa !9
  %95 = add i32 %94, %93
  store i32 %95, ptr %7, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %23
  %97 = load i32, ptr %9, align 4, !tbaa !9
  %98 = load i32, ptr %8, align 4, !tbaa !9
  %99 = sub i32 %98, %97
  store i32 %99, ptr %8, align 4, !tbaa !9
  %100 = load i32, ptr %7, align 4, !tbaa !9
  %101 = load i32, ptr %8, align 4, !tbaa !9
  %102 = sub i32 %101, %100
  store i32 %102, ptr %8, align 4, !tbaa !9
  %103 = load i32, ptr %7, align 4, !tbaa !9
  %104 = lshr i32 %103, 13
  %105 = load i32, ptr %8, align 4, !tbaa !9
  %106 = xor i32 %105, %104
  store i32 %106, ptr %8, align 4, !tbaa !9
  %107 = load i32, ptr %7, align 4, !tbaa !9
  %108 = load i32, ptr %9, align 4, !tbaa !9
  %109 = sub i32 %108, %107
  store i32 %109, ptr %9, align 4, !tbaa !9
  %110 = load i32, ptr %8, align 4, !tbaa !9
  %111 = load i32, ptr %9, align 4, !tbaa !9
  %112 = sub i32 %111, %110
  store i32 %112, ptr %9, align 4, !tbaa !9
  %113 = load i32, ptr %8, align 4, !tbaa !9
  %114 = shl i32 %113, 8
  %115 = load i32, ptr %9, align 4, !tbaa !9
  %116 = xor i32 %115, %114
  store i32 %116, ptr %9, align 4, !tbaa !9
  %117 = load i32, ptr %8, align 4, !tbaa !9
  %118 = load i32, ptr %7, align 4, !tbaa !9
  %119 = sub i32 %118, %117
  store i32 %119, ptr %7, align 4, !tbaa !9
  %120 = load i32, ptr %9, align 4, !tbaa !9
  %121 = load i32, ptr %7, align 4, !tbaa !9
  %122 = sub i32 %121, %120
  store i32 %122, ptr %7, align 4, !tbaa !9
  %123 = load i32, ptr %9, align 4, !tbaa !9
  %124 = lshr i32 %123, 13
  %125 = load i32, ptr %7, align 4, !tbaa !9
  %126 = xor i32 %125, %124
  store i32 %126, ptr %7, align 4, !tbaa !9
  %127 = load i32, ptr %9, align 4, !tbaa !9
  %128 = load i32, ptr %8, align 4, !tbaa !9
  %129 = sub i32 %128, %127
  store i32 %129, ptr %8, align 4, !tbaa !9
  %130 = load i32, ptr %7, align 4, !tbaa !9
  %131 = load i32, ptr %8, align 4, !tbaa !9
  %132 = sub i32 %131, %130
  store i32 %132, ptr %8, align 4, !tbaa !9
  %133 = load i32, ptr %7, align 4, !tbaa !9
  %134 = lshr i32 %133, 12
  %135 = load i32, ptr %8, align 4, !tbaa !9
  %136 = xor i32 %135, %134
  store i32 %136, ptr %8, align 4, !tbaa !9
  %137 = load i32, ptr %7, align 4, !tbaa !9
  %138 = load i32, ptr %9, align 4, !tbaa !9
  %139 = sub i32 %138, %137
  store i32 %139, ptr %9, align 4, !tbaa !9
  %140 = load i32, ptr %8, align 4, !tbaa !9
  %141 = load i32, ptr %9, align 4, !tbaa !9
  %142 = sub i32 %141, %140
  store i32 %142, ptr %9, align 4, !tbaa !9
  %143 = load i32, ptr %8, align 4, !tbaa !9
  %144 = shl i32 %143, 16
  %145 = load i32, ptr %9, align 4, !tbaa !9
  %146 = xor i32 %145, %144
  store i32 %146, ptr %9, align 4, !tbaa !9
  %147 = load i32, ptr %8, align 4, !tbaa !9
  %148 = load i32, ptr %7, align 4, !tbaa !9
  %149 = sub i32 %148, %147
  store i32 %149, ptr %7, align 4, !tbaa !9
  %150 = load i32, ptr %9, align 4, !tbaa !9
  %151 = load i32, ptr %7, align 4, !tbaa !9
  %152 = sub i32 %151, %150
  store i32 %152, ptr %7, align 4, !tbaa !9
  %153 = load i32, ptr %9, align 4, !tbaa !9
  %154 = lshr i32 %153, 5
  %155 = load i32, ptr %7, align 4, !tbaa !9
  %156 = xor i32 %155, %154
  store i32 %156, ptr %7, align 4, !tbaa !9
  %157 = load i32, ptr %9, align 4, !tbaa !9
  %158 = load i32, ptr %8, align 4, !tbaa !9
  %159 = sub i32 %158, %157
  store i32 %159, ptr %8, align 4, !tbaa !9
  %160 = load i32, ptr %7, align 4, !tbaa !9
  %161 = load i32, ptr %8, align 4, !tbaa !9
  %162 = sub i32 %161, %160
  store i32 %162, ptr %8, align 4, !tbaa !9
  %163 = load i32, ptr %7, align 4, !tbaa !9
  %164 = lshr i32 %163, 3
  %165 = load i32, ptr %8, align 4, !tbaa !9
  %166 = xor i32 %165, %164
  store i32 %166, ptr %8, align 4, !tbaa !9
  %167 = load i32, ptr %7, align 4, !tbaa !9
  %168 = load i32, ptr %9, align 4, !tbaa !9
  %169 = sub i32 %168, %167
  store i32 %169, ptr %9, align 4, !tbaa !9
  %170 = load i32, ptr %8, align 4, !tbaa !9
  %171 = load i32, ptr %9, align 4, !tbaa !9
  %172 = sub i32 %171, %170
  store i32 %172, ptr %9, align 4, !tbaa !9
  %173 = load i32, ptr %8, align 4, !tbaa !9
  %174 = shl i32 %173, 10
  %175 = load i32, ptr %9, align 4, !tbaa !9
  %176 = xor i32 %175, %174
  store i32 %176, ptr %9, align 4, !tbaa !9
  %177 = load i32, ptr %8, align 4, !tbaa !9
  %178 = load i32, ptr %7, align 4, !tbaa !9
  %179 = sub i32 %178, %177
  store i32 %179, ptr %7, align 4, !tbaa !9
  %180 = load i32, ptr %9, align 4, !tbaa !9
  %181 = load i32, ptr %7, align 4, !tbaa !9
  %182 = sub i32 %181, %180
  store i32 %182, ptr %7, align 4, !tbaa !9
  %183 = load i32, ptr %9, align 4, !tbaa !9
  %184 = lshr i32 %183, 15
  %185 = load i32, ptr %7, align 4, !tbaa !9
  %186 = xor i32 %185, %184
  store i32 %186, ptr %7, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %96
  br label %188

188:                                              ; preds = %187
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 12
  store ptr %190, ptr %11, align 8, !tbaa !5
  %191 = load i32, ptr %10, align 4, !tbaa !9
  %192 = sub i32 %191, 12
  store i32 %192, ptr %10, align 4, !tbaa !9
  br label %20, !llvm.loop !12

193:                                              ; preds = %20
  %194 = load i32, ptr %7, align 4, !tbaa !9
  %195 = add i32 %194, 4
  store i32 %195, ptr %7, align 4, !tbaa !9
  %196 = load i32, ptr %10, align 4, !tbaa !9
  switch i32 %196, label %283 [
    i32 11, label %197
    i32 10, label %205
    i32 9, label %213
    i32 8, label %221
    i32 7, label %229
    i32 6, label %237
    i32 5, label %245
    i32 4, label %252
    i32 3, label %260
    i32 2, label %268
    i32 1, label %276
  ]

197:                                              ; preds = %193
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  %199 = getelementptr inbounds i8, ptr %198, i64 10
  %200 = load i8, ptr %199, align 1, !tbaa !11
  %201 = zext i8 %200 to i32
  %202 = shl i32 %201, 24
  %203 = load i32, ptr %7, align 4, !tbaa !9
  %204 = add i32 %203, %202
  store i32 %204, ptr %7, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %197, %193
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = getelementptr inbounds i8, ptr %206, i64 9
  %208 = load i8, ptr %207, align 1, !tbaa !11
  %209 = zext i8 %208 to i32
  %210 = shl i32 %209, 16
  %211 = load i32, ptr %7, align 4, !tbaa !9
  %212 = add i32 %211, %210
  store i32 %212, ptr %7, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %205, %193
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i64 8
  %216 = load i8, ptr %215, align 1, !tbaa !11
  %217 = zext i8 %216 to i32
  %218 = shl i32 %217, 8
  %219 = load i32, ptr %7, align 4, !tbaa !9
  %220 = add i32 %219, %218
  store i32 %220, ptr %7, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %213, %193
  %222 = load ptr, ptr %11, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i64 7
  %224 = load i8, ptr %223, align 1, !tbaa !11
  %225 = zext i8 %224 to i32
  %226 = shl i32 %225, 24
  %227 = load i32, ptr %9, align 4, !tbaa !9
  %228 = add i32 %227, %226
  store i32 %228, ptr %9, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %221, %193
  %230 = load ptr, ptr %11, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 6
  %232 = load i8, ptr %231, align 1, !tbaa !11
  %233 = zext i8 %232 to i32
  %234 = shl i32 %233, 16
  %235 = load i32, ptr %9, align 4, !tbaa !9
  %236 = add i32 %235, %234
  store i32 %236, ptr %9, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %229, %193
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %238, i64 5
  %240 = load i8, ptr %239, align 1, !tbaa !11
  %241 = zext i8 %240 to i32
  %242 = shl i32 %241, 8
  %243 = load i32, ptr %9, align 4, !tbaa !9
  %244 = add i32 %243, %242
  store i32 %244, ptr %9, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %237, %193
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = getelementptr inbounds i8, ptr %246, i64 4
  %248 = load i8, ptr %247, align 1, !tbaa !11
  %249 = zext i8 %248 to i32
  %250 = load i32, ptr %9, align 4, !tbaa !9
  %251 = add i32 %250, %249
  store i32 %251, ptr %9, align 4, !tbaa !9
  br label %252

252:                                              ; preds = %245, %193
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = getelementptr inbounds i8, ptr %253, i64 3
  %255 = load i8, ptr %254, align 1, !tbaa !11
  %256 = zext i8 %255 to i32
  %257 = shl i32 %256, 24
  %258 = load i32, ptr %8, align 4, !tbaa !9
  %259 = add i32 %258, %257
  store i32 %259, ptr %8, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %252, %193
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %261, i64 2
  %263 = load i8, ptr %262, align 1, !tbaa !11
  %264 = zext i8 %263 to i32
  %265 = shl i32 %264, 16
  %266 = load i32, ptr %8, align 4, !tbaa !9
  %267 = add i32 %266, %265
  store i32 %267, ptr %8, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %260, %193
  %269 = load ptr, ptr %11, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %269, i64 1
  %271 = load i8, ptr %270, align 1, !tbaa !11
  %272 = zext i8 %271 to i32
  %273 = shl i32 %272, 8
  %274 = load i32, ptr %8, align 4, !tbaa !9
  %275 = add i32 %274, %273
  store i32 %275, ptr %8, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %268, %193
  %277 = load ptr, ptr %11, align 8, !tbaa !5
  %278 = getelementptr inbounds i8, ptr %277, i64 0
  %279 = load i8, ptr %278, align 1, !tbaa !11
  %280 = zext i8 %279 to i32
  %281 = load i32, ptr %8, align 4, !tbaa !9
  %282 = add i32 %281, %280
  store i32 %282, ptr %8, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %276, %193
  br label %284

284:                                              ; preds = %283
  %285 = load i32, ptr %9, align 4, !tbaa !9
  %286 = load i32, ptr %8, align 4, !tbaa !9
  %287 = sub i32 %286, %285
  store i32 %287, ptr %8, align 4, !tbaa !9
  %288 = load i32, ptr %7, align 4, !tbaa !9
  %289 = load i32, ptr %8, align 4, !tbaa !9
  %290 = sub i32 %289, %288
  store i32 %290, ptr %8, align 4, !tbaa !9
  %291 = load i32, ptr %7, align 4, !tbaa !9
  %292 = lshr i32 %291, 13
  %293 = load i32, ptr %8, align 4, !tbaa !9
  %294 = xor i32 %293, %292
  store i32 %294, ptr %8, align 4, !tbaa !9
  %295 = load i32, ptr %7, align 4, !tbaa !9
  %296 = load i32, ptr %9, align 4, !tbaa !9
  %297 = sub i32 %296, %295
  store i32 %297, ptr %9, align 4, !tbaa !9
  %298 = load i32, ptr %8, align 4, !tbaa !9
  %299 = load i32, ptr %9, align 4, !tbaa !9
  %300 = sub i32 %299, %298
  store i32 %300, ptr %9, align 4, !tbaa !9
  %301 = load i32, ptr %8, align 4, !tbaa !9
  %302 = shl i32 %301, 8
  %303 = load i32, ptr %9, align 4, !tbaa !9
  %304 = xor i32 %303, %302
  store i32 %304, ptr %9, align 4, !tbaa !9
  %305 = load i32, ptr %8, align 4, !tbaa !9
  %306 = load i32, ptr %7, align 4, !tbaa !9
  %307 = sub i32 %306, %305
  store i32 %307, ptr %7, align 4, !tbaa !9
  %308 = load i32, ptr %9, align 4, !tbaa !9
  %309 = load i32, ptr %7, align 4, !tbaa !9
  %310 = sub i32 %309, %308
  store i32 %310, ptr %7, align 4, !tbaa !9
  %311 = load i32, ptr %9, align 4, !tbaa !9
  %312 = lshr i32 %311, 13
  %313 = load i32, ptr %7, align 4, !tbaa !9
  %314 = xor i32 %313, %312
  store i32 %314, ptr %7, align 4, !tbaa !9
  %315 = load i32, ptr %9, align 4, !tbaa !9
  %316 = load i32, ptr %8, align 4, !tbaa !9
  %317 = sub i32 %316, %315
  store i32 %317, ptr %8, align 4, !tbaa !9
  %318 = load i32, ptr %7, align 4, !tbaa !9
  %319 = load i32, ptr %8, align 4, !tbaa !9
  %320 = sub i32 %319, %318
  store i32 %320, ptr %8, align 4, !tbaa !9
  %321 = load i32, ptr %7, align 4, !tbaa !9
  %322 = lshr i32 %321, 12
  %323 = load i32, ptr %8, align 4, !tbaa !9
  %324 = xor i32 %323, %322
  store i32 %324, ptr %8, align 4, !tbaa !9
  %325 = load i32, ptr %7, align 4, !tbaa !9
  %326 = load i32, ptr %9, align 4, !tbaa !9
  %327 = sub i32 %326, %325
  store i32 %327, ptr %9, align 4, !tbaa !9
  %328 = load i32, ptr %8, align 4, !tbaa !9
  %329 = load i32, ptr %9, align 4, !tbaa !9
  %330 = sub i32 %329, %328
  store i32 %330, ptr %9, align 4, !tbaa !9
  %331 = load i32, ptr %8, align 4, !tbaa !9
  %332 = shl i32 %331, 16
  %333 = load i32, ptr %9, align 4, !tbaa !9
  %334 = xor i32 %333, %332
  store i32 %334, ptr %9, align 4, !tbaa !9
  %335 = load i32, ptr %8, align 4, !tbaa !9
  %336 = load i32, ptr %7, align 4, !tbaa !9
  %337 = sub i32 %336, %335
  store i32 %337, ptr %7, align 4, !tbaa !9
  %338 = load i32, ptr %9, align 4, !tbaa !9
  %339 = load i32, ptr %7, align 4, !tbaa !9
  %340 = sub i32 %339, %338
  store i32 %340, ptr %7, align 4, !tbaa !9
  %341 = load i32, ptr %9, align 4, !tbaa !9
  %342 = lshr i32 %341, 5
  %343 = load i32, ptr %7, align 4, !tbaa !9
  %344 = xor i32 %343, %342
  store i32 %344, ptr %7, align 4, !tbaa !9
  %345 = load i32, ptr %9, align 4, !tbaa !9
  %346 = load i32, ptr %8, align 4, !tbaa !9
  %347 = sub i32 %346, %345
  store i32 %347, ptr %8, align 4, !tbaa !9
  %348 = load i32, ptr %7, align 4, !tbaa !9
  %349 = load i32, ptr %8, align 4, !tbaa !9
  %350 = sub i32 %349, %348
  store i32 %350, ptr %8, align 4, !tbaa !9
  %351 = load i32, ptr %7, align 4, !tbaa !9
  %352 = lshr i32 %351, 3
  %353 = load i32, ptr %8, align 4, !tbaa !9
  %354 = xor i32 %353, %352
  store i32 %354, ptr %8, align 4, !tbaa !9
  %355 = load i32, ptr %7, align 4, !tbaa !9
  %356 = load i32, ptr %9, align 4, !tbaa !9
  %357 = sub i32 %356, %355
  store i32 %357, ptr %9, align 4, !tbaa !9
  %358 = load i32, ptr %8, align 4, !tbaa !9
  %359 = load i32, ptr %9, align 4, !tbaa !9
  %360 = sub i32 %359, %358
  store i32 %360, ptr %9, align 4, !tbaa !9
  %361 = load i32, ptr %8, align 4, !tbaa !9
  %362 = shl i32 %361, 10
  %363 = load i32, ptr %9, align 4, !tbaa !9
  %364 = xor i32 %363, %362
  store i32 %364, ptr %9, align 4, !tbaa !9
  %365 = load i32, ptr %8, align 4, !tbaa !9
  %366 = load i32, ptr %7, align 4, !tbaa !9
  %367 = sub i32 %366, %365
  store i32 %367, ptr %7, align 4, !tbaa !9
  %368 = load i32, ptr %9, align 4, !tbaa !9
  %369 = load i32, ptr %7, align 4, !tbaa !9
  %370 = sub i32 %369, %368
  store i32 %370, ptr %7, align 4, !tbaa !9
  %371 = load i32, ptr %9, align 4, !tbaa !9
  %372 = lshr i32 %371, 15
  %373 = load i32, ptr %7, align 4, !tbaa !9
  %374 = xor i32 %373, %372
  store i32 %374, ptr %7, align 4, !tbaa !9
  br label %375

375:                                              ; preds = %284
  br label %376

376:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  br label %377

377:                                              ; preds = %376
  br label %378

378:                                              ; preds = %377
  br label %379

379:                                              ; preds = %378
  br label %380

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380
  store ptr null, ptr %6, align 8, !tbaa !5
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.table_cmap, ptr %382, i32 0, i32 0
  %384 = load ptr, ptr %383, align 8, !tbaa !14
  %385 = icmp ne ptr %384, null
  br i1 %385, label %386, label %500

386:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %7, align 4, !tbaa !9
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.table_cmap, ptr %389, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8, !tbaa !14
  %392 = getelementptr inbounds %struct.cmap_Entry, ptr %391, i32 0, i32 0
  %393 = getelementptr inbounds %struct.UT_hash_handle, ptr %392, i32 0, i32 0
  %394 = load ptr, ptr %393, align 8, !tbaa !16
  %395 = getelementptr inbounds %struct.UT_hash_table, ptr %394, i32 0, i32 1
  %396 = load i32, ptr %395, align 8, !tbaa !21
  %397 = sub i32 %396, 1
  %398 = and i32 %388, %397
  store i32 %398, ptr %12, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %387
  br label %400

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %400
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.table_cmap, ptr %402, i32 0, i32 0
  %404 = load ptr, ptr %403, align 8, !tbaa !14
  %405 = getelementptr inbounds %struct.cmap_Entry, ptr %404, i32 0, i32 0
  %406 = getelementptr inbounds %struct.UT_hash_handle, ptr %405, i32 0, i32 0
  %407 = load ptr, ptr %406, align 8, !tbaa !16
  %408 = getelementptr inbounds %struct.UT_hash_table, ptr %407, i32 0, i32 0
  %409 = load ptr, ptr %408, align 8, !tbaa !24
  %410 = load i32, ptr %12, align 4, !tbaa !9
  %411 = zext i32 %410 to i64
  %412 = getelementptr inbounds %struct.UT_hash_bucket, ptr %409, i64 %411
  %413 = getelementptr inbounds %struct.UT_hash_bucket, ptr %412, i32 0, i32 0
  %414 = load ptr, ptr %413, align 8, !tbaa !25
  %415 = icmp ne ptr %414, null
  br i1 %415, label %416, label %443

416:                                              ; preds = %401
  br label %417

417:                                              ; preds = %416
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.table_cmap, ptr %418, i32 0, i32 0
  %420 = load ptr, ptr %419, align 8, !tbaa !14
  %421 = getelementptr inbounds %struct.cmap_Entry, ptr %420, i32 0, i32 0
  %422 = getelementptr inbounds %struct.UT_hash_handle, ptr %421, i32 0, i32 0
  %423 = load ptr, ptr %422, align 8, !tbaa !16
  %424 = getelementptr inbounds %struct.UT_hash_table, ptr %423, i32 0, i32 0
  %425 = load ptr, ptr %424, align 8, !tbaa !24
  %426 = load i32, ptr %12, align 4, !tbaa !9
  %427 = zext i32 %426 to i64
  %428 = getelementptr inbounds %struct.UT_hash_bucket, ptr %425, i64 %427
  %429 = getelementptr inbounds %struct.UT_hash_bucket, ptr %428, i32 0, i32 0
  %430 = load ptr, ptr %429, align 8, !tbaa !25
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.table_cmap, ptr %431, i32 0, i32 0
  %433 = load ptr, ptr %432, align 8, !tbaa !14
  %434 = getelementptr inbounds %struct.cmap_Entry, ptr %433, i32 0, i32 0
  %435 = getelementptr inbounds %struct.UT_hash_handle, ptr %434, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8, !tbaa !16
  %437 = getelementptr inbounds %struct.UT_hash_table, ptr %436, i32 0, i32 5
  %438 = load i64, ptr %437, align 8, !tbaa !27
  %439 = sub i64 0, %438
  %440 = getelementptr inbounds i8, ptr %430, i64 %439
  store ptr %440, ptr %6, align 8, !tbaa !5
  br label %441

441:                                              ; preds = %417
  br label %442

442:                                              ; preds = %441
  br label %444

443:                                              ; preds = %401
  store ptr null, ptr %6, align 8, !tbaa !5
  br label %444

444:                                              ; preds = %443, %442
  br label %445

445:                                              ; preds = %496, %444
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = icmp ne ptr %446, null
  br i1 %447, label %448, label %497

448:                                              ; preds = %445
  %449 = load ptr, ptr %6, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.cmap_Entry, ptr %449, i32 0, i32 0
  %451 = getelementptr inbounds %struct.UT_hash_handle, ptr %450, i32 0, i32 7
  %452 = load i32, ptr %451, align 4, !tbaa !28
  %453 = load i32, ptr %7, align 4, !tbaa !9
  %454 = icmp eq i32 %452, %453
  br i1 %454, label %455, label %471

455:                                              ; preds = %448
  %456 = load ptr, ptr %6, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct.cmap_Entry, ptr %456, i32 0, i32 0
  %458 = getelementptr inbounds %struct.UT_hash_handle, ptr %457, i32 0, i32 6
  %459 = load i32, ptr %458, align 8, !tbaa !29
  %460 = zext i32 %459 to i64
  %461 = icmp eq i64 %460, 4
  br i1 %461, label %462, label %471

462:                                              ; preds = %455
  %463 = load ptr, ptr %6, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.cmap_Entry, ptr %463, i32 0, i32 0
  %465 = getelementptr inbounds %struct.UT_hash_handle, ptr %464, i32 0, i32 5
  %466 = load ptr, ptr %465, align 8, !tbaa !30
  %467 = call i32 @memcmp(ptr noundef %466, ptr noundef %5, i64 noundef 4) #5
  %468 = icmp eq i32 %467, 0
  br i1 %468, label %469, label %470

469:                                              ; preds = %462
  br label %497

470:                                              ; preds = %462
  br label %471

471:                                              ; preds = %470, %455, %448
  %472 = load ptr, ptr %6, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.cmap_Entry, ptr %472, i32 0, i32 0
  %474 = getelementptr inbounds %struct.UT_hash_handle, ptr %473, i32 0, i32 4
  %475 = load ptr, ptr %474, align 8, !tbaa !31
  %476 = icmp ne ptr %475, null
  br i1 %476, label %477, label %495

477:                                              ; preds = %471
  br label %478

478:                                              ; preds = %477
  %479 = load ptr, ptr %6, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.cmap_Entry, ptr %479, i32 0, i32 0
  %481 = getelementptr inbounds %struct.UT_hash_handle, ptr %480, i32 0, i32 4
  %482 = load ptr, ptr %481, align 8, !tbaa !31
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.table_cmap, ptr %483, i32 0, i32 0
  %485 = load ptr, ptr %484, align 8, !tbaa !14
  %486 = getelementptr inbounds %struct.cmap_Entry, ptr %485, i32 0, i32 0
  %487 = getelementptr inbounds %struct.UT_hash_handle, ptr %486, i32 0, i32 0
  %488 = load ptr, ptr %487, align 8, !tbaa !16
  %489 = getelementptr inbounds %struct.UT_hash_table, ptr %488, i32 0, i32 5
  %490 = load i64, ptr %489, align 8, !tbaa !27
  %491 = sub i64 0, %490
  %492 = getelementptr inbounds i8, ptr %482, i64 %491
  store ptr %492, ptr %6, align 8, !tbaa !5
  br label %493

493:                                              ; preds = %478
  br label %494

494:                                              ; preds = %493
  br label %496

495:                                              ; preds = %471
  store ptr null, ptr %6, align 8, !tbaa !5
  br label %496

496:                                              ; preds = %495, %494
  br label %445, !llvm.loop !32

497:                                              ; preds = %469, %445
  br label %498

498:                                              ; preds = %497
  br label %499

499:                                              ; preds = %498
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %500

500:                                              ; preds = %499, %381
  br label %501

501:                                              ; preds = %500
  br label %502

502:                                              ; preds = %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %503

503:                                              ; preds = %502
  br label %504

504:                                              ; preds = %503
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = icmp ne ptr %505, null
  br i1 %506, label %507, label %710

507:                                              ; preds = %504
  %508 = load ptr, ptr getelementptr inbounds (%struct.otfcc_HandlePackage, ptr @otfcc_iHandle, i32 0, i32 3), align 8, !tbaa !33
  %509 = load ptr, ptr %6, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.cmap_Entry, ptr %509, i32 0, i32 2
  call void %508(ptr noundef %510)
  br label %511

511:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  %512 = load ptr, ptr %6, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.cmap_Entry, ptr %512, i32 0, i32 0
  store ptr %513, ptr %13, align 8, !tbaa !5
  %514 = load ptr, ptr %13, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.UT_hash_handle, ptr %514, i32 0, i32 1
  %516 = load ptr, ptr %515, align 8, !tbaa !35
  %517 = icmp eq ptr %516, null
  br i1 %517, label %518, label %540

518:                                              ; preds = %511
  %519 = load ptr, ptr %13, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.UT_hash_handle, ptr %519, i32 0, i32 2
  %521 = load ptr, ptr %520, align 8, !tbaa !36
  %522 = icmp eq ptr %521, null
  br i1 %522, label %523, label %540

523:                                              ; preds = %518
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.table_cmap, ptr %524, i32 0, i32 0
  %526 = load ptr, ptr %525, align 8, !tbaa !14
  %527 = getelementptr inbounds %struct.cmap_Entry, ptr %526, i32 0, i32 0
  %528 = getelementptr inbounds %struct.UT_hash_handle, ptr %527, i32 0, i32 0
  %529 = load ptr, ptr %528, align 8, !tbaa !16
  %530 = getelementptr inbounds %struct.UT_hash_table, ptr %529, i32 0, i32 0
  %531 = load ptr, ptr %530, align 8, !tbaa !24
  call void @free(ptr noundef %531) #4
  %532 = load ptr, ptr %4, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.table_cmap, ptr %532, i32 0, i32 0
  %534 = load ptr, ptr %533, align 8, !tbaa !14
  %535 = getelementptr inbounds %struct.cmap_Entry, ptr %534, i32 0, i32 0
  %536 = getelementptr inbounds %struct.UT_hash_handle, ptr %535, i32 0, i32 0
  %537 = load ptr, ptr %536, align 8, !tbaa !16
  call void @free(ptr noundef %537) #4
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.table_cmap, ptr %538, i32 0, i32 0
  store ptr null, ptr %539, align 8, !tbaa !14
  br label %706

540:                                              ; preds = %518, %511
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %541 = load ptr, ptr %13, align 8, !tbaa !5
  %542 = load ptr, ptr %4, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.table_cmap, ptr %542, i32 0, i32 0
  %544 = load ptr, ptr %543, align 8, !tbaa !14
  %545 = getelementptr inbounds %struct.cmap_Entry, ptr %544, i32 0, i32 0
  %546 = getelementptr inbounds %struct.UT_hash_handle, ptr %545, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8, !tbaa !16
  %548 = getelementptr inbounds %struct.UT_hash_table, ptr %547, i32 0, i32 4
  %549 = load ptr, ptr %548, align 8, !tbaa !37
  %550 = icmp eq ptr %541, %549
  br i1 %550, label %551, label %571

551:                                              ; preds = %540
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.UT_hash_handle, ptr %552, i32 0, i32 1
  %554 = load ptr, ptr %553, align 8, !tbaa !35
  %555 = load ptr, ptr %4, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.table_cmap, ptr %555, i32 0, i32 0
  %557 = load ptr, ptr %556, align 8, !tbaa !14
  %558 = getelementptr inbounds %struct.cmap_Entry, ptr %557, i32 0, i32 0
  %559 = getelementptr inbounds %struct.UT_hash_handle, ptr %558, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8, !tbaa !16
  %561 = getelementptr inbounds %struct.UT_hash_table, ptr %560, i32 0, i32 5
  %562 = load i64, ptr %561, align 8, !tbaa !27
  %563 = getelementptr inbounds i8, ptr %554, i64 %562
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.table_cmap, ptr %564, i32 0, i32 0
  %566 = load ptr, ptr %565, align 8, !tbaa !14
  %567 = getelementptr inbounds %struct.cmap_Entry, ptr %566, i32 0, i32 0
  %568 = getelementptr inbounds %struct.UT_hash_handle, ptr %567, i32 0, i32 0
  %569 = load ptr, ptr %568, align 8, !tbaa !16
  %570 = getelementptr inbounds %struct.UT_hash_table, ptr %569, i32 0, i32 4
  store ptr %563, ptr %570, align 8, !tbaa !37
  br label %571

571:                                              ; preds = %551, %540
  %572 = load ptr, ptr %13, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.UT_hash_handle, ptr %572, i32 0, i32 1
  %574 = load ptr, ptr %573, align 8, !tbaa !35
  %575 = icmp ne ptr %574, null
  br i1 %575, label %576, label %593

576:                                              ; preds = %571
  %577 = load ptr, ptr %13, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.UT_hash_handle, ptr %577, i32 0, i32 2
  %579 = load ptr, ptr %578, align 8, !tbaa !36
  %580 = load ptr, ptr %13, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.UT_hash_handle, ptr %580, i32 0, i32 1
  %582 = load ptr, ptr %581, align 8, !tbaa !35
  %583 = load ptr, ptr %4, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.table_cmap, ptr %583, i32 0, i32 0
  %585 = load ptr, ptr %584, align 8, !tbaa !14
  %586 = getelementptr inbounds %struct.cmap_Entry, ptr %585, i32 0, i32 0
  %587 = getelementptr inbounds %struct.UT_hash_handle, ptr %586, i32 0, i32 0
  %588 = load ptr, ptr %587, align 8, !tbaa !16
  %589 = getelementptr inbounds %struct.UT_hash_table, ptr %588, i32 0, i32 5
  %590 = load i64, ptr %589, align 8, !tbaa !27
  %591 = getelementptr inbounds i8, ptr %582, i64 %590
  %592 = getelementptr inbounds %struct.UT_hash_handle, ptr %591, i32 0, i32 2
  store ptr %579, ptr %592, align 8, !tbaa !36
  br label %602

593:                                              ; preds = %571
  br label %594

594:                                              ; preds = %593
  %595 = load ptr, ptr %13, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.UT_hash_handle, ptr %595, i32 0, i32 2
  %597 = load ptr, ptr %596, align 8, !tbaa !36
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.table_cmap, ptr %598, i32 0, i32 0
  store ptr %597, ptr %599, align 8, !tbaa !14
  br label %600

600:                                              ; preds = %594
  br label %601

601:                                              ; preds = %600
  br label %602

602:                                              ; preds = %601, %576
  %603 = load ptr, ptr %13, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.UT_hash_handle, ptr %603, i32 0, i32 2
  %605 = load ptr, ptr %604, align 8, !tbaa !36
  %606 = icmp ne ptr %605, null
  br i1 %606, label %607, label %624

607:                                              ; preds = %602
  %608 = load ptr, ptr %13, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.UT_hash_handle, ptr %608, i32 0, i32 1
  %610 = load ptr, ptr %609, align 8, !tbaa !35
  %611 = load ptr, ptr %13, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.UT_hash_handle, ptr %611, i32 0, i32 2
  %613 = load ptr, ptr %612, align 8, !tbaa !36
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.table_cmap, ptr %614, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !14
  %617 = getelementptr inbounds %struct.cmap_Entry, ptr %616, i32 0, i32 0
  %618 = getelementptr inbounds %struct.UT_hash_handle, ptr %617, i32 0, i32 0
  %619 = load ptr, ptr %618, align 8, !tbaa !16
  %620 = getelementptr inbounds %struct.UT_hash_table, ptr %619, i32 0, i32 5
  %621 = load i64, ptr %620, align 8, !tbaa !27
  %622 = getelementptr inbounds i8, ptr %613, i64 %621
  %623 = getelementptr inbounds %struct.UT_hash_handle, ptr %622, i32 0, i32 1
  store ptr %610, ptr %623, align 8, !tbaa !35
  br label %624

624:                                              ; preds = %607, %602
  br label %625

625:                                              ; preds = %624
  %626 = load ptr, ptr %13, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.UT_hash_handle, ptr %626, i32 0, i32 7
  %628 = load i32, ptr %627, align 4, !tbaa !38
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.table_cmap, ptr %629, i32 0, i32 0
  %631 = load ptr, ptr %630, align 8, !tbaa !14
  %632 = getelementptr inbounds %struct.cmap_Entry, ptr %631, i32 0, i32 0
  %633 = getelementptr inbounds %struct.UT_hash_handle, ptr %632, i32 0, i32 0
  %634 = load ptr, ptr %633, align 8, !tbaa !16
  %635 = getelementptr inbounds %struct.UT_hash_table, ptr %634, i32 0, i32 1
  %636 = load i32, ptr %635, align 8, !tbaa !21
  %637 = sub i32 %636, 1
  %638 = and i32 %628, %637
  store i32 %638, ptr %14, align 4, !tbaa !9
  br label %639

639:                                              ; preds = %625
  br label %640

640:                                              ; preds = %639
  br label %641

641:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.table_cmap, ptr %642, i32 0, i32 0
  %644 = load ptr, ptr %643, align 8, !tbaa !14
  %645 = getelementptr inbounds %struct.cmap_Entry, ptr %644, i32 0, i32 0
  %646 = getelementptr inbounds %struct.UT_hash_handle, ptr %645, i32 0, i32 0
  %647 = load ptr, ptr %646, align 8, !tbaa !16
  %648 = getelementptr inbounds %struct.UT_hash_table, ptr %647, i32 0, i32 0
  %649 = load ptr, ptr %648, align 8, !tbaa !24
  %650 = load i32, ptr %14, align 4, !tbaa !9
  %651 = zext i32 %650 to i64
  %652 = getelementptr inbounds %struct.UT_hash_bucket, ptr %649, i64 %651
  store ptr %652, ptr %15, align 8, !tbaa !5
  %653 = load ptr, ptr %15, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.UT_hash_bucket, ptr %653, i32 0, i32 1
  %655 = load i32, ptr %654, align 8, !tbaa !39
  %656 = add i32 %655, -1
  store i32 %656, ptr %654, align 8, !tbaa !39
  %657 = load ptr, ptr %15, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.UT_hash_bucket, ptr %657, i32 0, i32 0
  %659 = load ptr, ptr %658, align 8, !tbaa !25
  %660 = load ptr, ptr %13, align 8, !tbaa !5
  %661 = icmp eq ptr %659, %660
  br i1 %661, label %662, label %668

662:                                              ; preds = %641
  %663 = load ptr, ptr %13, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.UT_hash_handle, ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !40
  %666 = load ptr, ptr %15, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.UT_hash_bucket, ptr %666, i32 0, i32 0
  store ptr %665, ptr %667, align 8, !tbaa !25
  br label %668

668:                                              ; preds = %662, %641
  %669 = load ptr, ptr %13, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.UT_hash_handle, ptr %669, i32 0, i32 3
  %671 = load ptr, ptr %670, align 8, !tbaa !41
  %672 = icmp ne ptr %671, null
  br i1 %672, label %673, label %681

673:                                              ; preds = %668
  %674 = load ptr, ptr %13, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.UT_hash_handle, ptr %674, i32 0, i32 4
  %676 = load ptr, ptr %675, align 8, !tbaa !40
  %677 = load ptr, ptr %13, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.UT_hash_handle, ptr %677, i32 0, i32 3
  %679 = load ptr, ptr %678, align 8, !tbaa !41
  %680 = getelementptr inbounds %struct.UT_hash_handle, ptr %679, i32 0, i32 4
  store ptr %676, ptr %680, align 8, !tbaa !40
  br label %681

681:                                              ; preds = %673, %668
  %682 = load ptr, ptr %13, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.UT_hash_handle, ptr %682, i32 0, i32 4
  %684 = load ptr, ptr %683, align 8, !tbaa !40
  %685 = icmp ne ptr %684, null
  br i1 %685, label %686, label %694

686:                                              ; preds = %681
  %687 = load ptr, ptr %13, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.UT_hash_handle, ptr %687, i32 0, i32 3
  %689 = load ptr, ptr %688, align 8, !tbaa !41
  %690 = load ptr, ptr %13, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.UT_hash_handle, ptr %690, i32 0, i32 4
  %692 = load ptr, ptr %691, align 8, !tbaa !40
  %693 = getelementptr inbounds %struct.UT_hash_handle, ptr %692, i32 0, i32 3
  store ptr %689, ptr %693, align 8, !tbaa !41
  br label %694

694:                                              ; preds = %686, %681
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  br label %695

695:                                              ; preds = %694
  br label %696

696:                                              ; preds = %695
  %697 = load ptr, ptr %4, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.table_cmap, ptr %697, i32 0, i32 0
  %699 = load ptr, ptr %698, align 8, !tbaa !14
  %700 = getelementptr inbounds %struct.cmap_Entry, ptr %699, i32 0, i32 0
  %701 = getelementptr inbounds %struct.UT_hash_handle, ptr %700, i32 0, i32 0
  %702 = load ptr, ptr %701, align 8, !tbaa !16
  %703 = getelementptr inbounds %struct.UT_hash_table, ptr %702, i32 0, i32 3
  %704 = load i32, ptr %703, align 8, !tbaa !42
  %705 = add i32 %704, -1
  store i32 %705, ptr %703, align 8, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %706

706:                                              ; preds = %696, %523
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  br label %707

707:                                              ; preds = %706
  br label %708

708:                                              ; preds = %707
  %709 = load ptr, ptr %6, align 8, !tbaa !5
  call void @free(ptr noundef %709) #4
  store ptr null, ptr %6, align 8, !tbaa !5
  store i1 true, ptr %3, align 1
  store i32 1, ptr %16, align 4
  br label %711

710:                                              ; preds = %504
  store i1 false, ptr %3, align 1
  store i32 1, ptr %16, align 4
  br label %711

711:                                              ; preds = %710, %708
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  %712 = load i1, ptr %3, align 1
  ret i1 %712
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 = { nounwind }
attributes #5 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !6, i64 0}
!15 = !{!"", !6, i64 0, !6, i64 8}
!16 = !{!17, !6, i64 0}
!17 = !{!"", !18, i64 0, !10, i64 56, !19, i64 64}
!18 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52}
!19 = !{!"otfcc_Handle", !10, i64 0, !20, i64 4, !6, i64 8}
!20 = !{!"short", !7, i64 0}
!21 = !{!22, !10, i64 8}
!22 = !{!"UT_hash_table", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !23, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!23 = !{!"long", !7, i64 0}
!24 = !{!22, !6, i64 0}
!25 = !{!26, !6, i64 0}
!26 = !{!"UT_hash_bucket", !6, i64 0, !10, i64 8, !10, i64 12}
!27 = !{!22, !23, i64 32}
!28 = !{!17, !10, i64 52}
!29 = !{!17, !10, i64 48}
!30 = !{!17, !6, i64 40}
!31 = !{!17, !6, i64 32}
!32 = distinct !{!32, !13}
!33 = !{!34, !6, i64 24}
!34 = !{!"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}
!35 = !{!18, !6, i64 8}
!36 = !{!18, !6, i64 16}
!37 = !{!22, !6, i64 24}
!38 = !{!18, !10, i64 52}
!39 = !{!26, !10, i64 8}
!40 = !{!18, !6, i64 32}
!41 = !{!18, !6, i64 24}
!42 = !{!22, !10, i64 16}


; 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.UT_hash_bucket = type { ptr, i32, i32 }

@otfcc_iHandle = external local_unnamed_addr constant %struct.otfcc_HandlePackage, align 8

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

; Function Attrs: nounwind uwtable
define dso_local zeroext i1 @otfcc_unmapCmap(ptr nocapture noundef %0, i32 noundef %1) local_unnamed_addr #1 {
  %3 = alloca i32, align 4
  store i32 %1, ptr %3, align 4, !tbaa !5
  %4 = and i32 %1, -16777216
  %5 = and i32 %1, 16711680
  %6 = and i32 %1, 65280
  %7 = and i32 %1, 255
  %8 = add i32 %4, 17973517
  %9 = add i32 %8, %5
  %10 = add i32 %9, %6
  %11 = add i32 %10, %7
  %12 = xor i32 %11, 522093
  %13 = sub i32 -1622558010, %12
  %14 = shl i32 %12, 8
  %15 = xor i32 %13, %14
  %16 = add i32 %12, %15
  %17 = sub i32 -17973517, %16
  %18 = lshr i32 %15, 13
  %19 = xor i32 %17, %18
  %20 = add i32 %15, %19
  %21 = sub i32 %12, %20
  %22 = lshr i32 %19, 12
  %23 = xor i32 %21, %22
  %24 = add i32 %19, %23
  %25 = sub i32 %15, %24
  %26 = shl i32 %23, 16
  %27 = xor i32 %25, %26
  %28 = add i32 %23, %27
  %29 = sub i32 %19, %28
  %30 = lshr i32 %27, 5
  %31 = xor i32 %29, %30
  %32 = add i32 %27, %31
  %33 = sub i32 %23, %32
  %34 = lshr i32 %31, 3
  %35 = xor i32 %33, %34
  %36 = add i32 %31, %35
  %37 = sub i32 %27, %36
  %38 = shl i32 %35, 10
  %39 = xor i32 %37, %38
  %40 = add i32 %35, %39
  %41 = sub i32 %31, %40
  %42 = lshr i32 %39, 15
  %43 = xor i32 %41, %42
  %44 = load ptr, ptr %0, align 8, !tbaa !9
  %.not = icmp eq ptr %44, null
  br i1 %.not, label %.thread, label %45

45:                                               ; preds = %2
  %46 = load ptr, ptr %44, align 8, !tbaa !12
  %47 = getelementptr inbounds i8, ptr %46, i64 8
  %48 = load i32, ptr %47, align 8, !tbaa !17
  %49 = add i32 %48, -1
  %50 = and i32 %49, %43
  %51 = load ptr, ptr %46, align 8, !tbaa !20
  %52 = zext i32 %50 to i64
  %53 = getelementptr inbounds %struct.UT_hash_bucket, ptr %51, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !21
  %.not234 = icmp eq ptr %54, null
  br i1 %.not234, label %.thread, label %.lr.ph

.lr.ph:                                           ; preds = %45
  %55 = getelementptr inbounds i8, ptr %46, i64 32
  %56 = load i64, ptr %55, align 8, !tbaa !23
  %57 = sub i64 0, %56
  %58 = getelementptr inbounds i8, ptr %54, i64 %57
  %59 = getelementptr inbounds i8, ptr %46, i64 32
  br label %60

60:                                               ; preds = %75, %.lr.ph
  %.1261 = phi ptr [ %58, %.lr.ph ], [ %78, %75 ]
  %61 = getelementptr inbounds i8, ptr %.1261, i64 52
  %62 = load i32, ptr %61, align 4, !tbaa !24
  %63 = icmp eq i32 %62, %43
  br i1 %63, label %64, label %72

64:                                               ; preds = %60
  %65 = getelementptr inbounds i8, ptr %.1261, i64 48
  %66 = load i32, ptr %65, align 8, !tbaa !25
  %67 = icmp eq i32 %66, 4
  br i1 %67, label %68, label %72

68:                                               ; preds = %64
  %69 = getelementptr inbounds i8, ptr %.1261, i64 40
  %70 = load ptr, ptr %69, align 8, !tbaa !26
  %bcmp = call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %70, ptr noundef nonnull dereferenceable(4) %3, i64 4)
  %71 = icmp eq i32 %bcmp, 0
  br i1 %71, label %79, label %72

72:                                               ; preds = %68, %64, %60
  %73 = getelementptr inbounds i8, ptr %.1261, i64 32
  %74 = load ptr, ptr %73, align 8, !tbaa !27
  %.not236 = icmp eq ptr %74, null
  br i1 %.not236, label %.thread, label %75

75:                                               ; preds = %72
  %76 = load i64, ptr %59, align 8, !tbaa !23
  %77 = sub i64 0, %76
  %78 = getelementptr inbounds i8, ptr %74, i64 %77
  br label %60, !llvm.loop !28

79:                                               ; preds = %68
  %80 = getelementptr inbounds i8, ptr %.1261, i64 52
  %81 = load ptr, ptr getelementptr inbounds (i8, ptr @otfcc_iHandle, i64 24), align 8, !tbaa !30
  %82 = getelementptr inbounds i8, ptr %.1261, i64 64
  tail call void %81(ptr noundef nonnull %82) #3
  %83 = getelementptr inbounds i8, ptr %.1261, i64 8
  %84 = load ptr, ptr %83, align 8, !tbaa !32
  %85 = icmp eq ptr %84, null
  br i1 %85, label %86, label %96

86:                                               ; preds = %79
  %87 = getelementptr inbounds i8, ptr %.1261, i64 16
  %88 = load ptr, ptr %87, align 8, !tbaa !33
  %89 = icmp eq ptr %88, null
  br i1 %89, label %90, label %96

90:                                               ; preds = %86
  %91 = load ptr, ptr %0, align 8, !tbaa !9
  %92 = load ptr, ptr %91, align 8, !tbaa !12
  %93 = load ptr, ptr %92, align 8, !tbaa !20
  tail call void @free(ptr noundef %93) #3
  %94 = load ptr, ptr %0, align 8, !tbaa !9
  %95 = load ptr, ptr %94, align 8, !tbaa !12
  tail call void @free(ptr noundef %95) #3
  store ptr null, ptr %0, align 8, !tbaa !9
  br label %147

96:                                               ; preds = %86, %79
  %97 = load ptr, ptr %0, align 8, !tbaa !9
  %98 = load ptr, ptr %97, align 8, !tbaa !12
  %99 = getelementptr inbounds i8, ptr %98, i64 24
  %100 = load ptr, ptr %99, align 8, !tbaa !34
  %101 = icmp eq ptr %.1261, %100
  br i1 %101, label %102, label %106

102:                                              ; preds = %96
  %103 = getelementptr inbounds i8, ptr %98, i64 32
  %104 = load i64, ptr %103, align 8, !tbaa !23
  %105 = getelementptr inbounds i8, ptr %84, i64 %104
  store ptr %105, ptr %99, align 8, !tbaa !34
  br label %106

106:                                              ; preds = %102, %96
  %107 = getelementptr inbounds i8, ptr %.1261, i64 16
  %108 = load ptr, ptr %107, align 8, !tbaa !33
  br i1 %85, label %.thread271, label %109

.thread271:                                       ; preds = %106
  store ptr %108, ptr %0, align 8, !tbaa !9
  %.pre.pre = load ptr, ptr %108, align 8, !tbaa !12
  br label %114

109:                                              ; preds = %106
  %110 = getelementptr inbounds i8, ptr %98, i64 32
  %111 = load i64, ptr %110, align 8, !tbaa !23
  %112 = getelementptr inbounds i8, ptr %84, i64 %111
  %113 = getelementptr inbounds i8, ptr %112, i64 16
  store ptr %108, ptr %113, align 8, !tbaa !33
  %.not239 = icmp eq ptr %108, null
  br i1 %.not239, label %119, label %114

114:                                              ; preds = %.thread271, %109
  %.pre274 = phi ptr [ %.pre.pre, %.thread271 ], [ %98, %109 ]
  %115 = getelementptr inbounds i8, ptr %.pre274, i64 32
  %116 = load i64, ptr %115, align 8, !tbaa !23
  %117 = getelementptr inbounds i8, ptr %108, i64 %116
  %118 = getelementptr inbounds i8, ptr %117, i64 8
  store ptr %84, ptr %118, align 8, !tbaa !32
  br label %119

119:                                              ; preds = %109, %114
  %.pre275 = phi ptr [ %98, %109 ], [ %.pre274, %114 ]
  %120 = load i32, ptr %80, align 4, !tbaa !35
  %121 = getelementptr inbounds i8, ptr %.pre275, i64 8
  %122 = load i32, ptr %121, align 8, !tbaa !17
  %123 = add i32 %122, -1
  %124 = and i32 %123, %120
  %125 = load ptr, ptr %.pre275, align 8, !tbaa !20
  %126 = zext i32 %124 to i64
  %127 = getelementptr inbounds %struct.UT_hash_bucket, ptr %125, i64 %126
  %128 = getelementptr inbounds i8, ptr %127, i64 8
  %129 = load i32, ptr %128, align 8, !tbaa !36
  %130 = add i32 %129, -1
  store i32 %130, ptr %128, align 8, !tbaa !36
  %131 = load ptr, ptr %127, align 8, !tbaa !21
  %132 = icmp eq ptr %131, %.1261
  br i1 %132, label %133, label %136

133:                                              ; preds = %119
  %134 = getelementptr inbounds i8, ptr %.1261, i64 32
  %135 = load ptr, ptr %134, align 8, !tbaa !37
  store ptr %135, ptr %127, align 8, !tbaa !21
  br label %136

136:                                              ; preds = %133, %119
  %137 = getelementptr inbounds i8, ptr %.1261, i64 24
  %138 = load ptr, ptr %137, align 8, !tbaa !38
  %.not240 = icmp eq ptr %138, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.1261, i64 32
  %.pre263 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !37
  br i1 %.not240, label %._crit_edge, label %139

139:                                              ; preds = %136
  %140 = getelementptr inbounds i8, ptr %138, i64 32
  store ptr %.pre263, ptr %140, align 8, !tbaa !37
  br label %._crit_edge

._crit_edge:                                      ; preds = %136, %139
  %.not241 = icmp eq ptr %.pre263, null
  br i1 %.not241, label %143, label %141

141:                                              ; preds = %._crit_edge
  %142 = getelementptr inbounds i8, ptr %.pre263, i64 24
  store ptr %138, ptr %142, align 8, !tbaa !38
  br label %143

143:                                              ; preds = %141, %._crit_edge
  %144 = getelementptr inbounds i8, ptr %.pre275, i64 16
  %145 = load i32, ptr %144, align 8, !tbaa !39
  %146 = add i32 %145, -1
  store i32 %146, ptr %144, align 8, !tbaa !39
  br label %147

147:                                              ; preds = %143, %90
  tail call void @free(ptr noundef nonnull %.1261) #3
  br label %.thread

.thread:                                          ; preds = %72, %45, %2, %147
  %.not237244 = phi i1 [ true, %147 ], [ false, %2 ], [ false, %45 ], [ false, %72 ]
  ret i1 %.not237244
}

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

attributes #0 = { 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 #1 = { 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 #2 = { nofree nounwind willreturn memory(argmem: read) }
attributes #3 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!13, !11, i64 0}
!13 = !{!"", !14, i64 0, !6, i64 56, !15, i64 64}
!14 = !{!"UT_hash_handle", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !6, i64 48, !6, i64 52}
!15 = !{!"otfcc_Handle", !6, i64 0, !16, i64 4, !11, i64 8}
!16 = !{!"short", !7, i64 0}
!17 = !{!18, !6, i64 8}
!18 = !{!"UT_hash_table", !11, i64 0, !6, i64 8, !6, i64 12, !6, i64 16, !11, i64 24, !19, i64 32, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56}
!19 = !{!"long", !7, i64 0}
!20 = !{!18, !11, i64 0}
!21 = !{!22, !11, i64 0}
!22 = !{!"UT_hash_bucket", !11, i64 0, !6, i64 8, !6, i64 12}
!23 = !{!18, !19, i64 32}
!24 = !{!13, !6, i64 52}
!25 = !{!13, !6, i64 48}
!26 = !{!13, !11, i64 40}
!27 = !{!13, !11, i64 32}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!31, !11, i64 24}
!31 = !{!"otfcc_HandlePackage", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88}
!32 = !{!14, !11, i64 8}
!33 = !{!14, !11, i64 16}
!34 = !{!18, !11, i64 24}
!35 = !{!14, !6, i64 52}
!36 = !{!22, !6, i64 8}
!37 = !{!14, !11, i64 32}
!38 = !{!14, !11, i64 24}
!39 = !{!18, !6, i64 16}


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