; 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.__caryll_elementinterface_table_cmap = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._json_value = type { ptr, i32, %union.anon, %union.anon.2 }
%union.anon = type { %struct.anon }
%struct.anon = type { i32, ptr }
%union.anon.2 = type { ptr }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.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.cmap_UVS_Entry = type { %struct.UT_hash_handle, %struct.cmap_UVS_key, %struct.otfcc_Handle }
%struct.cmap_UVS_key = type { i32, i32 }

@table_iCmap = external dso_local constant %struct.__caryll_elementinterface_table_cmap, align 8
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1

; 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 uwtable
declare hidden i32 @by_unicode(ptr noundef, ptr noundef) #1

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

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

declare ptr @sdsempty() #2

; Function Attrs: nounwind uwtable
define dso_local ptr @otfcc_parseCmap(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %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 ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct._json_value, ptr %31, i32 0, i32 1
  %33 = load i32, ptr %32, align 8, !tbaa !9
  %34 = icmp ne i32 %33, 1
  br i1 %34, label %35, label %36

35:                                               ; preds = %2
  store ptr null, ptr %3, align 8
  br label %706

36:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  %37 = load ptr, ptr getelementptr inbounds (%struct.__caryll_elementinterface_table_cmap, ptr @table_iCmap, i32 0, i32 6), align 8, !tbaa !12
  %38 = call ptr (...) %37()
  store ptr %38, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #4
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.otfcc_Options, ptr %39, i32 0, i32 24
  %41 = load ptr, ptr %40, align 8, !tbaa !14
  %42 = getelementptr inbounds %struct.otfcc_ILogger, ptr %41, i32 0, i32 4
  %43 = load ptr, ptr %42, align 8, !tbaa !17
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.otfcc_Options, ptr %44, i32 0, i32 24
  %46 = load ptr, ptr %45, align 8, !tbaa !14
  %47 = call ptr @sdsempty()
  %48 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %47, ptr noundef @.str.1)
  call void %43(ptr noundef %46, ptr noundef %48)
  store i8 1, ptr %7, align 1, !tbaa !19
  br label %49

49:                                               ; preds = %58, %36
  %50 = load i8, ptr %7, align 1, !tbaa !19, !range !20, !noundef !21
  %51 = trunc i8 %50 to i1
  br i1 %51, label %53, label %52

52:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #4
  br label %67

53:                                               ; preds = %49
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  %56 = call ptr @json_obj_get_type(ptr noundef %55, ptr noundef @.str.1, i32 noundef 1)
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  call void @parseCmapUnicodes(ptr noundef %54, ptr noundef %56, ptr noundef %57)
  br label %58

58:                                               ; preds = %53
  store i8 0, ptr %7, align 1, !tbaa !19
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.otfcc_Options, ptr %59, i32 0, i32 24
  %61 = load ptr, ptr %60, align 8, !tbaa !14
  %62 = getelementptr inbounds %struct.otfcc_ILogger, ptr %61, i32 0, i32 8
  %63 = load ptr, ptr %62, align 8, !tbaa !22
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.otfcc_Options, ptr %64, i32 0, i32 24
  %66 = load ptr, ptr %65, align 8, !tbaa !14
  call void %63(ptr noundef %66)
  br label %49, !llvm.loop !23

67:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #4
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.otfcc_Options, ptr %68, i32 0, i32 24
  %70 = load ptr, ptr %69, align 8, !tbaa !14
  %71 = getelementptr inbounds %struct.otfcc_ILogger, ptr %70, i32 0, i32 4
  %72 = load ptr, ptr %71, align 8, !tbaa !17
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.otfcc_Options, ptr %73, i32 0, i32 24
  %75 = load ptr, ptr %74, align 8, !tbaa !14
  %76 = call ptr @sdsempty()
  %77 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %76, ptr noundef @.str.5)
  call void %72(ptr noundef %75, ptr noundef %77)
  store i8 1, ptr %8, align 1, !tbaa !19
  br label %78

78:                                               ; preds = %87, %67
  %79 = load i8, ptr %8, align 1, !tbaa !19, !range !20, !noundef !21
  %80 = trunc i8 %79 to i1
  br i1 %80, label %82, label %81

81:                                               ; preds = %78
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #4
  br label %96

82:                                               ; preds = %78
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = call ptr @json_obj_get_type(ptr noundef %84, ptr noundef @.str.5, i32 noundef 1)
  %86 = load ptr, ptr %5, align 8, !tbaa !5
  call void @parseCmapUVS(ptr noundef %83, ptr noundef %85, ptr noundef %86)
  br label %87

87:                                               ; preds = %82
  store i8 0, ptr %8, align 1, !tbaa !19
  %88 = load ptr, ptr %5, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.otfcc_Options, ptr %88, i32 0, i32 24
  %90 = load ptr, ptr %89, align 8, !tbaa !14
  %91 = getelementptr inbounds %struct.otfcc_ILogger, ptr %90, i32 0, i32 8
  %92 = load ptr, ptr %91, align 8, !tbaa !22
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.otfcc_Options, ptr %93, i32 0, i32 24
  %95 = load ptr, ptr %94, align 8, !tbaa !14
  call void %92(ptr noundef %95)
  br label %78, !llvm.loop !25

96:                                               ; preds = %81
  br label %97

97:                                               ; preds = %96
  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 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.table_cmap, ptr %98, i32 0, i32 0
  %100 = load ptr, ptr %99, align 8, !tbaa !26
  %101 = icmp ne ptr %100, null
  br i1 %101, label %102, label %398

102:                                              ; preds = %97
  store i32 1, ptr %12, align 4, !tbaa !28
  store i32 1, ptr %10, align 4, !tbaa !28
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.table_cmap, ptr %103, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !26
  %106 = getelementptr inbounds %struct.cmap_Entry, ptr %105, i32 0, i32 0
  store ptr %106, ptr %18, align 8, !tbaa !5
  br label %107

107:                                              ; preds = %394, %102
  %108 = load i32, ptr %10, align 4, !tbaa !28
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %110, label %397

110:                                              ; preds = %107
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %111, ptr %15, align 8, !tbaa !5
  store ptr null, ptr %18, align 8, !tbaa !5
  store ptr null, ptr %19, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !28
  br label %112

112:                                              ; preds = %358, %110
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = icmp ne ptr %113, null
  br i1 %114, label %115, label %360

115:                                              ; preds = %112
  %116 = load i32, ptr %11, align 4, !tbaa !28
  %117 = add i32 %116, 1
  store i32 %117, ptr %11, align 4, !tbaa !28
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %118, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %13, align 4, !tbaa !28
  store i32 0, ptr %9, align 4, !tbaa !28
  br label %119

119:                                              ; preds = %150, %115
  %120 = load i32, ptr %9, align 4, !tbaa !28
  %121 = load i32, ptr %12, align 4, !tbaa !28
  %122 = icmp ult i32 %120, %121
  br i1 %122, label %123, label %153

123:                                              ; preds = %119
  %124 = load i32, ptr %13, align 4, !tbaa !28
  %125 = add i32 %124, 1
  store i32 %125, ptr %13, align 4, !tbaa !28
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.UT_hash_handle, ptr %126, i32 0, i32 2
  %128 = load ptr, ptr %127, align 8, !tbaa !29
  %129 = icmp ne ptr %128, null
  br i1 %129, label %130, label %143

130:                                              ; preds = %123
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.UT_hash_handle, ptr %131, i32 0, i32 2
  %133 = load ptr, ptr %132, align 8, !tbaa !29
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.table_cmap, ptr %134, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8, !tbaa !26
  %137 = getelementptr inbounds %struct.cmap_Entry, ptr %136, i32 0, i32 0
  %138 = getelementptr inbounds %struct.UT_hash_handle, ptr %137, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8, !tbaa !31
  %140 = getelementptr inbounds %struct.UT_hash_table, ptr %139, i32 0, i32 5
  %141 = load i64, ptr %140, align 8, !tbaa !35
  %142 = getelementptr inbounds i8, ptr %133, i64 %141
  br label %144

143:                                              ; preds = %123
  br label %144

144:                                              ; preds = %143, %130
  %145 = phi ptr [ %142, %130 ], [ null, %143 ]
  store ptr %145, ptr %16, align 8, !tbaa !5
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = icmp eq ptr %146, null
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  br label %153

149:                                              ; preds = %144
  br label %150

150:                                              ; preds = %149
  %151 = load i32, ptr %9, align 4, !tbaa !28
  %152 = add i32 %151, 1
  store i32 %152, ptr %9, align 4, !tbaa !28
  br label %119, !llvm.loop !38

153:                                              ; preds = %148, %119
  %154 = load i32, ptr %12, align 4, !tbaa !28
  store i32 %154, ptr %14, align 4, !tbaa !28
  br label %155

155:                                              ; preds = %356, %153
  %156 = load i32, ptr %13, align 4, !tbaa !28
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %166, label %158

158:                                              ; preds = %155
  %159 = load i32, ptr %14, align 4, !tbaa !28
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %164

161:                                              ; preds = %158
  %162 = load ptr, ptr %16, align 8, !tbaa !5
  %163 = icmp ne ptr %162, null
  br label %164

164:                                              ; preds = %161, %158
  %165 = phi i1 [ false, %158 ], [ %163, %161 ]
  br label %166

166:                                              ; preds = %164, %155
  %167 = phi i1 [ true, %155 ], [ %165, %164 ]
  br i1 %167, label %168, label %358

168:                                              ; preds = %166
  %169 = load i32, ptr %13, align 4, !tbaa !28
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %171, label %195

171:                                              ; preds = %168
  %172 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %172, ptr %17, align 8, !tbaa !5
  %173 = load ptr, ptr %16, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.UT_hash_handle, ptr %173, i32 0, i32 2
  %175 = load ptr, ptr %174, align 8, !tbaa !29
  %176 = icmp ne ptr %175, null
  br i1 %176, label %177, label %190

177:                                              ; preds = %171
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.UT_hash_handle, ptr %178, i32 0, i32 2
  %180 = load ptr, ptr %179, align 8, !tbaa !29
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.table_cmap, ptr %181, i32 0, i32 0
  %183 = load ptr, ptr %182, align 8, !tbaa !26
  %184 = getelementptr inbounds %struct.cmap_Entry, ptr %183, i32 0, i32 0
  %185 = getelementptr inbounds %struct.UT_hash_handle, ptr %184, i32 0, i32 0
  %186 = load ptr, ptr %185, align 8, !tbaa !31
  %187 = getelementptr inbounds %struct.UT_hash_table, ptr %186, i32 0, i32 5
  %188 = load i64, ptr %187, align 8, !tbaa !35
  %189 = getelementptr inbounds i8, ptr %180, i64 %188
  br label %191

190:                                              ; preds = %171
  br label %191

191:                                              ; preds = %190, %177
  %192 = phi ptr [ %189, %177 ], [ null, %190 ]
  store ptr %192, ptr %16, align 8, !tbaa !5
  %193 = load i32, ptr %14, align 4, !tbaa !28
  %194 = add i32 %193, -1
  store i32 %194, ptr %14, align 4, !tbaa !28
  br label %308

195:                                              ; preds = %168
  %196 = load i32, ptr %14, align 4, !tbaa !28
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %201, label %198

198:                                              ; preds = %195
  %199 = load ptr, ptr %16, align 8, !tbaa !5
  %200 = icmp eq ptr %199, null
  br i1 %200, label %201, label %229

201:                                              ; preds = %198, %195
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %202, ptr %17, align 8, !tbaa !5
  %203 = load ptr, ptr %15, align 8, !tbaa !5
  %204 = icmp ne ptr %203, null
  br i1 %204, label %205, label %226

205:                                              ; preds = %201
  %206 = load ptr, ptr %15, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.UT_hash_handle, ptr %206, i32 0, i32 2
  %208 = load ptr, ptr %207, align 8, !tbaa !29
  %209 = icmp ne ptr %208, null
  br i1 %209, label %210, label %223

210:                                              ; preds = %205
  %211 = load ptr, ptr %15, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.UT_hash_handle, ptr %211, i32 0, i32 2
  %213 = load ptr, ptr %212, align 8, !tbaa !29
  %214 = load ptr, ptr %6, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.table_cmap, ptr %214, i32 0, i32 0
  %216 = load ptr, ptr %215, align 8, !tbaa !26
  %217 = getelementptr inbounds %struct.cmap_Entry, ptr %216, i32 0, i32 0
  %218 = getelementptr inbounds %struct.UT_hash_handle, ptr %217, i32 0, i32 0
  %219 = load ptr, ptr %218, align 8, !tbaa !31
  %220 = getelementptr inbounds %struct.UT_hash_table, ptr %219, i32 0, i32 5
  %221 = load i64, ptr %220, align 8, !tbaa !35
  %222 = getelementptr inbounds i8, ptr %213, i64 %221
  br label %224

223:                                              ; preds = %205
  br label %224

224:                                              ; preds = %223, %210
  %225 = phi ptr [ %222, %210 ], [ null, %223 ]
  store ptr %225, ptr %15, align 8, !tbaa !5
  br label %226

226:                                              ; preds = %224, %201
  %227 = load i32, ptr %13, align 4, !tbaa !28
  %228 = add i32 %227, -1
  store i32 %228, ptr %13, align 4, !tbaa !28
  br label %307

229:                                              ; preds = %198
  %230 = load ptr, ptr %15, align 8, !tbaa !5
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.table_cmap, ptr %231, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8, !tbaa !26
  %234 = getelementptr inbounds %struct.cmap_Entry, ptr %233, i32 0, i32 0
  %235 = getelementptr inbounds %struct.UT_hash_handle, ptr %234, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !31
  %237 = getelementptr inbounds %struct.UT_hash_table, ptr %236, i32 0, i32 5
  %238 = load i64, ptr %237, align 8, !tbaa !35
  %239 = sub i64 0, %238
  %240 = getelementptr inbounds i8, ptr %230, i64 %239
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  %242 = load ptr, ptr %6, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.table_cmap, ptr %242, i32 0, i32 0
  %244 = load ptr, ptr %243, align 8, !tbaa !26
  %245 = getelementptr inbounds %struct.cmap_Entry, ptr %244, i32 0, i32 0
  %246 = getelementptr inbounds %struct.UT_hash_handle, ptr %245, i32 0, i32 0
  %247 = load ptr, ptr %246, align 8, !tbaa !31
  %248 = getelementptr inbounds %struct.UT_hash_table, ptr %247, i32 0, i32 5
  %249 = load i64, ptr %248, align 8, !tbaa !35
  %250 = sub i64 0, %249
  %251 = getelementptr inbounds i8, ptr %241, i64 %250
  %252 = call i32 @by_unicode(ptr noundef %240, ptr noundef %251)
  %253 = icmp sle i32 %252, 0
  br i1 %253, label %254, label %282

254:                                              ; preds = %229
  %255 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %255, ptr %17, align 8, !tbaa !5
  %256 = load ptr, ptr %15, align 8, !tbaa !5
  %257 = icmp ne ptr %256, null
  br i1 %257, label %258, label %279

258:                                              ; preds = %254
  %259 = load ptr, ptr %15, align 8, !tbaa !5
  %260 = getelementptr inbounds %struct.UT_hash_handle, ptr %259, i32 0, i32 2
  %261 = load ptr, ptr %260, align 8, !tbaa !29
  %262 = icmp ne ptr %261, null
  br i1 %262, label %263, label %276

263:                                              ; preds = %258
  %264 = load ptr, ptr %15, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.UT_hash_handle, ptr %264, i32 0, i32 2
  %266 = load ptr, ptr %265, align 8, !tbaa !29
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.table_cmap, ptr %267, i32 0, i32 0
  %269 = load ptr, ptr %268, align 8, !tbaa !26
  %270 = getelementptr inbounds %struct.cmap_Entry, ptr %269, i32 0, i32 0
  %271 = getelementptr inbounds %struct.UT_hash_handle, ptr %270, i32 0, i32 0
  %272 = load ptr, ptr %271, align 8, !tbaa !31
  %273 = getelementptr inbounds %struct.UT_hash_table, ptr %272, i32 0, i32 5
  %274 = load i64, ptr %273, align 8, !tbaa !35
  %275 = getelementptr inbounds i8, ptr %266, i64 %274
  br label %277

276:                                              ; preds = %258
  br label %277

277:                                              ; preds = %276, %263
  %278 = phi ptr [ %275, %263 ], [ null, %276 ]
  store ptr %278, ptr %15, align 8, !tbaa !5
  br label %279

279:                                              ; preds = %277, %254
  %280 = load i32, ptr %13, align 4, !tbaa !28
  %281 = add i32 %280, -1
  store i32 %281, ptr %13, align 4, !tbaa !28
  br label %306

282:                                              ; preds = %229
  %283 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %283, ptr %17, align 8, !tbaa !5
  %284 = load ptr, ptr %16, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.UT_hash_handle, ptr %284, i32 0, i32 2
  %286 = load ptr, ptr %285, align 8, !tbaa !29
  %287 = icmp ne ptr %286, null
  br i1 %287, label %288, label %301

288:                                              ; preds = %282
  %289 = load ptr, ptr %16, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.UT_hash_handle, ptr %289, i32 0, i32 2
  %291 = load ptr, ptr %290, align 8, !tbaa !29
  %292 = load ptr, ptr %6, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.table_cmap, ptr %292, i32 0, i32 0
  %294 = load ptr, ptr %293, align 8, !tbaa !26
  %295 = getelementptr inbounds %struct.cmap_Entry, ptr %294, i32 0, i32 0
  %296 = getelementptr inbounds %struct.UT_hash_handle, ptr %295, i32 0, i32 0
  %297 = load ptr, ptr %296, align 8, !tbaa !31
  %298 = getelementptr inbounds %struct.UT_hash_table, ptr %297, i32 0, i32 5
  %299 = load i64, ptr %298, align 8, !tbaa !35
  %300 = getelementptr inbounds i8, ptr %291, i64 %299
  br label %302

301:                                              ; preds = %282
  br label %302

302:                                              ; preds = %301, %288
  %303 = phi ptr [ %300, %288 ], [ null, %301 ]
  store ptr %303, ptr %16, align 8, !tbaa !5
  %304 = load i32, ptr %14, align 4, !tbaa !28
  %305 = add i32 %304, -1
  store i32 %305, ptr %14, align 4, !tbaa !28
  br label %306

306:                                              ; preds = %302, %279
  br label %307

307:                                              ; preds = %306, %226
  br label %308

308:                                              ; preds = %307, %191
  %309 = load ptr, ptr %19, align 8, !tbaa !5
  %310 = icmp ne ptr %309, null
  br i1 %310, label %311, label %331

311:                                              ; preds = %308
  %312 = load ptr, ptr %17, align 8, !tbaa !5
  %313 = icmp ne ptr %312, null
  br i1 %313, label %314, label %326

314:                                              ; preds = %311
  %315 = load ptr, ptr %17, align 8, !tbaa !5
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.table_cmap, ptr %316, i32 0, i32 0
  %318 = load ptr, ptr %317, align 8, !tbaa !26
  %319 = getelementptr inbounds %struct.cmap_Entry, ptr %318, i32 0, i32 0
  %320 = getelementptr inbounds %struct.UT_hash_handle, ptr %319, i32 0, i32 0
  %321 = load ptr, ptr %320, align 8, !tbaa !31
  %322 = getelementptr inbounds %struct.UT_hash_table, ptr %321, i32 0, i32 5
  %323 = load i64, ptr %322, align 8, !tbaa !35
  %324 = sub i64 0, %323
  %325 = getelementptr inbounds i8, ptr %315, i64 %324
  br label %327

326:                                              ; preds = %311
  br label %327

327:                                              ; preds = %326, %314
  %328 = phi ptr [ %325, %314 ], [ null, %326 ]
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.UT_hash_handle, ptr %329, i32 0, i32 2
  store ptr %328, ptr %330, align 8, !tbaa !29
  br label %333

331:                                              ; preds = %308
  %332 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %332, ptr %18, align 8, !tbaa !5
  br label %333

333:                                              ; preds = %331, %327
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = icmp ne ptr %334, null
  br i1 %335, label %336, label %356

336:                                              ; preds = %333
  %337 = load ptr, ptr %19, align 8, !tbaa !5
  %338 = icmp ne ptr %337, null
  br i1 %338, label %339, label %351

339:                                              ; preds = %336
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.table_cmap, ptr %341, i32 0, i32 0
  %343 = load ptr, ptr %342, align 8, !tbaa !26
  %344 = getelementptr inbounds %struct.cmap_Entry, ptr %343, i32 0, i32 0
  %345 = getelementptr inbounds %struct.UT_hash_handle, ptr %344, i32 0, i32 0
  %346 = load ptr, ptr %345, align 8, !tbaa !31
  %347 = getelementptr inbounds %struct.UT_hash_table, ptr %346, i32 0, i32 5
  %348 = load i64, ptr %347, align 8, !tbaa !35
  %349 = sub i64 0, %348
  %350 = getelementptr inbounds i8, ptr %340, i64 %349
  br label %352

351:                                              ; preds = %336
  br label %352

352:                                              ; preds = %351, %339
  %353 = phi ptr [ %350, %339 ], [ null, %351 ]
  %354 = load ptr, ptr %17, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.UT_hash_handle, ptr %354, i32 0, i32 1
  store ptr %353, ptr %355, align 8, !tbaa !39
  br label %356

356:                                              ; preds = %352, %333
  %357 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %357, ptr %19, align 8, !tbaa !5
  br label %155, !llvm.loop !40

358:                                              ; preds = %166
  %359 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %359, ptr %15, align 8, !tbaa !5
  br label %112, !llvm.loop !41

360:                                              ; preds = %112
  %361 = load ptr, ptr %19, align 8, !tbaa !5
  %362 = icmp ne ptr %361, null
  br i1 %362, label %363, label %366

363:                                              ; preds = %360
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.UT_hash_handle, ptr %364, i32 0, i32 2
  store ptr null, ptr %365, align 8, !tbaa !29
  br label %366

366:                                              ; preds = %363, %360
  %367 = load i32, ptr %11, align 4, !tbaa !28
  %368 = icmp ule i32 %367, 1
  br i1 %368, label %369, label %394

369:                                              ; preds = %366
  store i32 0, ptr %10, align 4, !tbaa !28
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.table_cmap, ptr %371, i32 0, i32 0
  %373 = load ptr, ptr %372, align 8, !tbaa !26
  %374 = getelementptr inbounds %struct.cmap_Entry, ptr %373, i32 0, i32 0
  %375 = getelementptr inbounds %struct.UT_hash_handle, ptr %374, i32 0, i32 0
  %376 = load ptr, ptr %375, align 8, !tbaa !31
  %377 = getelementptr inbounds %struct.UT_hash_table, ptr %376, i32 0, i32 4
  store ptr %370, ptr %377, align 8, !tbaa !42
  br label %378

378:                                              ; preds = %369
  %379 = load ptr, ptr %18, align 8, !tbaa !5
  %380 = load ptr, ptr %6, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.table_cmap, ptr %380, i32 0, i32 0
  %382 = load ptr, ptr %381, align 8, !tbaa !26
  %383 = getelementptr inbounds %struct.cmap_Entry, ptr %382, i32 0, i32 0
  %384 = getelementptr inbounds %struct.UT_hash_handle, ptr %383, i32 0, i32 0
  %385 = load ptr, ptr %384, align 8, !tbaa !31
  %386 = getelementptr inbounds %struct.UT_hash_table, ptr %385, i32 0, i32 5
  %387 = load i64, ptr %386, align 8, !tbaa !35
  %388 = sub i64 0, %387
  %389 = getelementptr inbounds i8, ptr %379, i64 %388
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.table_cmap, ptr %390, i32 0, i32 0
  store ptr %389, ptr %391, align 8, !tbaa !26
  br label %392

392:                                              ; preds = %378
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393, %366
  %395 = load i32, ptr %12, align 4, !tbaa !28
  %396 = mul i32 %395, 2
  store i32 %396, ptr %12, align 4, !tbaa !28
  br label %107, !llvm.loop !43

397:                                              ; preds = %107
  br label %398

398:                                              ; preds = %397, %97
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  br label %399

399:                                              ; preds = %398
  br label %400

400:                                              ; preds = %399
  br label %401

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.table_cmap, ptr %402, i32 0, i32 1
  %404 = load ptr, ptr %403, align 8, !tbaa !44
  %405 = icmp ne ptr %404, null
  br i1 %405, label %406, label %702

406:                                              ; preds = %401
  store i32 1, ptr %23, align 4, !tbaa !28
  store i32 1, ptr %21, align 4, !tbaa !28
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.table_cmap, ptr %407, i32 0, i32 1
  %409 = load ptr, ptr %408, align 8, !tbaa !44
  %410 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %409, i32 0, i32 0
  store ptr %410, ptr %29, align 8, !tbaa !5
  br label %411

411:                                              ; preds = %698, %406
  %412 = load i32, ptr %21, align 4, !tbaa !28
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %701

414:                                              ; preds = %411
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %415, ptr %26, align 8, !tbaa !5
  store ptr null, ptr %29, align 8, !tbaa !5
  store ptr null, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !28
  br label %416

416:                                              ; preds = %662, %414
  %417 = load ptr, ptr %26, align 8, !tbaa !5
  %418 = icmp ne ptr %417, null
  br i1 %418, label %419, label %664

419:                                              ; preds = %416
  %420 = load i32, ptr %22, align 4, !tbaa !28
  %421 = add i32 %420, 1
  store i32 %421, ptr %22, align 4, !tbaa !28
  %422 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %422, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %24, align 4, !tbaa !28
  store i32 0, ptr %20, align 4, !tbaa !28
  br label %423

423:                                              ; preds = %454, %419
  %424 = load i32, ptr %20, align 4, !tbaa !28
  %425 = load i32, ptr %23, align 4, !tbaa !28
  %426 = icmp ult i32 %424, %425
  br i1 %426, label %427, label %457

427:                                              ; preds = %423
  %428 = load i32, ptr %24, align 4, !tbaa !28
  %429 = add i32 %428, 1
  store i32 %429, ptr %24, align 4, !tbaa !28
  %430 = load ptr, ptr %27, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.UT_hash_handle, ptr %430, i32 0, i32 2
  %432 = load ptr, ptr %431, align 8, !tbaa !29
  %433 = icmp ne ptr %432, null
  br i1 %433, label %434, label %447

434:                                              ; preds = %427
  %435 = load ptr, ptr %27, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.UT_hash_handle, ptr %435, i32 0, i32 2
  %437 = load ptr, ptr %436, align 8, !tbaa !29
  %438 = load ptr, ptr %6, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.table_cmap, ptr %438, i32 0, i32 1
  %440 = load ptr, ptr %439, align 8, !tbaa !44
  %441 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %440, i32 0, i32 0
  %442 = getelementptr inbounds %struct.UT_hash_handle, ptr %441, i32 0, i32 0
  %443 = load ptr, ptr %442, align 8, !tbaa !45
  %444 = getelementptr inbounds %struct.UT_hash_table, ptr %443, i32 0, i32 5
  %445 = load i64, ptr %444, align 8, !tbaa !35
  %446 = getelementptr inbounds i8, ptr %437, i64 %445
  br label %448

447:                                              ; preds = %427
  br label %448

448:                                              ; preds = %447, %434
  %449 = phi ptr [ %446, %434 ], [ null, %447 ]
  store ptr %449, ptr %27, align 8, !tbaa !5
  %450 = load ptr, ptr %27, align 8, !tbaa !5
  %451 = icmp eq ptr %450, null
  br i1 %451, label %452, label %453

452:                                              ; preds = %448
  br label %457

453:                                              ; preds = %448
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr %20, align 4, !tbaa !28
  %456 = add i32 %455, 1
  store i32 %456, ptr %20, align 4, !tbaa !28
  br label %423, !llvm.loop !48

457:                                              ; preds = %452, %423
  %458 = load i32, ptr %23, align 4, !tbaa !28
  store i32 %458, ptr %25, align 4, !tbaa !28
  br label %459

459:                                              ; preds = %660, %457
  %460 = load i32, ptr %24, align 4, !tbaa !28
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %470, label %462

462:                                              ; preds = %459
  %463 = load i32, ptr %25, align 4, !tbaa !28
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %468

465:                                              ; preds = %462
  %466 = load ptr, ptr %27, align 8, !tbaa !5
  %467 = icmp ne ptr %466, null
  br label %468

468:                                              ; preds = %465, %462
  %469 = phi i1 [ false, %462 ], [ %467, %465 ]
  br label %470

470:                                              ; preds = %468, %459
  %471 = phi i1 [ true, %459 ], [ %469, %468 ]
  br i1 %471, label %472, label %662

472:                                              ; preds = %470
  %473 = load i32, ptr %24, align 4, !tbaa !28
  %474 = icmp eq i32 %473, 0
  br i1 %474, label %475, label %499

475:                                              ; preds = %472
  %476 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %476, ptr %28, align 8, !tbaa !5
  %477 = load ptr, ptr %27, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.UT_hash_handle, ptr %477, i32 0, i32 2
  %479 = load ptr, ptr %478, align 8, !tbaa !29
  %480 = icmp ne ptr %479, null
  br i1 %480, label %481, label %494

481:                                              ; preds = %475
  %482 = load ptr, ptr %27, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.UT_hash_handle, ptr %482, i32 0, i32 2
  %484 = load ptr, ptr %483, align 8, !tbaa !29
  %485 = load ptr, ptr %6, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.table_cmap, ptr %485, i32 0, i32 1
  %487 = load ptr, ptr %486, align 8, !tbaa !44
  %488 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %487, i32 0, i32 0
  %489 = getelementptr inbounds %struct.UT_hash_handle, ptr %488, i32 0, i32 0
  %490 = load ptr, ptr %489, align 8, !tbaa !45
  %491 = getelementptr inbounds %struct.UT_hash_table, ptr %490, i32 0, i32 5
  %492 = load i64, ptr %491, align 8, !tbaa !35
  %493 = getelementptr inbounds i8, ptr %484, i64 %492
  br label %495

494:                                              ; preds = %475
  br label %495

495:                                              ; preds = %494, %481
  %496 = phi ptr [ %493, %481 ], [ null, %494 ]
  store ptr %496, ptr %27, align 8, !tbaa !5
  %497 = load i32, ptr %25, align 4, !tbaa !28
  %498 = add i32 %497, -1
  store i32 %498, ptr %25, align 4, !tbaa !28
  br label %612

499:                                              ; preds = %472
  %500 = load i32, ptr %25, align 4, !tbaa !28
  %501 = icmp eq i32 %500, 0
  br i1 %501, label %505, label %502

502:                                              ; preds = %499
  %503 = load ptr, ptr %27, align 8, !tbaa !5
  %504 = icmp eq ptr %503, null
  br i1 %504, label %505, label %533

505:                                              ; preds = %502, %499
  %506 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %506, ptr %28, align 8, !tbaa !5
  %507 = load ptr, ptr %26, align 8, !tbaa !5
  %508 = icmp ne ptr %507, null
  br i1 %508, label %509, label %530

509:                                              ; preds = %505
  %510 = load ptr, ptr %26, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.UT_hash_handle, ptr %510, i32 0, i32 2
  %512 = load ptr, ptr %511, align 8, !tbaa !29
  %513 = icmp ne ptr %512, null
  br i1 %513, label %514, label %527

514:                                              ; preds = %509
  %515 = load ptr, ptr %26, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.UT_hash_handle, ptr %515, i32 0, i32 2
  %517 = load ptr, ptr %516, align 8, !tbaa !29
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.table_cmap, ptr %518, i32 0, i32 1
  %520 = load ptr, ptr %519, align 8, !tbaa !44
  %521 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %520, i32 0, i32 0
  %522 = getelementptr inbounds %struct.UT_hash_handle, ptr %521, i32 0, i32 0
  %523 = load ptr, ptr %522, align 8, !tbaa !45
  %524 = getelementptr inbounds %struct.UT_hash_table, ptr %523, i32 0, i32 5
  %525 = load i64, ptr %524, align 8, !tbaa !35
  %526 = getelementptr inbounds i8, ptr %517, i64 %525
  br label %528

527:                                              ; preds = %509
  br label %528

528:                                              ; preds = %527, %514
  %529 = phi ptr [ %526, %514 ], [ null, %527 ]
  store ptr %529, ptr %26, align 8, !tbaa !5
  br label %530

530:                                              ; preds = %528, %505
  %531 = load i32, ptr %24, align 4, !tbaa !28
  %532 = add i32 %531, -1
  store i32 %532, ptr %24, align 4, !tbaa !28
  br label %611

533:                                              ; preds = %502
  %534 = load ptr, ptr %26, align 8, !tbaa !5
  %535 = load ptr, ptr %6, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.table_cmap, ptr %535, i32 0, i32 1
  %537 = load ptr, ptr %536, align 8, !tbaa !44
  %538 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %537, i32 0, i32 0
  %539 = getelementptr inbounds %struct.UT_hash_handle, ptr %538, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !45
  %541 = getelementptr inbounds %struct.UT_hash_table, ptr %540, i32 0, i32 5
  %542 = load i64, ptr %541, align 8, !tbaa !35
  %543 = sub i64 0, %542
  %544 = getelementptr inbounds i8, ptr %534, i64 %543
  %545 = load ptr, ptr %27, align 8, !tbaa !5
  %546 = load ptr, ptr %6, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.table_cmap, ptr %546, i32 0, i32 1
  %548 = load ptr, ptr %547, align 8, !tbaa !44
  %549 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %548, i32 0, i32 0
  %550 = getelementptr inbounds %struct.UT_hash_handle, ptr %549, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8, !tbaa !45
  %552 = getelementptr inbounds %struct.UT_hash_table, ptr %551, i32 0, i32 5
  %553 = load i64, ptr %552, align 8, !tbaa !35
  %554 = sub i64 0, %553
  %555 = getelementptr inbounds i8, ptr %545, i64 %554
  %556 = call i32 @by_uvs_key(ptr noundef %544, ptr noundef %555)
  %557 = icmp sle i32 %556, 0
  br i1 %557, label %558, label %586

558:                                              ; preds = %533
  %559 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %559, ptr %28, align 8, !tbaa !5
  %560 = load ptr, ptr %26, align 8, !tbaa !5
  %561 = icmp ne ptr %560, null
  br i1 %561, label %562, label %583

562:                                              ; preds = %558
  %563 = load ptr, ptr %26, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.UT_hash_handle, ptr %563, i32 0, i32 2
  %565 = load ptr, ptr %564, align 8, !tbaa !29
  %566 = icmp ne ptr %565, null
  br i1 %566, label %567, label %580

567:                                              ; preds = %562
  %568 = load ptr, ptr %26, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.UT_hash_handle, ptr %568, i32 0, i32 2
  %570 = load ptr, ptr %569, align 8, !tbaa !29
  %571 = load ptr, ptr %6, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.table_cmap, ptr %571, i32 0, i32 1
  %573 = load ptr, ptr %572, align 8, !tbaa !44
  %574 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %573, i32 0, i32 0
  %575 = getelementptr inbounds %struct.UT_hash_handle, ptr %574, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !45
  %577 = getelementptr inbounds %struct.UT_hash_table, ptr %576, i32 0, i32 5
  %578 = load i64, ptr %577, align 8, !tbaa !35
  %579 = getelementptr inbounds i8, ptr %570, i64 %578
  br label %581

580:                                              ; preds = %562
  br label %581

581:                                              ; preds = %580, %567
  %582 = phi ptr [ %579, %567 ], [ null, %580 ]
  store ptr %582, ptr %26, align 8, !tbaa !5
  br label %583

583:                                              ; preds = %581, %558
  %584 = load i32, ptr %24, align 4, !tbaa !28
  %585 = add i32 %584, -1
  store i32 %585, ptr %24, align 4, !tbaa !28
  br label %610

586:                                              ; preds = %533
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %587, ptr %28, align 8, !tbaa !5
  %588 = load ptr, ptr %27, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.UT_hash_handle, ptr %588, i32 0, i32 2
  %590 = load ptr, ptr %589, align 8, !tbaa !29
  %591 = icmp ne ptr %590, null
  br i1 %591, label %592, label %605

592:                                              ; preds = %586
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.UT_hash_handle, ptr %593, i32 0, i32 2
  %595 = load ptr, ptr %594, align 8, !tbaa !29
  %596 = load ptr, ptr %6, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.table_cmap, ptr %596, i32 0, i32 1
  %598 = load ptr, ptr %597, align 8, !tbaa !44
  %599 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %598, i32 0, i32 0
  %600 = getelementptr inbounds %struct.UT_hash_handle, ptr %599, i32 0, i32 0
  %601 = load ptr, ptr %600, align 8, !tbaa !45
  %602 = getelementptr inbounds %struct.UT_hash_table, ptr %601, i32 0, i32 5
  %603 = load i64, ptr %602, align 8, !tbaa !35
  %604 = getelementptr inbounds i8, ptr %595, i64 %603
  br label %606

605:                                              ; preds = %586
  br label %606

606:                                              ; preds = %605, %592
  %607 = phi ptr [ %604, %592 ], [ null, %605 ]
  store ptr %607, ptr %27, align 8, !tbaa !5
  %608 = load i32, ptr %25, align 4, !tbaa !28
  %609 = add i32 %608, -1
  store i32 %609, ptr %25, align 4, !tbaa !28
  br label %610

610:                                              ; preds = %606, %583
  br label %611

611:                                              ; preds = %610, %530
  br label %612

612:                                              ; preds = %611, %495
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = icmp ne ptr %613, null
  br i1 %614, label %615, label %635

615:                                              ; preds = %612
  %616 = load ptr, ptr %28, align 8, !tbaa !5
  %617 = icmp ne ptr %616, null
  br i1 %617, label %618, label %630

618:                                              ; preds = %615
  %619 = load ptr, ptr %28, align 8, !tbaa !5
  %620 = load ptr, ptr %6, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.table_cmap, ptr %620, i32 0, i32 1
  %622 = load ptr, ptr %621, align 8, !tbaa !44
  %623 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %622, i32 0, i32 0
  %624 = getelementptr inbounds %struct.UT_hash_handle, ptr %623, i32 0, i32 0
  %625 = load ptr, ptr %624, align 8, !tbaa !45
  %626 = getelementptr inbounds %struct.UT_hash_table, ptr %625, i32 0, i32 5
  %627 = load i64, ptr %626, align 8, !tbaa !35
  %628 = sub i64 0, %627
  %629 = getelementptr inbounds i8, ptr %619, i64 %628
  br label %631

630:                                              ; preds = %615
  br label %631

631:                                              ; preds = %630, %618
  %632 = phi ptr [ %629, %618 ], [ null, %630 ]
  %633 = load ptr, ptr %30, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.UT_hash_handle, ptr %633, i32 0, i32 2
  store ptr %632, ptr %634, align 8, !tbaa !29
  br label %637

635:                                              ; preds = %612
  %636 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %636, ptr %29, align 8, !tbaa !5
  br label %637

637:                                              ; preds = %635, %631
  %638 = load ptr, ptr %28, align 8, !tbaa !5
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %660

640:                                              ; preds = %637
  %641 = load ptr, ptr %30, align 8, !tbaa !5
  %642 = icmp ne ptr %641, null
  br i1 %642, label %643, label %655

643:                                              ; preds = %640
  %644 = load ptr, ptr %30, align 8, !tbaa !5
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.table_cmap, ptr %645, i32 0, i32 1
  %647 = load ptr, ptr %646, align 8, !tbaa !44
  %648 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %647, i32 0, i32 0
  %649 = getelementptr inbounds %struct.UT_hash_handle, ptr %648, i32 0, i32 0
  %650 = load ptr, ptr %649, align 8, !tbaa !45
  %651 = getelementptr inbounds %struct.UT_hash_table, ptr %650, i32 0, i32 5
  %652 = load i64, ptr %651, align 8, !tbaa !35
  %653 = sub i64 0, %652
  %654 = getelementptr inbounds i8, ptr %644, i64 %653
  br label %656

655:                                              ; preds = %640
  br label %656

656:                                              ; preds = %655, %643
  %657 = phi ptr [ %654, %643 ], [ null, %655 ]
  %658 = load ptr, ptr %28, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.UT_hash_handle, ptr %658, i32 0, i32 1
  store ptr %657, ptr %659, align 8, !tbaa !39
  br label %660

660:                                              ; preds = %656, %637
  %661 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %661, ptr %30, align 8, !tbaa !5
  br label %459, !llvm.loop !49

662:                                              ; preds = %470
  %663 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %663, ptr %26, align 8, !tbaa !5
  br label %416, !llvm.loop !50

664:                                              ; preds = %416
  %665 = load ptr, ptr %30, align 8, !tbaa !5
  %666 = icmp ne ptr %665, null
  br i1 %666, label %667, label %670

667:                                              ; preds = %664
  %668 = load ptr, ptr %30, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.UT_hash_handle, ptr %668, i32 0, i32 2
  store ptr null, ptr %669, align 8, !tbaa !29
  br label %670

670:                                              ; preds = %667, %664
  %671 = load i32, ptr %22, align 4, !tbaa !28
  %672 = icmp ule i32 %671, 1
  br i1 %672, label %673, label %698

673:                                              ; preds = %670
  store i32 0, ptr %21, align 4, !tbaa !28
  %674 = load ptr, ptr %30, align 8, !tbaa !5
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.table_cmap, ptr %675, i32 0, i32 1
  %677 = load ptr, ptr %676, align 8, !tbaa !44
  %678 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %677, i32 0, i32 0
  %679 = getelementptr inbounds %struct.UT_hash_handle, ptr %678, i32 0, i32 0
  %680 = load ptr, ptr %679, align 8, !tbaa !45
  %681 = getelementptr inbounds %struct.UT_hash_table, ptr %680, i32 0, i32 4
  store ptr %674, ptr %681, align 8, !tbaa !42
  br label %682

682:                                              ; preds = %673
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load ptr, ptr %6, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.table_cmap, ptr %684, i32 0, i32 1
  %686 = load ptr, ptr %685, align 8, !tbaa !44
  %687 = getelementptr inbounds %struct.cmap_UVS_Entry, ptr %686, i32 0, i32 0
  %688 = getelementptr inbounds %struct.UT_hash_handle, ptr %687, i32 0, i32 0
  %689 = load ptr, ptr %688, align 8, !tbaa !45
  %690 = getelementptr inbounds %struct.UT_hash_table, ptr %689, i32 0, i32 5
  %691 = load i64, ptr %690, align 8, !tbaa !35
  %692 = sub i64 0, %691
  %693 = getelementptr inbounds i8, ptr %683, i64 %692
  %694 = load ptr, ptr %6, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.table_cmap, ptr %694, i32 0, i32 1
  store ptr %693, ptr %695, align 8, !tbaa !44
  br label %696

696:                                              ; preds = %682
  br label %697

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697, %670
  %699 = load i32, ptr %23, align 4, !tbaa !28
  %700 = mul i32 %699, 2
  store i32 %700, ptr %23, align 4, !tbaa !28
  br label %411, !llvm.loop !51

701:                                              ; preds = %411
  br label %702

702:                                              ; preds = %701, %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703
  %705 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %705, ptr %3, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  br label %706

706:                                              ; preds = %704, %35
  %707 = load ptr, ptr %3, align 8
  ret ptr %707
}

; Function Attrs: nounwind uwtable
declare hidden void @parseCmapUnicodes(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @json_obj_get_type(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @parseCmapUVS(ptr noundef, ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { "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 = { 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, !11, i64 8}
!10 = !{!"_json_value", !6, i64 0, !11, i64 8, !7, i64 16, !7, i64 32}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 48}
!13 = !{!"__caryll_elementinterface_table_cmap", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!14 = !{!15, !6, i64 32}
!15 = !{!"", !16, i64 0, !16, i64 1, !16, i64 2, !16, i64 3, !16, i64 4, !16, i64 5, !16, i64 6, !16, i64 7, !16, i64 8, !16, i64 9, !16, i64 10, !16, i64 11, !16, i64 12, !16, i64 13, !16, i64 14, !16, i64 15, !16, i64 16, !16, i64 17, !16, i64 18, !16, i64 19, !16, i64 20, !16, i64 21, !16, i64 22, !6, i64 24, !6, i64 32}
!16 = !{!"_Bool", !7, i64 0}
!17 = !{!18, !6, i64 32}
!18 = !{!"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}
!19 = !{!16, !16, i64 0}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = !{!18, !6, i64 64}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = !{!27, !6, i64 0}
!27 = !{!"", !6, i64 0, !6, i64 8}
!28 = !{!11, !11, i64 0}
!29 = !{!30, !6, i64 16}
!30 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !11, i64 48, !11, i64 52}
!31 = !{!32, !6, i64 0}
!32 = !{!"", !30, i64 0, !11, i64 56, !33, i64 64}
!33 = !{!"otfcc_Handle", !11, i64 0, !34, i64 4, !6, i64 8}
!34 = !{!"short", !7, i64 0}
!35 = !{!36, !37, i64 32}
!36 = !{!"UT_hash_table", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !6, i64 24, !37, i64 32, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56}
!37 = !{!"long", !7, i64 0}
!38 = distinct !{!38, !24}
!39 = !{!30, !6, i64 8}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = !{!36, !6, i64 24}
!43 = distinct !{!43, !24}
!44 = !{!27, !6, i64 8}
!45 = !{!46, !6, i64 0}
!46 = !{!"", !30, i64 0, !47, i64 56, !33, i64 64}
!47 = !{!"", !11, i64 0, !11, i64 4}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !24}
!50 = distinct !{!50, !24}
!51 = distinct !{!51, !24}


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

@table_iCmap = external dso_local local_unnamed_addr constant %struct.__caryll_elementinterface_table_cmap, align 8
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1

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

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

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

declare ptr @sdsempty() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local ptr @otfcc_parseCmap(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = getelementptr inbounds i8, ptr %0, i64 8
  %4 = load i32, ptr %3, align 8, !tbaa !5
  %.not = icmp eq i32 %4, 1
  br i1 %.not, label %.critedge262, label %.loopexit288

.critedge262:                                     ; preds = %2
  %5 = load ptr, ptr getelementptr inbounds (i8, ptr @table_iCmap, i64 48), align 8, !tbaa !11
  %6 = tail call ptr (...) %5() #3
  %7 = getelementptr inbounds i8, ptr %1, i64 32
  %8 = load ptr, ptr %7, align 8, !tbaa !13
  %9 = getelementptr inbounds i8, ptr %8, i64 32
  %10 = load ptr, ptr %9, align 8, !tbaa !16
  %11 = tail call ptr @sdsempty() #3
  %12 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %11, ptr noundef nonnull @.str.1) #3
  tail call void %10(ptr noundef %8, ptr noundef %12) #3
  %13 = tail call ptr @json_obj_get_type(ptr noundef nonnull %0, ptr noundef nonnull @.str.1, i32 noundef 1)
  tail call void @parseCmapUnicodes(ptr noundef %6, ptr noundef %13, ptr noundef %1)
  %14 = load ptr, ptr %7, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %14, i64 64
  %16 = load ptr, ptr %15, align 8, !tbaa !18
  tail call void %16(ptr noundef %14) #3
  %17 = load ptr, ptr %7, align 8, !tbaa !13
  %18 = getelementptr inbounds i8, ptr %17, i64 32
  %19 = load ptr, ptr %18, align 8, !tbaa !16
  %20 = tail call ptr @sdsempty() #3
  %21 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %20, ptr noundef nonnull @.str.5) #3
  tail call void %19(ptr noundef %17, ptr noundef %21) #3
  %22 = tail call ptr @json_obj_get_type(ptr noundef nonnull %0, ptr noundef nonnull @.str.5, i32 noundef 1)
  tail call void @parseCmapUVS(ptr noundef %6, ptr noundef %22, ptr noundef %1)
  %23 = load ptr, ptr %7, align 8, !tbaa !13
  %24 = getelementptr inbounds i8, ptr %23, i64 64
  %25 = load ptr, ptr %24, align 8, !tbaa !18
  tail call void %25(ptr noundef %23) #3
  %26 = load ptr, ptr %6, align 8, !tbaa !19
  %.not231 = icmp eq ptr %26, null
  br i1 %.not231, label %.loopexit292, label %.lr.ph305

.preheader290:                                    ; preds = %121
  %27 = shl i32 %.0207309374, 1
  %.not248300 = icmp eq ptr %.2189.ph, null
  br i1 %.not248300, label %.loopexit292.loopexit, label %.lr.ph305

.lr.ph305:                                        ; preds = %.critedge262, %.preheader290
  %.0207309374 = phi i32 [ %27, %.preheader290 ], [ 1, %.critedge262 ]
  %.0187310373 = phi ptr [ %.2189.ph, %.preheader290 ], [ %26, %.critedge262 ]
  %.not333 = icmp eq i32 %.0207309374, 0
  br label %28

.loopexit289:                                     ; preds = %39
  %.not248 = icmp eq ptr %.2194, null
  br i1 %.not248, label %._crit_edge, label %28, !llvm.loop !21

28:                                               ; preds = %.lr.ph305, %.loopexit289
  %.0185304 = phi ptr [ null, %.lr.ph305 ], [ %.1186, %.loopexit289 ]
  %.1188303 = phi ptr [ null, %.lr.ph305 ], [ %.2189.ph, %.loopexit289 ]
  %.0196302 = phi ptr [ %.0187310373, %.lr.ph305 ], [ %.2194, %.loopexit289 ]
  %.0208301 = phi i32 [ 0, %.lr.ph305 ], [ %29, %.loopexit289 ]
  %29 = add i32 %.0208301, 1
  br i1 %.not333, label %.thread.preheader, label %.lr.ph

.lr.ph:                                           ; preds = %28, %33
  %.0192295 = phi ptr [ %38, %33 ], [ %.0196302, %28 ]
  %.0203294 = phi i32 [ %30, %33 ], [ 0, %28 ]
  %30 = add nuw i32 %.0203294, 1
  %31 = getelementptr inbounds i8, ptr %.0192295, i64 16
  %32 = load ptr, ptr %31, align 8, !tbaa !23
  %.not250 = icmp eq ptr %32, null
  br i1 %.not250, label %.thread.preheader, label %33

33:                                               ; preds = %.lr.ph
  %34 = load ptr, ptr %6, align 8, !tbaa !19
  %35 = load ptr, ptr %34, align 8, !tbaa !25
  %36 = getelementptr inbounds i8, ptr %35, i64 32
  %37 = load i64, ptr %36, align 8, !tbaa !29
  %38 = getelementptr inbounds i8, ptr %32, i64 %37
  %exitcond.not = icmp eq i32 %30, %.0207309374
  br i1 %exitcond.not, label %.thread.preheader, label %.lr.ph, !llvm.loop !32

.thread.preheader:                                ; preds = %33, %.lr.ph, %28
  %.2205.ph = phi i32 [ 0, %28 ], [ %30, %.lr.ph ], [ %.0207309374, %33 ]
  %.2194.ph = phi ptr [ %.0196302, %28 ], [ null, %.lr.ph ], [ %38, %33 ]
  br label %.thread.outer

.thread.outer:                                    ; preds = %.thread.outer.backedge, %.thread.preheader
  %.2205.ph399 = phi i32 [ %.2205.ph, %.thread.preheader ], [ %.3206, %.thread.outer.backedge ]
  %.0201.ph = phi i32 [ %.0207309374, %.thread.preheader ], [ %.1202, %.thread.outer.backedge ]
  %.1197.ph = phi ptr [ %.0196302, %.thread.preheader ], [ %.4200, %.thread.outer.backedge ]
  %.2194.ph400 = phi ptr [ %.2194.ph, %.thread.preheader ], [ %.3195, %.thread.outer.backedge ]
  %.2189.ph = phi ptr [ %.1188303, %.thread.preheader ], [ %.2189.ph.be, %.thread.outer.backedge ]
  %.1186.ph = phi ptr [ %.0185304, %.thread.preheader ], [ %.0191, %.thread.outer.backedge ]
  br label %.thread

.thread:                                          ; preds = %.thread.outer, %.thread266.thread
  %.2205 = phi i32 [ %.3206, %.thread266.thread ], [ %.2205.ph399, %.thread.outer ]
  %.0201 = phi i32 [ %.1202, %.thread266.thread ], [ %.0201.ph, %.thread.outer ]
  %.1197 = phi ptr [ %.4200, %.thread266.thread ], [ %.1197.ph, %.thread.outer ]
  %.2194 = phi ptr [ %.3195, %.thread266.thread ], [ %.2194.ph400, %.thread.outer ]
  %.1186 = phi ptr [ %.0191, %.thread266.thread ], [ %.1186.ph, %.thread.outer ]
  %cond = icmp eq i32 %.2205, 0
  br i1 %cond, label %39, label %54

39:                                               ; preds = %.thread
  %40 = icmp ne i32 %.0201, 0
  %41 = icmp ne ptr %.2194, null
  %42 = select i1 %40, i1 %41, i1 false
  br i1 %42, label %.critedge, label %.loopexit289

.critedge:                                        ; preds = %39
  %43 = getelementptr inbounds i8, ptr %.2194, i64 16
  %44 = load ptr, ptr %43, align 8, !tbaa !23
  %.not257 = icmp eq ptr %44, null
  br i1 %.not257, label %51, label %45

45:                                               ; preds = %.critedge
  %46 = load ptr, ptr %6, align 8, !tbaa !19
  %47 = load ptr, ptr %46, align 8, !tbaa !25
  %48 = getelementptr inbounds i8, ptr %47, i64 32
  %49 = load i64, ptr %48, align 8, !tbaa !29
  %50 = getelementptr inbounds i8, ptr %44, i64 %49
  br label %51

51:                                               ; preds = %.critedge, %45
  %52 = phi ptr [ %50, %45 ], [ null, %.critedge ]
  %53 = add i32 %.0201, -1
  br label %103

54:                                               ; preds = %.thread
  %55 = icmp eq i32 %.0201, 0
  %56 = icmp eq ptr %.2194, null
  %or.cond = select i1 %55, i1 true, i1 %56
  br i1 %or.cond, label %57, label %69

57:                                               ; preds = %54
  %.not255 = icmp eq ptr %.1197, null
  br i1 %.not255, label %67, label %58

58:                                               ; preds = %57
  %59 = getelementptr inbounds i8, ptr %.1197, i64 16
  %60 = load ptr, ptr %59, align 8, !tbaa !23
  %.not256 = icmp eq ptr %60, null
  br i1 %.not256, label %67, label %61

61:                                               ; preds = %58
  %62 = load ptr, ptr %6, align 8, !tbaa !19
  %63 = load ptr, ptr %62, align 8, !tbaa !25
  %64 = getelementptr inbounds i8, ptr %63, i64 32
  %65 = load i64, ptr %64, align 8, !tbaa !29
  %66 = getelementptr inbounds i8, ptr %60, i64 %65
  br label %67

67:                                               ; preds = %61, %58, %57
  %.2198 = phi ptr [ null, %57 ], [ %66, %61 ], [ null, %58 ]
  %68 = add i32 %.2205, -1
  br label %103

69:                                               ; preds = %54
  %70 = load ptr, ptr %6, align 8, !tbaa !19
  %71 = load ptr, ptr %70, align 8, !tbaa !25
  %72 = getelementptr inbounds i8, ptr %71, i64 32
  %73 = load i64, ptr %72, align 8, !tbaa !29
  %74 = sub i64 0, %73
  %75 = getelementptr inbounds i8, ptr %.1197, i64 %74
  %76 = getelementptr inbounds i8, ptr %.2194, i64 %74
  %77 = tail call i32 @by_unicode(ptr noundef %75, ptr noundef %76)
  %78 = icmp slt i32 %77, 1
  br i1 %78, label %79, label %91

79:                                               ; preds = %69
  %.not253 = icmp eq ptr %.1197, null
  br i1 %.not253, label %89, label %80

80:                                               ; preds = %79
  %81 = getelementptr inbounds i8, ptr %.1197, i64 16
  %82 = load ptr, ptr %81, align 8, !tbaa !23
  %.not254 = icmp eq ptr %82, null
  br i1 %.not254, label %89, label %83

83:                                               ; preds = %80
  %84 = load ptr, ptr %6, align 8, !tbaa !19
  %85 = load ptr, ptr %84, align 8, !tbaa !25
  %86 = getelementptr inbounds i8, ptr %85, i64 32
  %87 = load i64, ptr %86, align 8, !tbaa !29
  %88 = getelementptr inbounds i8, ptr %82, i64 %87
  br label %89

89:                                               ; preds = %83, %80, %79
  %.3199 = phi ptr [ null, %79 ], [ %88, %83 ], [ null, %80 ]
  %90 = add i32 %.2205, -1
  br label %103

91:                                               ; preds = %69
  %92 = getelementptr inbounds i8, ptr %.2194, i64 16
  %93 = load ptr, ptr %92, align 8, !tbaa !23
  %.not252 = icmp eq ptr %93, null
  br i1 %.not252, label %100, label %94

94:                                               ; preds = %91
  %95 = load ptr, ptr %6, align 8, !tbaa !19
  %96 = load ptr, ptr %95, align 8, !tbaa !25
  %97 = getelementptr inbounds i8, ptr %96, i64 32
  %98 = load i64, ptr %97, align 8, !tbaa !29
  %99 = getelementptr inbounds i8, ptr %93, i64 %98
  br label %100

100:                                              ; preds = %91, %94
  %101 = phi ptr [ %99, %94 ], [ null, %91 ]
  %102 = add i32 %.0201, -1
  br label %103

103:                                              ; preds = %67, %100, %89, %51
  %.3206 = phi i32 [ 0, %51 ], [ %68, %67 ], [ %90, %89 ], [ %.2205, %100 ]
  %.1202 = phi i32 [ %53, %51 ], [ %.0201, %67 ], [ %.0201, %89 ], [ %102, %100 ]
  %.4200 = phi ptr [ %.1197, %51 ], [ %.2198, %67 ], [ %.3199, %89 ], [ %.1197, %100 ]
  %.3195 = phi ptr [ %52, %51 ], [ %.2194, %67 ], [ %.2194, %89 ], [ %101, %100 ]
  %.0191 = phi ptr [ %.2194, %51 ], [ %.1197, %67 ], [ %.1197, %89 ], [ %.2194, %100 ]
  %.not258 = icmp eq ptr %.1186, null
  %.not260 = icmp eq ptr %.0191, null
  br i1 %.not258, label %106, label %104

104:                                              ; preds = %103
  br i1 %.not260, label %.thread266.thread, label %107

.thread266.thread:                                ; preds = %104
  %105 = getelementptr inbounds i8, ptr %.1186, i64 16
  store ptr null, ptr %105, align 8, !tbaa !23
  br label %.thread, !llvm.loop !33

106:                                              ; preds = %103
  br i1 %.not260, label %.thread.outer.backedge, label %116

107:                                              ; preds = %104
  %108 = load ptr, ptr %6, align 8, !tbaa !19
  %109 = load ptr, ptr %108, align 8, !tbaa !25
  %110 = getelementptr inbounds i8, ptr %109, i64 32
  %111 = load i64, ptr %110, align 8, !tbaa !29
  %112 = sub i64 0, %111
  %113 = getelementptr inbounds i8, ptr %.0191, i64 %112
  %114 = getelementptr inbounds i8, ptr %.1186, i64 16
  store ptr %113, ptr %114, align 8, !tbaa !23
  %115 = getelementptr inbounds i8, ptr %.1186, i64 %112
  br label %116

116:                                              ; preds = %106, %107
  %.3190269274 = phi ptr [ %.2189.ph, %107 ], [ %.0191, %106 ]
  %117 = phi ptr [ %115, %107 ], [ null, %106 ]
  %118 = getelementptr inbounds i8, ptr %.0191, i64 8
  store ptr %117, ptr %118, align 8, !tbaa !34
  br label %.thread.outer.backedge

.thread.outer.backedge:                           ; preds = %116, %106
  %.2189.ph.be = phi ptr [ null, %106 ], [ %.3190269274, %116 ]
  br label %.thread.outer, !llvm.loop !33

._crit_edge:                                      ; preds = %.loopexit289
  %.not249 = icmp eq ptr %.1186, null
  br i1 %.not249, label %121, label %119

119:                                              ; preds = %._crit_edge
  %120 = getelementptr inbounds i8, ptr %.1186, i64 16
  store ptr null, ptr %120, align 8, !tbaa !23
  br label %121

121:                                              ; preds = %119, %._crit_edge
  %.0185.lcssa345 = phi ptr [ %.1186, %119 ], [ null, %._crit_edge ]
  %122 = icmp ult i32 %29, 2
  br i1 %122, label %.loopexit292.loopexit, label %.preheader290

.loopexit292.loopexit:                            ; preds = %.preheader290, %121
  %.1188.lcssa344351 = phi ptr [ %.2189.ph, %121 ], [ null, %.preheader290 ]
  %.0185.lcssa345350 = phi ptr [ %.0185.lcssa345, %121 ], [ null, %.preheader290 ]
  %123 = load ptr, ptr %6, align 8, !tbaa !19
  %124 = load ptr, ptr %123, align 8, !tbaa !25
  %125 = getelementptr inbounds i8, ptr %124, i64 24
  store ptr %.0185.lcssa345350, ptr %125, align 8, !tbaa !35
  %126 = getelementptr inbounds i8, ptr %124, i64 32
  %127 = load i64, ptr %126, align 8, !tbaa !29
  %128 = sub i64 0, %127
  %129 = getelementptr inbounds i8, ptr %.1188.lcssa344351, i64 %128
  store ptr %129, ptr %6, align 8, !tbaa !19
  br label %.loopexit292

.loopexit292:                                     ; preds = %.loopexit292.loopexit, %.critedge262
  %130 = getelementptr inbounds i8, ptr %6, i64 8
  %131 = load ptr, ptr %130, align 8, !tbaa !36
  %.not233 = icmp eq ptr %131, null
  br i1 %.not233, label %.loopexit288, label %.lr.ph326

.preheader:                                       ; preds = %226
  %132 = shl i32 %.0180331376, 1
  %.not235321 = icmp eq ptr %.2.ph, null
  br i1 %.not235321, label %.loopexit288.loopexit, label %.lr.ph326

.lr.ph326:                                        ; preds = %.loopexit292, %.preheader
  %.0180331376 = phi i32 [ %132, %.preheader ], [ 1, %.loopexit292 ]
  %.0163332375 = phi ptr [ %.2.ph, %.preheader ], [ %131, %.loopexit292 ]
  %.not334 = icmp eq i32 %.0180331376, 0
  br label %133

.loopexit:                                        ; preds = %144
  %.not235 = icmp eq ptr %.2168, null
  br i1 %.not235, label %._crit_edge327, label %133, !llvm.loop !37

133:                                              ; preds = %.lr.ph326, %.loopexit
  %.0325 = phi ptr [ null, %.lr.ph326 ], [ %.1, %.loopexit ]
  %.1164324 = phi ptr [ null, %.lr.ph326 ], [ %.2.ph, %.loopexit ]
  %.0170323 = phi ptr [ %.0163332375, %.lr.ph326 ], [ %.2168, %.loopexit ]
  %.0181322 = phi i32 [ 0, %.lr.ph326 ], [ %134, %.loopexit ]
  %134 = add i32 %.0181322, 1
  br i1 %.not334, label %.thread275.preheader, label %.lr.ph315

.lr.ph315:                                        ; preds = %133, %138
  %.0166313 = phi ptr [ %143, %138 ], [ %.0170323, %133 ]
  %.0176312 = phi i32 [ %135, %138 ], [ 0, %133 ]
  %135 = add nuw i32 %.0176312, 1
  %136 = getelementptr inbounds i8, ptr %.0166313, i64 16
  %137 = load ptr, ptr %136, align 8, !tbaa !23
  %.not237 = icmp eq ptr %137, null
  br i1 %.not237, label %.thread275.preheader, label %138

138:                                              ; preds = %.lr.ph315
  %139 = load ptr, ptr %130, align 8, !tbaa !36
  %140 = load ptr, ptr %139, align 8, !tbaa !38
  %141 = getelementptr inbounds i8, ptr %140, i64 32
  %142 = load i64, ptr %141, align 8, !tbaa !29
  %143 = getelementptr inbounds i8, ptr %137, i64 %142
  %exitcond338.not = icmp eq i32 %135, %.0180331376
  br i1 %exitcond338.not, label %.thread275.preheader, label %.lr.ph315, !llvm.loop !41

.thread275.preheader:                             ; preds = %138, %.lr.ph315, %133
  %.2178.ph = phi i32 [ 0, %133 ], [ %135, %.lr.ph315 ], [ %.0180331376, %138 ]
  %.2168.ph = phi ptr [ %.0170323, %133 ], [ null, %.lr.ph315 ], [ %143, %138 ]
  br label %.thread275.outer

.thread275.outer:                                 ; preds = %.thread275.outer.backedge, %.thread275.preheader
  %.2178.ph377 = phi i32 [ %.2178.ph, %.thread275.preheader ], [ %.3179, %.thread275.outer.backedge ]
  %.0174.ph = phi i32 [ %.0180331376, %.thread275.preheader ], [ %.1175, %.thread275.outer.backedge ]
  %.1171.ph = phi ptr [ %.0170323, %.thread275.preheader ], [ %.4, %.thread275.outer.backedge ]
  %.2168.ph378 = phi ptr [ %.2168.ph, %.thread275.preheader ], [ %.3169, %.thread275.outer.backedge ]
  %.2.ph = phi ptr [ %.1164324, %.thread275.preheader ], [ %.2.ph.be, %.thread275.outer.backedge ]
  %.1.ph = phi ptr [ %.0325, %.thread275.preheader ], [ %.0165, %.thread275.outer.backedge ]
  br label %.thread275

.thread275:                                       ; preds = %.thread275.outer, %.thread276.thread
  %.2178 = phi i32 [ %.3179, %.thread276.thread ], [ %.2178.ph377, %.thread275.outer ]
  %.0174 = phi i32 [ %.1175, %.thread276.thread ], [ %.0174.ph, %.thread275.outer ]
  %.1171 = phi ptr [ %.4, %.thread276.thread ], [ %.1171.ph, %.thread275.outer ]
  %.2168 = phi ptr [ %.3169, %.thread276.thread ], [ %.2168.ph378, %.thread275.outer ]
  %.1 = phi ptr [ %.0165, %.thread276.thread ], [ %.1.ph, %.thread275.outer ]
  %cond265 = icmp eq i32 %.2178, 0
  br i1 %cond265, label %144, label %159

144:                                              ; preds = %.thread275
  %145 = icmp ne i32 %.0174, 0
  %146 = icmp ne ptr %.2168, null
  %147 = select i1 %145, i1 %146, i1 false
  br i1 %147, label %.critedge3, label %.loopexit

.critedge3:                                       ; preds = %144
  %148 = getelementptr inbounds i8, ptr %.2168, i64 16
  %149 = load ptr, ptr %148, align 8, !tbaa !23
  %.not244 = icmp eq ptr %149, null
  br i1 %.not244, label %156, label %150

150:                                              ; preds = %.critedge3
  %151 = load ptr, ptr %130, align 8, !tbaa !36
  %152 = load ptr, ptr %151, align 8, !tbaa !38
  %153 = getelementptr inbounds i8, ptr %152, i64 32
  %154 = load i64, ptr %153, align 8, !tbaa !29
  %155 = getelementptr inbounds i8, ptr %149, i64 %154
  br label %156

156:                                              ; preds = %.critedge3, %150
  %157 = phi ptr [ %155, %150 ], [ null, %.critedge3 ]
  %158 = add i32 %.0174, -1
  br label %208

159:                                              ; preds = %.thread275
  %160 = icmp eq i32 %.0174, 0
  %161 = icmp eq ptr %.2168, null
  %or.cond5 = select i1 %160, i1 true, i1 %161
  br i1 %or.cond5, label %162, label %174

162:                                              ; preds = %159
  %.not242 = icmp eq ptr %.1171, null
  br i1 %.not242, label %172, label %163

163:                                              ; preds = %162
  %164 = getelementptr inbounds i8, ptr %.1171, i64 16
  %165 = load ptr, ptr %164, align 8, !tbaa !23
  %.not243 = icmp eq ptr %165, null
  br i1 %.not243, label %172, label %166

166:                                              ; preds = %163
  %167 = load ptr, ptr %130, align 8, !tbaa !36
  %168 = load ptr, ptr %167, align 8, !tbaa !38
  %169 = getelementptr inbounds i8, ptr %168, i64 32
  %170 = load i64, ptr %169, align 8, !tbaa !29
  %171 = getelementptr inbounds i8, ptr %165, i64 %170
  br label %172

172:                                              ; preds = %166, %163, %162
  %.2172 = phi ptr [ null, %162 ], [ %171, %166 ], [ null, %163 ]
  %173 = add i32 %.2178, -1
  br label %208

174:                                              ; preds = %159
  %175 = load ptr, ptr %130, align 8, !tbaa !36
  %176 = load ptr, ptr %175, align 8, !tbaa !38
  %177 = getelementptr inbounds i8, ptr %176, i64 32
  %178 = load i64, ptr %177, align 8, !tbaa !29
  %179 = sub i64 0, %178
  %180 = getelementptr inbounds i8, ptr %.1171, i64 %179
  %181 = getelementptr inbounds i8, ptr %.2168, i64 %179
  %182 = tail call i32 @by_uvs_key(ptr noundef %180, ptr noundef %181)
  %183 = icmp slt i32 %182, 1
  br i1 %183, label %184, label %196

184:                                              ; preds = %174
  %.not240 = icmp eq ptr %.1171, null
  br i1 %.not240, label %194, label %185

185:                                              ; preds = %184
  %186 = getelementptr inbounds i8, ptr %.1171, i64 16
  %187 = load ptr, ptr %186, align 8, !tbaa !23
  %.not241 = icmp eq ptr %187, null
  br i1 %.not241, label %194, label %188

188:                                              ; preds = %185
  %189 = load ptr, ptr %130, align 8, !tbaa !36
  %190 = load ptr, ptr %189, align 8, !tbaa !38
  %191 = getelementptr inbounds i8, ptr %190, i64 32
  %192 = load i64, ptr %191, align 8, !tbaa !29
  %193 = getelementptr inbounds i8, ptr %187, i64 %192
  br label %194

194:                                              ; preds = %188, %185, %184
  %.3173 = phi ptr [ null, %184 ], [ %193, %188 ], [ null, %185 ]
  %195 = add i32 %.2178, -1
  br label %208

196:                                              ; preds = %174
  %197 = getelementptr inbounds i8, ptr %.2168, i64 16
  %198 = load ptr, ptr %197, align 8, !tbaa !23
  %.not239 = icmp eq ptr %198, null
  br i1 %.not239, label %205, label %199

199:                                              ; preds = %196
  %200 = load ptr, ptr %130, align 8, !tbaa !36
  %201 = load ptr, ptr %200, align 8, !tbaa !38
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  %203 = load i64, ptr %202, align 8, !tbaa !29
  %204 = getelementptr inbounds i8, ptr %198, i64 %203
  br label %205

205:                                              ; preds = %196, %199
  %206 = phi ptr [ %204, %199 ], [ null, %196 ]
  %207 = add i32 %.0174, -1
  br label %208

208:                                              ; preds = %172, %205, %194, %156
  %.3179 = phi i32 [ 0, %156 ], [ %173, %172 ], [ %195, %194 ], [ %.2178, %205 ]
  %.1175 = phi i32 [ %158, %156 ], [ %.0174, %172 ], [ %.0174, %194 ], [ %207, %205 ]
  %.4 = phi ptr [ %.1171, %156 ], [ %.2172, %172 ], [ %.3173, %194 ], [ %.1171, %205 ]
  %.3169 = phi ptr [ %157, %156 ], [ %.2168, %172 ], [ %.2168, %194 ], [ %206, %205 ]
  %.0165 = phi ptr [ %.2168, %156 ], [ %.1171, %172 ], [ %.1171, %194 ], [ %.2168, %205 ]
  %.not245 = icmp eq ptr %.1, null
  %.not247 = icmp eq ptr %.0165, null
  br i1 %.not245, label %211, label %209

209:                                              ; preds = %208
  br i1 %.not247, label %.thread276.thread, label %212

.thread276.thread:                                ; preds = %209
  %210 = getelementptr inbounds i8, ptr %.1, i64 16
  store ptr null, ptr %210, align 8, !tbaa !23
  br label %.thread275, !llvm.loop !42

211:                                              ; preds = %208
  br i1 %.not247, label %.thread275.outer.backedge, label %221

212:                                              ; preds = %209
  %213 = load ptr, ptr %130, align 8, !tbaa !36
  %214 = load ptr, ptr %213, align 8, !tbaa !38
  %215 = getelementptr inbounds i8, ptr %214, i64 32
  %216 = load i64, ptr %215, align 8, !tbaa !29
  %217 = sub i64 0, %216
  %218 = getelementptr inbounds i8, ptr %.0165, i64 %217
  %219 = getelementptr inbounds i8, ptr %.1, i64 16
  store ptr %218, ptr %219, align 8, !tbaa !23
  %220 = getelementptr inbounds i8, ptr %.1, i64 %217
  br label %221

221:                                              ; preds = %211, %212
  %.3279284 = phi ptr [ %.2.ph, %212 ], [ %.0165, %211 ]
  %222 = phi ptr [ %220, %212 ], [ null, %211 ]
  %223 = getelementptr inbounds i8, ptr %.0165, i64 8
  store ptr %222, ptr %223, align 8, !tbaa !34
  br label %.thread275.outer.backedge

.thread275.outer.backedge:                        ; preds = %221, %211
  %.2.ph.be = phi ptr [ null, %211 ], [ %.3279284, %221 ]
  br label %.thread275.outer, !llvm.loop !42

._crit_edge327:                                   ; preds = %.loopexit
  %.not236 = icmp eq ptr %.1, null
  br i1 %.not236, label %226, label %224

224:                                              ; preds = %._crit_edge327
  %225 = getelementptr inbounds i8, ptr %.1, i64 16
  store ptr null, ptr %225, align 8, !tbaa !23
  br label %226

226:                                              ; preds = %224, %._crit_edge327
  %.0.lcssa361 = phi ptr [ %.1, %224 ], [ null, %._crit_edge327 ]
  %227 = icmp ult i32 %134, 2
  br i1 %227, label %.loopexit288.loopexit, label %.preheader

.loopexit288.loopexit:                            ; preds = %.preheader, %226
  %.1164.lcssa360367 = phi ptr [ %.2.ph, %226 ], [ null, %.preheader ]
  %.0.lcssa361366 = phi ptr [ %.0.lcssa361, %226 ], [ null, %.preheader ]
  %228 = load ptr, ptr %130, align 8, !tbaa !36
  %229 = load ptr, ptr %228, align 8, !tbaa !38
  %230 = getelementptr inbounds i8, ptr %229, i64 24
  store ptr %.0.lcssa361366, ptr %230, align 8, !tbaa !35
  %231 = getelementptr inbounds i8, ptr %229, i64 32
  %232 = load i64, ptr %231, align 8, !tbaa !29
  %233 = sub i64 0, %232
  %234 = getelementptr inbounds i8, ptr %.1164.lcssa360367, i64 %233
  store ptr %234, ptr %130, align 8, !tbaa !36
  br label %.loopexit288

.loopexit288:                                     ; preds = %.loopexit288.loopexit, %.loopexit292, %2
  %.0214 = phi ptr [ null, %2 ], [ %6, %.loopexit292 ], [ %6, %.loopexit288.loopexit ]
  ret ptr %.0214
}

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @json_obj_get_type(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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, !10, i64 8}
!6 = !{!"_json_value", !7, i64 0, !10, i64 8, !8, i64 16, !8, i64 32}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !7, i64 48}
!12 = !{!"__caryll_elementinterface_table_cmap", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120}
!13 = !{!14, !7, i64 32}
!14 = !{!"", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !15, i64 6, !15, i64 7, !15, i64 8, !15, i64 9, !15, i64 10, !15, i64 11, !15, i64 12, !15, i64 13, !15, i64 14, !15, i64 15, !15, i64 16, !15, i64 17, !15, i64 18, !15, i64 19, !15, i64 20, !15, i64 21, !15, i64 22, !7, i64 24, !7, i64 32}
!15 = !{!"_Bool", !8, i64 0}
!16 = !{!17, !7, i64 32}
!17 = !{!"otfcc_ILogger", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88}
!18 = !{!17, !7, i64 64}
!19 = !{!20, !7, i64 0}
!20 = !{!"", !7, i64 0, !7, i64 8}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !7, i64 16}
!24 = !{!"UT_hash_handle", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !10, i64 52}
!25 = !{!26, !7, i64 0}
!26 = !{!"", !24, i64 0, !10, i64 56, !27, i64 64}
!27 = !{!"otfcc_Handle", !10, i64 0, !28, i64 4, !7, i64 8}
!28 = !{!"short", !8, i64 0}
!29 = !{!30, !31, i64 32}
!30 = !{!"UT_hash_table", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24, !31, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!31 = !{!"long", !8, i64 0}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = !{!24, !7, i64 8}
!35 = !{!30, !7, i64 24}
!36 = !{!20, !7, i64 8}
!37 = distinct !{!37, !22}
!38 = !{!39, !7, i64 0}
!39 = !{!"", !24, i64 0, !40, i64 56, !27, i64 64}
!40 = !{!"", !10, i64 0, !10, i64 4}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}


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