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

; 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_OTL = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LookupList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_FeatureList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LangSystemList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.otfcc_Options = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr }
%struct.otfcc_ILogger = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._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.anon.1 = type { i32, ptr }
%struct.lookup_hash = type { ptr, ptr, %struct.UT_hash_handle, i32, i16 }
%struct.UT_hash_handle = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.UT_hash_table = type { ptr, i32, i32, i32, ptr, i64, i32, i32, i32, i32, i32 }
%struct.UT_hash_bucket = type { ptr, i32, i32 }
%struct.feature_hash = type { ptr, i8, ptr, %struct.UT_hash_handle }
%struct.language_hash = type { ptr, ptr, %struct.UT_hash_handle }
%struct.table_OTL = type { %struct.otl_LookupList, %struct.otl_FeatureList, %struct.otl_LangSystemList }
%struct.otl_LookupList = type { i64, i64, ptr }
%struct.otl_FeatureList = type { i64, i64, ptr }
%struct.otl_LangSystemList = type { i64, i64, ptr }

@table_iOTL = external constant %struct.__caryll_elementinterface_table_OTL, align 8
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@otl_iLookupList = external constant %struct.__caryll_vectorinterface_otl_LookupList, align 8
@otl_iFeatureList = external constant %struct.__caryll_vectorinterface_otl_FeatureList, align 8
@otl_iLangSystemList = external constant %struct.__caryll_vectorinterface_otl_LangSystemList, align 8
@.str.5 = external hidden unnamed_addr constant [58 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local ptr @otfcc_parseOtl(ptr noundef %0, ptr noundef %1, ptr noundef %2) #0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i16, align 2
  %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 ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca i32, align 4
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = call ptr @json_obj_get_type(ptr noundef %76, ptr noundef %77, i32 noundef 1)
  store ptr %78, ptr %9, align 8, !tbaa !5
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = icmp ne ptr %79, null
  br i1 %80, label %82, label %81

81:                                               ; preds = %3
  br label %2215

82:                                               ; preds = %3
  %83 = load ptr, ptr getelementptr inbounds (%struct.__caryll_elementinterface_table_OTL, ptr @table_iOTL, i32 0, i32 6), align 8, !tbaa !9
  %84 = call ptr (...) %83()
  store ptr %84, ptr %8, align 8, !tbaa !5
  %85 = load ptr, ptr %9, align 8, !tbaa !5
  %86 = call ptr @json_obj_get_type(ptr noundef %85, ptr noundef @.str, i32 noundef 1)
  store ptr %86, ptr %10, align 8, !tbaa !5
  %87 = load ptr, ptr %9, align 8, !tbaa !5
  %88 = call ptr @json_obj_get_type(ptr noundef %87, ptr noundef @.str.1, i32 noundef 1)
  store ptr %88, ptr %11, align 8, !tbaa !5
  %89 = load ptr, ptr %9, align 8, !tbaa !5
  %90 = call ptr @json_obj_get_type(ptr noundef %89, ptr noundef @.str.2, i32 noundef 1)
  store ptr %90, ptr %12, align 8, !tbaa !5
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = icmp ne ptr %91, null
  br i1 %92, label %93, label %99

93:                                               ; preds = %82
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = icmp ne ptr %94, null
  br i1 %95, label %96, label %99

96:                                               ; preds = %93
  %97 = load ptr, ptr %12, align 8, !tbaa !5
  %98 = icmp ne ptr %97, null
  br i1 %98, label %100, label %99

99:                                               ; preds = %96, %93, %82
  br label %2215

100:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.otfcc_Options, ptr %101, i32 0, i32 24
  %103 = load ptr, ptr %102, align 8, !tbaa !11
  %104 = getelementptr inbounds %struct.otfcc_ILogger, ptr %103, i32 0, i32 4
  %105 = load ptr, ptr %104, align 8, !tbaa !14
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.otfcc_Options, ptr %106, i32 0, i32 24
  %108 = load ptr, ptr %107, align 8, !tbaa !11
  %109 = call ptr @sdsempty()
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %109, ptr noundef @.str.3, ptr noundef %110)
  call void %105(ptr noundef %108, ptr noundef %111)
  store i8 1, ptr %13, align 1, !tbaa !16
  br label %112

112:                                              ; preds = %2202, %100
  %113 = load i8, ptr %13, align 1, !tbaa !16, !range !17, !noundef !18
  %114 = trunc i8 %113 to i1
  br i1 %114, label %116, label %115

115:                                              ; preds = %112
  store i32 3, ptr %14, align 4
  br label %2211

116:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = call ptr @figureOutLookupsFromJSON(ptr noundef %117, ptr noundef %118)
  store ptr %119, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %120 = load ptr, ptr %9, align 8, !tbaa !5
  %121 = call ptr @json_obj_get_type(ptr noundef %120, ptr noundef @.str.4, i32 noundef 2)
  store ptr %121, ptr %16, align 8, !tbaa !5
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = icmp ne ptr %122, null
  br i1 %123, label %124, label %673

124:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 2, ptr %17) #6
  store i16 0, ptr %17, align 2, !tbaa !19
  br label %125

125:                                              ; preds = %669, %124
  %126 = load i16, ptr %17, align 2, !tbaa !19
  %127 = zext i16 %126 to i32
  %128 = load ptr, ptr %16, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct._json_value, ptr %128, i32 0, i32 2
  %130 = getelementptr inbounds %struct.anon.1, ptr %129, i32 0, i32 0
  %131 = load i32, ptr %130, align 8, !tbaa !21
  %132 = icmp ult i32 %127, %131
  br i1 %132, label %134, label %133

133:                                              ; preds = %125
  store i32 6, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %17) #6
  br label %672

134:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct._json_value, ptr %135, i32 0, i32 2
  %137 = getelementptr inbounds %struct.anon.1, ptr %136, i32 0, i32 1
  %138 = load ptr, ptr %137, align 8, !tbaa !21
  %139 = load i16, ptr %17, align 2, !tbaa !19
  %140 = zext i16 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %138, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !5
  store ptr %142, ptr %18, align 8, !tbaa !5
  %143 = load ptr, ptr %18, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %145, label %668

145:                                              ; preds = %134
  %146 = load ptr, ptr %18, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct._json_value, ptr %146, i32 0, i32 1
  %148 = load i32, ptr %147, align 8, !tbaa !22
  %149 = icmp eq i32 %148, 5
  br i1 %149, label %150, label %668

150:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  store ptr null, ptr %19, align 8, !tbaa !5
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  br label %152

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %154 = load ptr, ptr %18, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct._json_value, ptr %154, i32 0, i32 2
  %156 = getelementptr inbounds %struct.anon, ptr %155, i32 0, i32 1
  %157 = load ptr, ptr %156, align 8, !tbaa !21
  store ptr %157, ptr %24, align 8, !tbaa !5
  store i32 -17973521, ptr %20, align 4, !tbaa !25
  store i32 -1640531527, ptr %22, align 4, !tbaa !25
  store i32 -1640531527, ptr %21, align 4, !tbaa !25
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct._json_value, ptr %158, i32 0, i32 2
  %160 = getelementptr inbounds %struct.anon, ptr %159, i32 0, i32 1
  %161 = load ptr, ptr %160, align 8, !tbaa !21
  %162 = call i64 @strlen(ptr noundef %161) #7
  %163 = trunc i64 %162 to i32
  store i32 %163, ptr %23, align 4, !tbaa !25
  br label %164

164:                                              ; preds = %332, %153
  %165 = load i32, ptr %23, align 4, !tbaa !25
  %166 = icmp uge i32 %165, 12
  br i1 %166, label %167, label %337

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

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

331:                                              ; preds = %240
  br label %332

332:                                              ; preds = %331
  %333 = load ptr, ptr %24, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i64 12
  store ptr %334, ptr %24, align 8, !tbaa !5
  %335 = load i32, ptr %23, align 4, !tbaa !25
  %336 = sub i32 %335, 12
  store i32 %336, ptr %23, align 4, !tbaa !25
  br label %164, !llvm.loop !26

337:                                              ; preds = %164
  %338 = load ptr, ptr %18, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct._json_value, ptr %338, i32 0, i32 2
  %340 = getelementptr inbounds %struct.anon, ptr %339, i32 0, i32 1
  %341 = load ptr, ptr %340, align 8, !tbaa !21
  %342 = call i64 @strlen(ptr noundef %341) #7
  %343 = trunc i64 %342 to i32
  %344 = load i32, ptr %20, align 4, !tbaa !25
  %345 = add i32 %344, %343
  store i32 %345, ptr %20, align 4, !tbaa !25
  %346 = load i32, ptr %23, align 4, !tbaa !25
  switch i32 %346, label %433 [
    i32 11, label %347
    i32 10, label %355
    i32 9, label %363
    i32 8, label %371
    i32 7, label %379
    i32 6, label %387
    i32 5, label %395
    i32 4, label %402
    i32 3, label %410
    i32 2, label %418
    i32 1, label %426
  ]

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

355:                                              ; preds = %347, %337
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = getelementptr inbounds i8, ptr %356, i64 9
  %358 = load i8, ptr %357, align 1, !tbaa !21
  %359 = zext i8 %358 to i32
  %360 = shl i32 %359, 16
  %361 = load i32, ptr %20, align 4, !tbaa !25
  %362 = add i32 %361, %360
  store i32 %362, ptr %20, align 4, !tbaa !25
  br label %363

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

371:                                              ; preds = %363, %337
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = getelementptr inbounds i8, ptr %372, i64 7
  %374 = load i8, ptr %373, align 1, !tbaa !21
  %375 = zext i8 %374 to i32
  %376 = shl i32 %375, 24
  %377 = load i32, ptr %22, align 4, !tbaa !25
  %378 = add i32 %377, %376
  store i32 %378, ptr %22, align 4, !tbaa !25
  br label %379

379:                                              ; preds = %371, %337
  %380 = load ptr, ptr %24, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %380, i64 6
  %382 = load i8, ptr %381, align 1, !tbaa !21
  %383 = zext i8 %382 to i32
  %384 = shl i32 %383, 16
  %385 = load i32, ptr %22, align 4, !tbaa !25
  %386 = add i32 %385, %384
  store i32 %386, ptr %22, align 4, !tbaa !25
  br label %387

387:                                              ; preds = %379, %337
  %388 = load ptr, ptr %24, align 8, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %388, i64 5
  %390 = load i8, ptr %389, align 1, !tbaa !21
  %391 = zext i8 %390 to i32
  %392 = shl i32 %391, 8
  %393 = load i32, ptr %22, align 4, !tbaa !25
  %394 = add i32 %393, %392
  store i32 %394, ptr %22, align 4, !tbaa !25
  br label %395

395:                                              ; preds = %387, %337
  %396 = load ptr, ptr %24, align 8, !tbaa !5
  %397 = getelementptr inbounds i8, ptr %396, i64 4
  %398 = load i8, ptr %397, align 1, !tbaa !21
  %399 = zext i8 %398 to i32
  %400 = load i32, ptr %22, align 4, !tbaa !25
  %401 = add i32 %400, %399
  store i32 %401, ptr %22, align 4, !tbaa !25
  br label %402

402:                                              ; preds = %395, %337
  %403 = load ptr, ptr %24, align 8, !tbaa !5
  %404 = getelementptr inbounds i8, ptr %403, i64 3
  %405 = load i8, ptr %404, align 1, !tbaa !21
  %406 = zext i8 %405 to i32
  %407 = shl i32 %406, 24
  %408 = load i32, ptr %21, align 4, !tbaa !25
  %409 = add i32 %408, %407
  store i32 %409, ptr %21, align 4, !tbaa !25
  br label %410

410:                                              ; preds = %402, %337
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %411, i64 2
  %413 = load i8, ptr %412, align 1, !tbaa !21
  %414 = zext i8 %413 to i32
  %415 = shl i32 %414, 16
  %416 = load i32, ptr %21, align 4, !tbaa !25
  %417 = add i32 %416, %415
  store i32 %417, ptr %21, align 4, !tbaa !25
  br label %418

418:                                              ; preds = %410, %337
  %419 = load ptr, ptr %24, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 1
  %421 = load i8, ptr %420, align 1, !tbaa !21
  %422 = zext i8 %421 to i32
  %423 = shl i32 %422, 8
  %424 = load i32, ptr %21, align 4, !tbaa !25
  %425 = add i32 %424, %423
  store i32 %425, ptr %21, align 4, !tbaa !25
  br label %426

426:                                              ; preds = %418, %337
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 0
  %429 = load i8, ptr %428, align 1, !tbaa !21
  %430 = zext i8 %429 to i32
  %431 = load i32, ptr %21, align 4, !tbaa !25
  %432 = add i32 %431, %430
  store i32 %432, ptr %21, align 4, !tbaa !25
  br label %433

433:                                              ; preds = %426, %337
  br label %434

434:                                              ; preds = %433
  %435 = load i32, ptr %22, align 4, !tbaa !25
  %436 = load i32, ptr %21, align 4, !tbaa !25
  %437 = sub i32 %436, %435
  store i32 %437, ptr %21, align 4, !tbaa !25
  %438 = load i32, ptr %20, align 4, !tbaa !25
  %439 = load i32, ptr %21, align 4, !tbaa !25
  %440 = sub i32 %439, %438
  store i32 %440, ptr %21, align 4, !tbaa !25
  %441 = load i32, ptr %20, align 4, !tbaa !25
  %442 = lshr i32 %441, 13
  %443 = load i32, ptr %21, align 4, !tbaa !25
  %444 = xor i32 %443, %442
  store i32 %444, ptr %21, align 4, !tbaa !25
  %445 = load i32, ptr %20, align 4, !tbaa !25
  %446 = load i32, ptr %22, align 4, !tbaa !25
  %447 = sub i32 %446, %445
  store i32 %447, ptr %22, align 4, !tbaa !25
  %448 = load i32, ptr %21, align 4, !tbaa !25
  %449 = load i32, ptr %22, align 4, !tbaa !25
  %450 = sub i32 %449, %448
  store i32 %450, ptr %22, align 4, !tbaa !25
  %451 = load i32, ptr %21, align 4, !tbaa !25
  %452 = shl i32 %451, 8
  %453 = load i32, ptr %22, align 4, !tbaa !25
  %454 = xor i32 %453, %452
  store i32 %454, ptr %22, align 4, !tbaa !25
  %455 = load i32, ptr %21, align 4, !tbaa !25
  %456 = load i32, ptr %20, align 4, !tbaa !25
  %457 = sub i32 %456, %455
  store i32 %457, ptr %20, align 4, !tbaa !25
  %458 = load i32, ptr %22, align 4, !tbaa !25
  %459 = load i32, ptr %20, align 4, !tbaa !25
  %460 = sub i32 %459, %458
  store i32 %460, ptr %20, align 4, !tbaa !25
  %461 = load i32, ptr %22, align 4, !tbaa !25
  %462 = lshr i32 %461, 13
  %463 = load i32, ptr %20, align 4, !tbaa !25
  %464 = xor i32 %463, %462
  store i32 %464, ptr %20, align 4, !tbaa !25
  %465 = load i32, ptr %22, align 4, !tbaa !25
  %466 = load i32, ptr %21, align 4, !tbaa !25
  %467 = sub i32 %466, %465
  store i32 %467, ptr %21, align 4, !tbaa !25
  %468 = load i32, ptr %20, align 4, !tbaa !25
  %469 = load i32, ptr %21, align 4, !tbaa !25
  %470 = sub i32 %469, %468
  store i32 %470, ptr %21, align 4, !tbaa !25
  %471 = load i32, ptr %20, align 4, !tbaa !25
  %472 = lshr i32 %471, 12
  %473 = load i32, ptr %21, align 4, !tbaa !25
  %474 = xor i32 %473, %472
  store i32 %474, ptr %21, align 4, !tbaa !25
  %475 = load i32, ptr %20, align 4, !tbaa !25
  %476 = load i32, ptr %22, align 4, !tbaa !25
  %477 = sub i32 %476, %475
  store i32 %477, ptr %22, align 4, !tbaa !25
  %478 = load i32, ptr %21, align 4, !tbaa !25
  %479 = load i32, ptr %22, align 4, !tbaa !25
  %480 = sub i32 %479, %478
  store i32 %480, ptr %22, align 4, !tbaa !25
  %481 = load i32, ptr %21, align 4, !tbaa !25
  %482 = shl i32 %481, 16
  %483 = load i32, ptr %22, align 4, !tbaa !25
  %484 = xor i32 %483, %482
  store i32 %484, ptr %22, align 4, !tbaa !25
  %485 = load i32, ptr %21, align 4, !tbaa !25
  %486 = load i32, ptr %20, align 4, !tbaa !25
  %487 = sub i32 %486, %485
  store i32 %487, ptr %20, align 4, !tbaa !25
  %488 = load i32, ptr %22, align 4, !tbaa !25
  %489 = load i32, ptr %20, align 4, !tbaa !25
  %490 = sub i32 %489, %488
  store i32 %490, ptr %20, align 4, !tbaa !25
  %491 = load i32, ptr %22, align 4, !tbaa !25
  %492 = lshr i32 %491, 5
  %493 = load i32, ptr %20, align 4, !tbaa !25
  %494 = xor i32 %493, %492
  store i32 %494, ptr %20, align 4, !tbaa !25
  %495 = load i32, ptr %22, align 4, !tbaa !25
  %496 = load i32, ptr %21, align 4, !tbaa !25
  %497 = sub i32 %496, %495
  store i32 %497, ptr %21, align 4, !tbaa !25
  %498 = load i32, ptr %20, align 4, !tbaa !25
  %499 = load i32, ptr %21, align 4, !tbaa !25
  %500 = sub i32 %499, %498
  store i32 %500, ptr %21, align 4, !tbaa !25
  %501 = load i32, ptr %20, align 4, !tbaa !25
  %502 = lshr i32 %501, 3
  %503 = load i32, ptr %21, align 4, !tbaa !25
  %504 = xor i32 %503, %502
  store i32 %504, ptr %21, align 4, !tbaa !25
  %505 = load i32, ptr %20, align 4, !tbaa !25
  %506 = load i32, ptr %22, align 4, !tbaa !25
  %507 = sub i32 %506, %505
  store i32 %507, ptr %22, align 4, !tbaa !25
  %508 = load i32, ptr %21, align 4, !tbaa !25
  %509 = load i32, ptr %22, align 4, !tbaa !25
  %510 = sub i32 %509, %508
  store i32 %510, ptr %22, align 4, !tbaa !25
  %511 = load i32, ptr %21, align 4, !tbaa !25
  %512 = shl i32 %511, 10
  %513 = load i32, ptr %22, align 4, !tbaa !25
  %514 = xor i32 %513, %512
  store i32 %514, ptr %22, align 4, !tbaa !25
  %515 = load i32, ptr %21, align 4, !tbaa !25
  %516 = load i32, ptr %20, align 4, !tbaa !25
  %517 = sub i32 %516, %515
  store i32 %517, ptr %20, align 4, !tbaa !25
  %518 = load i32, ptr %22, align 4, !tbaa !25
  %519 = load i32, ptr %20, align 4, !tbaa !25
  %520 = sub i32 %519, %518
  store i32 %520, ptr %20, align 4, !tbaa !25
  %521 = load i32, ptr %22, align 4, !tbaa !25
  %522 = lshr i32 %521, 15
  %523 = load i32, ptr %20, align 4, !tbaa !25
  %524 = xor i32 %523, %522
  store i32 %524, ptr %20, align 4, !tbaa !25
  br label %525

525:                                              ; preds = %434
  br label %526

526:                                              ; preds = %525
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %527

527:                                              ; preds = %526
  br label %528

528:                                              ; preds = %527
  br label %529

529:                                              ; preds = %528
  br label %530

530:                                              ; preds = %529
  br label %531

531:                                              ; preds = %530
  store ptr null, ptr %19, align 8, !tbaa !5
  %532 = load ptr, ptr %15, align 8, !tbaa !5
  %533 = icmp ne ptr %532, null
  br i1 %533, label %534, label %654

534:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  br label %535

535:                                              ; preds = %534
  %536 = load i32, ptr %20, align 4, !tbaa !25
  %537 = load ptr, ptr %15, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.lookup_hash, ptr %537, i32 0, i32 2
  %539 = getelementptr inbounds %struct.UT_hash_handle, ptr %538, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !28
  %541 = getelementptr inbounds %struct.UT_hash_table, ptr %540, i32 0, i32 1
  %542 = load i32, ptr %541, align 8, !tbaa !31
  %543 = sub i32 %542, 1
  %544 = and i32 %536, %543
  store i32 %544, ptr %25, align 4, !tbaa !25
  br label %545

545:                                              ; preds = %535
  br label %546

546:                                              ; preds = %545
  br label %547

547:                                              ; preds = %546
  %548 = load ptr, ptr %15, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.lookup_hash, ptr %548, i32 0, i32 2
  %550 = getelementptr inbounds %struct.UT_hash_handle, ptr %549, i32 0, i32 0
  %551 = load ptr, ptr %550, align 8, !tbaa !28
  %552 = getelementptr inbounds %struct.UT_hash_table, ptr %551, i32 0, i32 0
  %553 = load ptr, ptr %552, align 8, !tbaa !34
  %554 = load i32, ptr %25, align 4, !tbaa !25
  %555 = zext i32 %554 to i64
  %556 = getelementptr inbounds %struct.UT_hash_bucket, ptr %553, i64 %555
  %557 = getelementptr inbounds %struct.UT_hash_bucket, ptr %556, i32 0, i32 0
  %558 = load ptr, ptr %557, align 8, !tbaa !35
  %559 = icmp ne ptr %558, null
  br i1 %559, label %560, label %583

560:                                              ; preds = %547
  br label %561

561:                                              ; preds = %560
  %562 = load ptr, ptr %15, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.lookup_hash, ptr %562, i32 0, i32 2
  %564 = getelementptr inbounds %struct.UT_hash_handle, ptr %563, i32 0, i32 0
  %565 = load ptr, ptr %564, align 8, !tbaa !28
  %566 = getelementptr inbounds %struct.UT_hash_table, ptr %565, i32 0, i32 0
  %567 = load ptr, ptr %566, align 8, !tbaa !34
  %568 = load i32, ptr %25, align 4, !tbaa !25
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds %struct.UT_hash_bucket, ptr %567, i64 %569
  %571 = getelementptr inbounds %struct.UT_hash_bucket, ptr %570, i32 0, i32 0
  %572 = load ptr, ptr %571, align 8, !tbaa !35
  %573 = load ptr, ptr %15, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.lookup_hash, ptr %573, i32 0, i32 2
  %575 = getelementptr inbounds %struct.UT_hash_handle, ptr %574, i32 0, i32 0
  %576 = load ptr, ptr %575, align 8, !tbaa !28
  %577 = getelementptr inbounds %struct.UT_hash_table, ptr %576, i32 0, i32 5
  %578 = load i64, ptr %577, align 8, !tbaa !37
  %579 = sub i64 0, %578
  %580 = getelementptr inbounds i8, ptr %572, i64 %579
  store ptr %580, ptr %19, align 8, !tbaa !5
  br label %581

581:                                              ; preds = %561
  br label %582

582:                                              ; preds = %581
  br label %584

583:                                              ; preds = %547
  store ptr null, ptr %19, align 8, !tbaa !5
  br label %584

584:                                              ; preds = %583, %582
  br label %585

585:                                              ; preds = %650, %584
  %586 = load ptr, ptr %19, align 8, !tbaa !5
  %587 = icmp ne ptr %586, null
  br i1 %587, label %588, label %651

588:                                              ; preds = %585
  %589 = load ptr, ptr %19, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.lookup_hash, ptr %589, i32 0, i32 2
  %591 = getelementptr inbounds %struct.UT_hash_handle, ptr %590, i32 0, i32 7
  %592 = load i32, ptr %591, align 4, !tbaa !38
  %593 = load i32, ptr %20, align 4, !tbaa !25
  %594 = icmp eq i32 %592, %593
  br i1 %594, label %595, label %627

595:                                              ; preds = %588
  %596 = load ptr, ptr %19, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.lookup_hash, ptr %596, i32 0, i32 2
  %598 = getelementptr inbounds %struct.UT_hash_handle, ptr %597, i32 0, i32 6
  %599 = load i32, ptr %598, align 8, !tbaa !39
  %600 = load ptr, ptr %18, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct._json_value, ptr %600, i32 0, i32 2
  %602 = getelementptr inbounds %struct.anon, ptr %601, i32 0, i32 1
  %603 = load ptr, ptr %602, align 8, !tbaa !21
  %604 = call i64 @strlen(ptr noundef %603) #7
  %605 = trunc i64 %604 to i32
  %606 = icmp eq i32 %599, %605
  br i1 %606, label %607, label %627

607:                                              ; preds = %595
  %608 = load ptr, ptr %19, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.lookup_hash, ptr %608, i32 0, i32 2
  %610 = getelementptr inbounds %struct.UT_hash_handle, ptr %609, i32 0, i32 5
  %611 = load ptr, ptr %610, align 8, !tbaa !40
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct._json_value, ptr %612, i32 0, i32 2
  %614 = getelementptr inbounds %struct.anon, ptr %613, i32 0, i32 1
  %615 = load ptr, ptr %614, align 8, !tbaa !21
  %616 = load ptr, ptr %18, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct._json_value, ptr %616, i32 0, i32 2
  %618 = getelementptr inbounds %struct.anon, ptr %617, i32 0, i32 1
  %619 = load ptr, ptr %618, align 8, !tbaa !21
  %620 = call i64 @strlen(ptr noundef %619) #7
  %621 = trunc i64 %620 to i32
  %622 = zext i32 %621 to i64
  %623 = call i32 @memcmp(ptr noundef %611, ptr noundef %615, i64 noundef %622) #7
  %624 = icmp eq i32 %623, 0
  br i1 %624, label %625, label %626

625:                                              ; preds = %607
  br label %651

626:                                              ; preds = %607
  br label %627

627:                                              ; preds = %626, %595, %588
  %628 = load ptr, ptr %19, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.lookup_hash, ptr %628, i32 0, i32 2
  %630 = getelementptr inbounds %struct.UT_hash_handle, ptr %629, i32 0, i32 4
  %631 = load ptr, ptr %630, align 8, !tbaa !41
  %632 = icmp ne ptr %631, null
  br i1 %632, label %633, label %649

633:                                              ; preds = %627
  br label %634

634:                                              ; preds = %633
  %635 = load ptr, ptr %19, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.lookup_hash, ptr %635, i32 0, i32 2
  %637 = getelementptr inbounds %struct.UT_hash_handle, ptr %636, i32 0, i32 4
  %638 = load ptr, ptr %637, align 8, !tbaa !41
  %639 = load ptr, ptr %15, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.lookup_hash, ptr %639, i32 0, i32 2
  %641 = getelementptr inbounds %struct.UT_hash_handle, ptr %640, i32 0, i32 0
  %642 = load ptr, ptr %641, align 8, !tbaa !28
  %643 = getelementptr inbounds %struct.UT_hash_table, ptr %642, i32 0, i32 5
  %644 = load i64, ptr %643, align 8, !tbaa !37
  %645 = sub i64 0, %644
  %646 = getelementptr inbounds i8, ptr %638, i64 %645
  store ptr %646, ptr %19, align 8, !tbaa !5
  br label %647

647:                                              ; preds = %634
  br label %648

648:                                              ; preds = %647
  br label %650

649:                                              ; preds = %627
  store ptr null, ptr %19, align 8, !tbaa !5
  br label %650

650:                                              ; preds = %649, %648
  br label %585, !llvm.loop !42

651:                                              ; preds = %625, %585
  br label %652

652:                                              ; preds = %651
  br label %653

653:                                              ; preds = %652
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %654

654:                                              ; preds = %653, %531
  br label %655

655:                                              ; preds = %654
  br label %656

656:                                              ; preds = %655
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657
  %659 = load ptr, ptr %19, align 8, !tbaa !5
  %660 = icmp ne ptr %659, null
  br i1 %660, label %661, label %667

661:                                              ; preds = %658
  %662 = load ptr, ptr %19, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.lookup_hash, ptr %662, i32 0, i32 3
  store i32 0, ptr %663, align 8, !tbaa !43
  %664 = load i16, ptr %17, align 2, !tbaa !19
  %665 = load ptr, ptr %19, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.lookup_hash, ptr %665, i32 0, i32 4
  store i16 %664, ptr %666, align 4, !tbaa !44
  br label %667

667:                                              ; preds = %661, %658
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %668

668:                                              ; preds = %667, %145, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  br label %669

669:                                              ; preds = %668
  %670 = load i16, ptr %17, align 2, !tbaa !19
  %671 = add i16 %670, 1
  store i16 %671, ptr %17, align 2, !tbaa !19
  br label %125, !llvm.loop !45

672:                                              ; preds = %133
  br label %673

673:                                              ; preds = %672, %116
  br label %674

674:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %675 = load ptr, ptr %15, align 8, !tbaa !5
  %676 = icmp ne ptr %675, null
  br i1 %676, label %677, label %947

677:                                              ; preds = %674
  store i32 1, ptr %29, align 4, !tbaa !25
  store i32 1, ptr %27, align 4, !tbaa !25
  %678 = load ptr, ptr %15, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.lookup_hash, ptr %678, i32 0, i32 2
  store ptr %679, ptr %35, align 8, !tbaa !5
  br label %680

680:                                              ; preds = %943, %677
  %681 = load i32, ptr %27, align 4, !tbaa !25
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %683, label %946

683:                                              ; preds = %680
  %684 = load ptr, ptr %35, align 8, !tbaa !5
  store ptr %684, ptr %32, align 8, !tbaa !5
  store ptr null, ptr %35, align 8, !tbaa !5
  store ptr null, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !25
  br label %685

685:                                              ; preds = %913, %683
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  %687 = icmp ne ptr %686, null
  br i1 %687, label %688, label %915

688:                                              ; preds = %685
  %689 = load i32, ptr %28, align 4, !tbaa !25
  %690 = add i32 %689, 1
  store i32 %690, ptr %28, align 4, !tbaa !25
  %691 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %691, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !25
  store i32 0, ptr %26, align 4, !tbaa !25
  br label %692

692:                                              ; preds = %721, %688
  %693 = load i32, ptr %26, align 4, !tbaa !25
  %694 = load i32, ptr %29, align 4, !tbaa !25
  %695 = icmp ult i32 %693, %694
  br i1 %695, label %696, label %724

696:                                              ; preds = %692
  %697 = load i32, ptr %30, align 4, !tbaa !25
  %698 = add i32 %697, 1
  store i32 %698, ptr %30, align 4, !tbaa !25
  %699 = load ptr, ptr %33, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.UT_hash_handle, ptr %699, i32 0, i32 2
  %701 = load ptr, ptr %700, align 8, !tbaa !46
  %702 = icmp ne ptr %701, null
  br i1 %702, label %703, label %714

703:                                              ; preds = %696
  %704 = load ptr, ptr %33, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.UT_hash_handle, ptr %704, i32 0, i32 2
  %706 = load ptr, ptr %705, align 8, !tbaa !46
  %707 = load ptr, ptr %15, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.lookup_hash, ptr %707, i32 0, i32 2
  %709 = getelementptr inbounds %struct.UT_hash_handle, ptr %708, i32 0, i32 0
  %710 = load ptr, ptr %709, align 8, !tbaa !28
  %711 = getelementptr inbounds %struct.UT_hash_table, ptr %710, i32 0, i32 5
  %712 = load i64, ptr %711, align 8, !tbaa !37
  %713 = getelementptr inbounds i8, ptr %706, i64 %712
  br label %715

714:                                              ; preds = %696
  br label %715

715:                                              ; preds = %714, %703
  %716 = phi ptr [ %713, %703 ], [ null, %714 ]
  store ptr %716, ptr %33, align 8, !tbaa !5
  %717 = load ptr, ptr %33, align 8, !tbaa !5
  %718 = icmp eq ptr %717, null
  br i1 %718, label %719, label %720

719:                                              ; preds = %715
  br label %724

720:                                              ; preds = %715
  br label %721

721:                                              ; preds = %720
  %722 = load i32, ptr %26, align 4, !tbaa !25
  %723 = add i32 %722, 1
  store i32 %723, ptr %26, align 4, !tbaa !25
  br label %692, !llvm.loop !47

724:                                              ; preds = %719, %692
  %725 = load i32, ptr %29, align 4, !tbaa !25
  store i32 %725, ptr %31, align 4, !tbaa !25
  br label %726

726:                                              ; preds = %911, %724
  %727 = load i32, ptr %30, align 4, !tbaa !25
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %737, label %729

729:                                              ; preds = %726
  %730 = load i32, ptr %31, align 4, !tbaa !25
  %731 = icmp ne i32 %730, 0
  br i1 %731, label %732, label %735

732:                                              ; preds = %729
  %733 = load ptr, ptr %33, align 8, !tbaa !5
  %734 = icmp ne ptr %733, null
  br label %735

735:                                              ; preds = %732, %729
  %736 = phi i1 [ false, %729 ], [ %734, %732 ]
  br label %737

737:                                              ; preds = %735, %726
  %738 = phi i1 [ true, %726 ], [ %736, %735 ]
  br i1 %738, label %739, label %913

739:                                              ; preds = %737
  %740 = load i32, ptr %30, align 4, !tbaa !25
  %741 = icmp eq i32 %740, 0
  br i1 %741, label %742, label %764

742:                                              ; preds = %739
  %743 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %743, ptr %34, align 8, !tbaa !5
  %744 = load ptr, ptr %33, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.UT_hash_handle, ptr %744, i32 0, i32 2
  %746 = load ptr, ptr %745, align 8, !tbaa !46
  %747 = icmp ne ptr %746, null
  br i1 %747, label %748, label %759

748:                                              ; preds = %742
  %749 = load ptr, ptr %33, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.UT_hash_handle, ptr %749, i32 0, i32 2
  %751 = load ptr, ptr %750, align 8, !tbaa !46
  %752 = load ptr, ptr %15, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.lookup_hash, ptr %752, i32 0, i32 2
  %754 = getelementptr inbounds %struct.UT_hash_handle, ptr %753, i32 0, i32 0
  %755 = load ptr, ptr %754, align 8, !tbaa !28
  %756 = getelementptr inbounds %struct.UT_hash_table, ptr %755, i32 0, i32 5
  %757 = load i64, ptr %756, align 8, !tbaa !37
  %758 = getelementptr inbounds i8, ptr %751, i64 %757
  br label %760

759:                                              ; preds = %742
  br label %760

760:                                              ; preds = %759, %748
  %761 = phi ptr [ %758, %748 ], [ null, %759 ]
  store ptr %761, ptr %33, align 8, !tbaa !5
  %762 = load i32, ptr %31, align 4, !tbaa !25
  %763 = add i32 %762, -1
  store i32 %763, ptr %31, align 4, !tbaa !25
  br label %867

764:                                              ; preds = %739
  %765 = load i32, ptr %31, align 4, !tbaa !25
  %766 = icmp eq i32 %765, 0
  br i1 %766, label %770, label %767

767:                                              ; preds = %764
  %768 = load ptr, ptr %33, align 8, !tbaa !5
  %769 = icmp eq ptr %768, null
  br i1 %769, label %770, label %796

770:                                              ; preds = %767, %764
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %771, ptr %34, align 8, !tbaa !5
  %772 = load ptr, ptr %32, align 8, !tbaa !5
  %773 = icmp ne ptr %772, null
  br i1 %773, label %774, label %793

774:                                              ; preds = %770
  %775 = load ptr, ptr %32, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.UT_hash_handle, ptr %775, i32 0, i32 2
  %777 = load ptr, ptr %776, align 8, !tbaa !46
  %778 = icmp ne ptr %777, null
  br i1 %778, label %779, label %790

779:                                              ; preds = %774
  %780 = load ptr, ptr %32, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.UT_hash_handle, ptr %780, i32 0, i32 2
  %782 = load ptr, ptr %781, align 8, !tbaa !46
  %783 = load ptr, ptr %15, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.lookup_hash, ptr %783, i32 0, i32 2
  %785 = getelementptr inbounds %struct.UT_hash_handle, ptr %784, i32 0, i32 0
  %786 = load ptr, ptr %785, align 8, !tbaa !28
  %787 = getelementptr inbounds %struct.UT_hash_table, ptr %786, i32 0, i32 5
  %788 = load i64, ptr %787, align 8, !tbaa !37
  %789 = getelementptr inbounds i8, ptr %782, i64 %788
  br label %791

790:                                              ; preds = %774
  br label %791

791:                                              ; preds = %790, %779
  %792 = phi ptr [ %789, %779 ], [ null, %790 ]
  store ptr %792, ptr %32, align 8, !tbaa !5
  br label %793

793:                                              ; preds = %791, %770
  %794 = load i32, ptr %30, align 4, !tbaa !25
  %795 = add i32 %794, -1
  store i32 %795, ptr %30, align 4, !tbaa !25
  br label %866

796:                                              ; preds = %767
  %797 = load ptr, ptr %32, align 8, !tbaa !5
  %798 = load ptr, ptr %15, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.lookup_hash, ptr %798, i32 0, i32 2
  %800 = getelementptr inbounds %struct.UT_hash_handle, ptr %799, i32 0, i32 0
  %801 = load ptr, ptr %800, align 8, !tbaa !28
  %802 = getelementptr inbounds %struct.UT_hash_table, ptr %801, i32 0, i32 5
  %803 = load i64, ptr %802, align 8, !tbaa !37
  %804 = sub i64 0, %803
  %805 = getelementptr inbounds i8, ptr %797, i64 %804
  %806 = load ptr, ptr %33, align 8, !tbaa !5
  %807 = load ptr, ptr %15, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.lookup_hash, ptr %807, i32 0, i32 2
  %809 = getelementptr inbounds %struct.UT_hash_handle, ptr %808, i32 0, i32 0
  %810 = load ptr, ptr %809, align 8, !tbaa !28
  %811 = getelementptr inbounds %struct.UT_hash_table, ptr %810, i32 0, i32 5
  %812 = load i64, ptr %811, align 8, !tbaa !37
  %813 = sub i64 0, %812
  %814 = getelementptr inbounds i8, ptr %806, i64 %813
  %815 = call i32 @by_lookup_order(ptr noundef %805, ptr noundef %814)
  %816 = icmp sle i32 %815, 0
  br i1 %816, label %817, label %843

817:                                              ; preds = %796
  %818 = load ptr, ptr %32, align 8, !tbaa !5
  store ptr %818, ptr %34, align 8, !tbaa !5
  %819 = load ptr, ptr %32, align 8, !tbaa !5
  %820 = icmp ne ptr %819, null
  br i1 %820, label %821, label %840

821:                                              ; preds = %817
  %822 = load ptr, ptr %32, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.UT_hash_handle, ptr %822, i32 0, i32 2
  %824 = load ptr, ptr %823, align 8, !tbaa !46
  %825 = icmp ne ptr %824, null
  br i1 %825, label %826, label %837

826:                                              ; preds = %821
  %827 = load ptr, ptr %32, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.UT_hash_handle, ptr %827, i32 0, i32 2
  %829 = load ptr, ptr %828, align 8, !tbaa !46
  %830 = load ptr, ptr %15, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.lookup_hash, ptr %830, i32 0, i32 2
  %832 = getelementptr inbounds %struct.UT_hash_handle, ptr %831, i32 0, i32 0
  %833 = load ptr, ptr %832, align 8, !tbaa !28
  %834 = getelementptr inbounds %struct.UT_hash_table, ptr %833, i32 0, i32 5
  %835 = load i64, ptr %834, align 8, !tbaa !37
  %836 = getelementptr inbounds i8, ptr %829, i64 %835
  br label %838

837:                                              ; preds = %821
  br label %838

838:                                              ; preds = %837, %826
  %839 = phi ptr [ %836, %826 ], [ null, %837 ]
  store ptr %839, ptr %32, align 8, !tbaa !5
  br label %840

840:                                              ; preds = %838, %817
  %841 = load i32, ptr %30, align 4, !tbaa !25
  %842 = add i32 %841, -1
  store i32 %842, ptr %30, align 4, !tbaa !25
  br label %865

843:                                              ; preds = %796
  %844 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %844, ptr %34, align 8, !tbaa !5
  %845 = load ptr, ptr %33, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.UT_hash_handle, ptr %845, i32 0, i32 2
  %847 = load ptr, ptr %846, align 8, !tbaa !46
  %848 = icmp ne ptr %847, null
  br i1 %848, label %849, label %860

849:                                              ; preds = %843
  %850 = load ptr, ptr %33, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.UT_hash_handle, ptr %850, i32 0, i32 2
  %852 = load ptr, ptr %851, align 8, !tbaa !46
  %853 = load ptr, ptr %15, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.lookup_hash, ptr %853, i32 0, i32 2
  %855 = getelementptr inbounds %struct.UT_hash_handle, ptr %854, i32 0, i32 0
  %856 = load ptr, ptr %855, align 8, !tbaa !28
  %857 = getelementptr inbounds %struct.UT_hash_table, ptr %856, i32 0, i32 5
  %858 = load i64, ptr %857, align 8, !tbaa !37
  %859 = getelementptr inbounds i8, ptr %852, i64 %858
  br label %861

860:                                              ; preds = %843
  br label %861

861:                                              ; preds = %860, %849
  %862 = phi ptr [ %859, %849 ], [ null, %860 ]
  store ptr %862, ptr %33, align 8, !tbaa !5
  %863 = load i32, ptr %31, align 4, !tbaa !25
  %864 = add i32 %863, -1
  store i32 %864, ptr %31, align 4, !tbaa !25
  br label %865

865:                                              ; preds = %861, %840
  br label %866

866:                                              ; preds = %865, %793
  br label %867

867:                                              ; preds = %866, %760
  %868 = load ptr, ptr %36, align 8, !tbaa !5
  %869 = icmp ne ptr %868, null
  br i1 %869, label %870, label %888

870:                                              ; preds = %867
  %871 = load ptr, ptr %34, align 8, !tbaa !5
  %872 = icmp ne ptr %871, null
  br i1 %872, label %873, label %883

873:                                              ; preds = %870
  %874 = load ptr, ptr %34, align 8, !tbaa !5
  %875 = load ptr, ptr %15, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.lookup_hash, ptr %875, i32 0, i32 2
  %877 = getelementptr inbounds %struct.UT_hash_handle, ptr %876, i32 0, i32 0
  %878 = load ptr, ptr %877, align 8, !tbaa !28
  %879 = getelementptr inbounds %struct.UT_hash_table, ptr %878, i32 0, i32 5
  %880 = load i64, ptr %879, align 8, !tbaa !37
  %881 = sub i64 0, %880
  %882 = getelementptr inbounds i8, ptr %874, i64 %881
  br label %884

883:                                              ; preds = %870
  br label %884

884:                                              ; preds = %883, %873
  %885 = phi ptr [ %882, %873 ], [ null, %883 ]
  %886 = load ptr, ptr %36, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.UT_hash_handle, ptr %886, i32 0, i32 2
  store ptr %885, ptr %887, align 8, !tbaa !46
  br label %890

888:                                              ; preds = %867
  %889 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %889, ptr %35, align 8, !tbaa !5
  br label %890

890:                                              ; preds = %888, %884
  %891 = load ptr, ptr %34, align 8, !tbaa !5
  %892 = icmp ne ptr %891, null
  br i1 %892, label %893, label %911

893:                                              ; preds = %890
  %894 = load ptr, ptr %36, align 8, !tbaa !5
  %895 = icmp ne ptr %894, null
  br i1 %895, label %896, label %906

896:                                              ; preds = %893
  %897 = load ptr, ptr %36, align 8, !tbaa !5
  %898 = load ptr, ptr %15, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.lookup_hash, ptr %898, i32 0, i32 2
  %900 = getelementptr inbounds %struct.UT_hash_handle, ptr %899, i32 0, i32 0
  %901 = load ptr, ptr %900, align 8, !tbaa !28
  %902 = getelementptr inbounds %struct.UT_hash_table, ptr %901, i32 0, i32 5
  %903 = load i64, ptr %902, align 8, !tbaa !37
  %904 = sub i64 0, %903
  %905 = getelementptr inbounds i8, ptr %897, i64 %904
  br label %907

906:                                              ; preds = %893
  br label %907

907:                                              ; preds = %906, %896
  %908 = phi ptr [ %905, %896 ], [ null, %906 ]
  %909 = load ptr, ptr %34, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.UT_hash_handle, ptr %909, i32 0, i32 1
  store ptr %908, ptr %910, align 8, !tbaa !48
  br label %911

911:                                              ; preds = %907, %890
  %912 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %912, ptr %36, align 8, !tbaa !5
  br label %726, !llvm.loop !49

913:                                              ; preds = %737
  %914 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %914, ptr %32, align 8, !tbaa !5
  br label %685, !llvm.loop !50

915:                                              ; preds = %685
  %916 = load ptr, ptr %36, align 8, !tbaa !5
  %917 = icmp ne ptr %916, null
  br i1 %917, label %918, label %921

918:                                              ; preds = %915
  %919 = load ptr, ptr %36, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.UT_hash_handle, ptr %919, i32 0, i32 2
  store ptr null, ptr %920, align 8, !tbaa !46
  br label %921

921:                                              ; preds = %918, %915
  %922 = load i32, ptr %28, align 4, !tbaa !25
  %923 = icmp ule i32 %922, 1
  br i1 %923, label %924, label %943

924:                                              ; preds = %921
  store i32 0, ptr %27, align 4, !tbaa !25
  %925 = load ptr, ptr %36, align 8, !tbaa !5
  %926 = load ptr, ptr %15, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.lookup_hash, ptr %926, i32 0, i32 2
  %928 = getelementptr inbounds %struct.UT_hash_handle, ptr %927, i32 0, i32 0
  %929 = load ptr, ptr %928, align 8, !tbaa !28
  %930 = getelementptr inbounds %struct.UT_hash_table, ptr %929, i32 0, i32 4
  store ptr %925, ptr %930, align 8, !tbaa !51
  br label %931

931:                                              ; preds = %924
  %932 = load ptr, ptr %35, align 8, !tbaa !5
  %933 = load ptr, ptr %15, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.lookup_hash, ptr %933, i32 0, i32 2
  %935 = getelementptr inbounds %struct.UT_hash_handle, ptr %934, i32 0, i32 0
  %936 = load ptr, ptr %935, align 8, !tbaa !28
  %937 = getelementptr inbounds %struct.UT_hash_table, ptr %936, i32 0, i32 5
  %938 = load i64, ptr %937, align 8, !tbaa !37
  %939 = sub i64 0, %938
  %940 = getelementptr inbounds i8, ptr %932, i64 %939
  store ptr %940, ptr %15, align 8, !tbaa !5
  br label %941

941:                                              ; preds = %931
  br label %942

942:                                              ; preds = %941
  br label %943

943:                                              ; preds = %942, %921
  %944 = load i32, ptr %29, align 4, !tbaa !25
  %945 = mul i32 %944, 2
  store i32 %945, ptr %29, align 4, !tbaa !25
  br label %680, !llvm.loop !52

946:                                              ; preds = %680
  br label %947

947:                                              ; preds = %946, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %948

948:                                              ; preds = %947
  br label %949

949:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %950 = load ptr, ptr %11, align 8, !tbaa !5
  %951 = load ptr, ptr %15, align 8, !tbaa !5
  %952 = load ptr, ptr %7, align 8, !tbaa !5
  %953 = load ptr, ptr %6, align 8, !tbaa !5
  %954 = call ptr @figureOutFeaturesFromJSON(ptr noundef %950, ptr noundef %951, ptr noundef %952, ptr noundef %953)
  store ptr %954, ptr %37, align 8, !tbaa !5
  br label %955

955:                                              ; preds = %949
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  %956 = load ptr, ptr %37, align 8, !tbaa !5
  %957 = icmp ne ptr %956, null
  br i1 %957, label %958, label %1228

958:                                              ; preds = %955
  store i32 1, ptr %41, align 4, !tbaa !25
  store i32 1, ptr %39, align 4, !tbaa !25
  %959 = load ptr, ptr %37, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.feature_hash, ptr %959, i32 0, i32 3
  store ptr %960, ptr %47, align 8, !tbaa !5
  br label %961

961:                                              ; preds = %1224, %958
  %962 = load i32, ptr %39, align 4, !tbaa !25
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %964, label %1227

964:                                              ; preds = %961
  %965 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %965, ptr %44, align 8, !tbaa !5
  store ptr null, ptr %47, align 8, !tbaa !5
  store ptr null, ptr %48, align 8, !tbaa !5
  store i32 0, ptr %40, align 4, !tbaa !25
  br label %966

966:                                              ; preds = %1194, %964
  %967 = load ptr, ptr %44, align 8, !tbaa !5
  %968 = icmp ne ptr %967, null
  br i1 %968, label %969, label %1196

969:                                              ; preds = %966
  %970 = load i32, ptr %40, align 4, !tbaa !25
  %971 = add i32 %970, 1
  store i32 %971, ptr %40, align 4, !tbaa !25
  %972 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %972, ptr %45, align 8, !tbaa !5
  store i32 0, ptr %42, align 4, !tbaa !25
  store i32 0, ptr %38, align 4, !tbaa !25
  br label %973

973:                                              ; preds = %1002, %969
  %974 = load i32, ptr %38, align 4, !tbaa !25
  %975 = load i32, ptr %41, align 4, !tbaa !25
  %976 = icmp ult i32 %974, %975
  br i1 %976, label %977, label %1005

977:                                              ; preds = %973
  %978 = load i32, ptr %42, align 4, !tbaa !25
  %979 = add i32 %978, 1
  store i32 %979, ptr %42, align 4, !tbaa !25
  %980 = load ptr, ptr %45, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.UT_hash_handle, ptr %980, i32 0, i32 2
  %982 = load ptr, ptr %981, align 8, !tbaa !46
  %983 = icmp ne ptr %982, null
  br i1 %983, label %984, label %995

984:                                              ; preds = %977
  %985 = load ptr, ptr %45, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.UT_hash_handle, ptr %985, i32 0, i32 2
  %987 = load ptr, ptr %986, align 8, !tbaa !46
  %988 = load ptr, ptr %37, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.feature_hash, ptr %988, i32 0, i32 3
  %990 = getelementptr inbounds %struct.UT_hash_handle, ptr %989, i32 0, i32 0
  %991 = load ptr, ptr %990, align 8, !tbaa !53
  %992 = getelementptr inbounds %struct.UT_hash_table, ptr %991, i32 0, i32 5
  %993 = load i64, ptr %992, align 8, !tbaa !37
  %994 = getelementptr inbounds i8, ptr %987, i64 %993
  br label %996

995:                                              ; preds = %977
  br label %996

996:                                              ; preds = %995, %984
  %997 = phi ptr [ %994, %984 ], [ null, %995 ]
  store ptr %997, ptr %45, align 8, !tbaa !5
  %998 = load ptr, ptr %45, align 8, !tbaa !5
  %999 = icmp eq ptr %998, null
  br i1 %999, label %1000, label %1001

1000:                                             ; preds = %996
  br label %1005

1001:                                             ; preds = %996
  br label %1002

1002:                                             ; preds = %1001
  %1003 = load i32, ptr %38, align 4, !tbaa !25
  %1004 = add i32 %1003, 1
  store i32 %1004, ptr %38, align 4, !tbaa !25
  br label %973, !llvm.loop !55

1005:                                             ; preds = %1000, %973
  %1006 = load i32, ptr %41, align 4, !tbaa !25
  store i32 %1006, ptr %43, align 4, !tbaa !25
  br label %1007

1007:                                             ; preds = %1192, %1005
  %1008 = load i32, ptr %42, align 4, !tbaa !25
  %1009 = icmp ne i32 %1008, 0
  br i1 %1009, label %1018, label %1010

1010:                                             ; preds = %1007
  %1011 = load i32, ptr %43, align 4, !tbaa !25
  %1012 = icmp ne i32 %1011, 0
  br i1 %1012, label %1013, label %1016

1013:                                             ; preds = %1010
  %1014 = load ptr, ptr %45, align 8, !tbaa !5
  %1015 = icmp ne ptr %1014, null
  br label %1016

1016:                                             ; preds = %1013, %1010
  %1017 = phi i1 [ false, %1010 ], [ %1015, %1013 ]
  br label %1018

1018:                                             ; preds = %1016, %1007
  %1019 = phi i1 [ true, %1007 ], [ %1017, %1016 ]
  br i1 %1019, label %1020, label %1194

1020:                                             ; preds = %1018
  %1021 = load i32, ptr %42, align 4, !tbaa !25
  %1022 = icmp eq i32 %1021, 0
  br i1 %1022, label %1023, label %1045

1023:                                             ; preds = %1020
  %1024 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1024, ptr %46, align 8, !tbaa !5
  %1025 = load ptr, ptr %45, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.UT_hash_handle, ptr %1025, i32 0, i32 2
  %1027 = load ptr, ptr %1026, align 8, !tbaa !46
  %1028 = icmp ne ptr %1027, null
  br i1 %1028, label %1029, label %1040

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr %45, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.UT_hash_handle, ptr %1030, i32 0, i32 2
  %1032 = load ptr, ptr %1031, align 8, !tbaa !46
  %1033 = load ptr, ptr %37, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.feature_hash, ptr %1033, i32 0, i32 3
  %1035 = getelementptr inbounds %struct.UT_hash_handle, ptr %1034, i32 0, i32 0
  %1036 = load ptr, ptr %1035, align 8, !tbaa !53
  %1037 = getelementptr inbounds %struct.UT_hash_table, ptr %1036, i32 0, i32 5
  %1038 = load i64, ptr %1037, align 8, !tbaa !37
  %1039 = getelementptr inbounds i8, ptr %1032, i64 %1038
  br label %1041

1040:                                             ; preds = %1023
  br label %1041

1041:                                             ; preds = %1040, %1029
  %1042 = phi ptr [ %1039, %1029 ], [ null, %1040 ]
  store ptr %1042, ptr %45, align 8, !tbaa !5
  %1043 = load i32, ptr %43, align 4, !tbaa !25
  %1044 = add i32 %1043, -1
  store i32 %1044, ptr %43, align 4, !tbaa !25
  br label %1148

1045:                                             ; preds = %1020
  %1046 = load i32, ptr %43, align 4, !tbaa !25
  %1047 = icmp eq i32 %1046, 0
  br i1 %1047, label %1051, label %1048

1048:                                             ; preds = %1045
  %1049 = load ptr, ptr %45, align 8, !tbaa !5
  %1050 = icmp eq ptr %1049, null
  br i1 %1050, label %1051, label %1077

1051:                                             ; preds = %1048, %1045
  %1052 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %1052, ptr %46, align 8, !tbaa !5
  %1053 = load ptr, ptr %44, align 8, !tbaa !5
  %1054 = icmp ne ptr %1053, null
  br i1 %1054, label %1055, label %1074

1055:                                             ; preds = %1051
  %1056 = load ptr, ptr %44, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.UT_hash_handle, ptr %1056, i32 0, i32 2
  %1058 = load ptr, ptr %1057, align 8, !tbaa !46
  %1059 = icmp ne ptr %1058, null
  br i1 %1059, label %1060, label %1071

1060:                                             ; preds = %1055
  %1061 = load ptr, ptr %44, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.UT_hash_handle, ptr %1061, i32 0, i32 2
  %1063 = load ptr, ptr %1062, align 8, !tbaa !46
  %1064 = load ptr, ptr %37, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.feature_hash, ptr %1064, i32 0, i32 3
  %1066 = getelementptr inbounds %struct.UT_hash_handle, ptr %1065, i32 0, i32 0
  %1067 = load ptr, ptr %1066, align 8, !tbaa !53
  %1068 = getelementptr inbounds %struct.UT_hash_table, ptr %1067, i32 0, i32 5
  %1069 = load i64, ptr %1068, align 8, !tbaa !37
  %1070 = getelementptr inbounds i8, ptr %1063, i64 %1069
  br label %1072

1071:                                             ; preds = %1055
  br label %1072

1072:                                             ; preds = %1071, %1060
  %1073 = phi ptr [ %1070, %1060 ], [ null, %1071 ]
  store ptr %1073, ptr %44, align 8, !tbaa !5
  br label %1074

1074:                                             ; preds = %1072, %1051
  %1075 = load i32, ptr %42, align 4, !tbaa !25
  %1076 = add i32 %1075, -1
  store i32 %1076, ptr %42, align 4, !tbaa !25
  br label %1147

1077:                                             ; preds = %1048
  %1078 = load ptr, ptr %44, align 8, !tbaa !5
  %1079 = load ptr, ptr %37, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.feature_hash, ptr %1079, i32 0, i32 3
  %1081 = getelementptr inbounds %struct.UT_hash_handle, ptr %1080, i32 0, i32 0
  %1082 = load ptr, ptr %1081, align 8, !tbaa !53
  %1083 = getelementptr inbounds %struct.UT_hash_table, ptr %1082, i32 0, i32 5
  %1084 = load i64, ptr %1083, align 8, !tbaa !37
  %1085 = sub i64 0, %1084
  %1086 = getelementptr inbounds i8, ptr %1078, i64 %1085
  %1087 = load ptr, ptr %45, align 8, !tbaa !5
  %1088 = load ptr, ptr %37, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.feature_hash, ptr %1088, i32 0, i32 3
  %1090 = getelementptr inbounds %struct.UT_hash_handle, ptr %1089, i32 0, i32 0
  %1091 = load ptr, ptr %1090, align 8, !tbaa !53
  %1092 = getelementptr inbounds %struct.UT_hash_table, ptr %1091, i32 0, i32 5
  %1093 = load i64, ptr %1092, align 8, !tbaa !37
  %1094 = sub i64 0, %1093
  %1095 = getelementptr inbounds i8, ptr %1087, i64 %1094
  %1096 = call i32 @by_feature_name(ptr noundef %1086, ptr noundef %1095)
  %1097 = icmp sle i32 %1096, 0
  br i1 %1097, label %1098, label %1124

1098:                                             ; preds = %1077
  %1099 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %1099, ptr %46, align 8, !tbaa !5
  %1100 = load ptr, ptr %44, align 8, !tbaa !5
  %1101 = icmp ne ptr %1100, null
  br i1 %1101, label %1102, label %1121

1102:                                             ; preds = %1098
  %1103 = load ptr, ptr %44, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.UT_hash_handle, ptr %1103, i32 0, i32 2
  %1105 = load ptr, ptr %1104, align 8, !tbaa !46
  %1106 = icmp ne ptr %1105, null
  br i1 %1106, label %1107, label %1118

1107:                                             ; preds = %1102
  %1108 = load ptr, ptr %44, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.UT_hash_handle, ptr %1108, i32 0, i32 2
  %1110 = load ptr, ptr %1109, align 8, !tbaa !46
  %1111 = load ptr, ptr %37, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.feature_hash, ptr %1111, i32 0, i32 3
  %1113 = getelementptr inbounds %struct.UT_hash_handle, ptr %1112, i32 0, i32 0
  %1114 = load ptr, ptr %1113, align 8, !tbaa !53
  %1115 = getelementptr inbounds %struct.UT_hash_table, ptr %1114, i32 0, i32 5
  %1116 = load i64, ptr %1115, align 8, !tbaa !37
  %1117 = getelementptr inbounds i8, ptr %1110, i64 %1116
  br label %1119

1118:                                             ; preds = %1102
  br label %1119

1119:                                             ; preds = %1118, %1107
  %1120 = phi ptr [ %1117, %1107 ], [ null, %1118 ]
  store ptr %1120, ptr %44, align 8, !tbaa !5
  br label %1121

1121:                                             ; preds = %1119, %1098
  %1122 = load i32, ptr %42, align 4, !tbaa !25
  %1123 = add i32 %1122, -1
  store i32 %1123, ptr %42, align 4, !tbaa !25
  br label %1146

1124:                                             ; preds = %1077
  %1125 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1125, ptr %46, align 8, !tbaa !5
  %1126 = load ptr, ptr %45, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.UT_hash_handle, ptr %1126, i32 0, i32 2
  %1128 = load ptr, ptr %1127, align 8, !tbaa !46
  %1129 = icmp ne ptr %1128, null
  br i1 %1129, label %1130, label %1141

1130:                                             ; preds = %1124
  %1131 = load ptr, ptr %45, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.UT_hash_handle, ptr %1131, i32 0, i32 2
  %1133 = load ptr, ptr %1132, align 8, !tbaa !46
  %1134 = load ptr, ptr %37, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.feature_hash, ptr %1134, i32 0, i32 3
  %1136 = getelementptr inbounds %struct.UT_hash_handle, ptr %1135, i32 0, i32 0
  %1137 = load ptr, ptr %1136, align 8, !tbaa !53
  %1138 = getelementptr inbounds %struct.UT_hash_table, ptr %1137, i32 0, i32 5
  %1139 = load i64, ptr %1138, align 8, !tbaa !37
  %1140 = getelementptr inbounds i8, ptr %1133, i64 %1139
  br label %1142

1141:                                             ; preds = %1124
  br label %1142

1142:                                             ; preds = %1141, %1130
  %1143 = phi ptr [ %1140, %1130 ], [ null, %1141 ]
  store ptr %1143, ptr %45, align 8, !tbaa !5
  %1144 = load i32, ptr %43, align 4, !tbaa !25
  %1145 = add i32 %1144, -1
  store i32 %1145, ptr %43, align 4, !tbaa !25
  br label %1146

1146:                                             ; preds = %1142, %1121
  br label %1147

1147:                                             ; preds = %1146, %1074
  br label %1148

1148:                                             ; preds = %1147, %1041
  %1149 = load ptr, ptr %48, align 8, !tbaa !5
  %1150 = icmp ne ptr %1149, null
  br i1 %1150, label %1151, label %1169

1151:                                             ; preds = %1148
  %1152 = load ptr, ptr %46, align 8, !tbaa !5
  %1153 = icmp ne ptr %1152, null
  br i1 %1153, label %1154, label %1164

1154:                                             ; preds = %1151
  %1155 = load ptr, ptr %46, align 8, !tbaa !5
  %1156 = load ptr, ptr %37, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.feature_hash, ptr %1156, i32 0, i32 3
  %1158 = getelementptr inbounds %struct.UT_hash_handle, ptr %1157, i32 0, i32 0
  %1159 = load ptr, ptr %1158, align 8, !tbaa !53
  %1160 = getelementptr inbounds %struct.UT_hash_table, ptr %1159, i32 0, i32 5
  %1161 = load i64, ptr %1160, align 8, !tbaa !37
  %1162 = sub i64 0, %1161
  %1163 = getelementptr inbounds i8, ptr %1155, i64 %1162
  br label %1165

1164:                                             ; preds = %1151
  br label %1165

1165:                                             ; preds = %1164, %1154
  %1166 = phi ptr [ %1163, %1154 ], [ null, %1164 ]
  %1167 = load ptr, ptr %48, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.UT_hash_handle, ptr %1167, i32 0, i32 2
  store ptr %1166, ptr %1168, align 8, !tbaa !46
  br label %1171

1169:                                             ; preds = %1148
  %1170 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %1170, ptr %47, align 8, !tbaa !5
  br label %1171

1171:                                             ; preds = %1169, %1165
  %1172 = load ptr, ptr %46, align 8, !tbaa !5
  %1173 = icmp ne ptr %1172, null
  br i1 %1173, label %1174, label %1192

1174:                                             ; preds = %1171
  %1175 = load ptr, ptr %48, align 8, !tbaa !5
  %1176 = icmp ne ptr %1175, null
  br i1 %1176, label %1177, label %1187

1177:                                             ; preds = %1174
  %1178 = load ptr, ptr %48, align 8, !tbaa !5
  %1179 = load ptr, ptr %37, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.feature_hash, ptr %1179, i32 0, i32 3
  %1181 = getelementptr inbounds %struct.UT_hash_handle, ptr %1180, i32 0, i32 0
  %1182 = load ptr, ptr %1181, align 8, !tbaa !53
  %1183 = getelementptr inbounds %struct.UT_hash_table, ptr %1182, i32 0, i32 5
  %1184 = load i64, ptr %1183, align 8, !tbaa !37
  %1185 = sub i64 0, %1184
  %1186 = getelementptr inbounds i8, ptr %1178, i64 %1185
  br label %1188

1187:                                             ; preds = %1174
  br label %1188

1188:                                             ; preds = %1187, %1177
  %1189 = phi ptr [ %1186, %1177 ], [ null, %1187 ]
  %1190 = load ptr, ptr %46, align 8, !tbaa !5
  %1191 = getelementptr inbounds %struct.UT_hash_handle, ptr %1190, i32 0, i32 1
  store ptr %1189, ptr %1191, align 8, !tbaa !48
  br label %1192

1192:                                             ; preds = %1188, %1171
  %1193 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %1193, ptr %48, align 8, !tbaa !5
  br label %1007, !llvm.loop !56

1194:                                             ; preds = %1018
  %1195 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1195, ptr %44, align 8, !tbaa !5
  br label %966, !llvm.loop !57

1196:                                             ; preds = %966
  %1197 = load ptr, ptr %48, align 8, !tbaa !5
  %1198 = icmp ne ptr %1197, null
  br i1 %1198, label %1199, label %1202

1199:                                             ; preds = %1196
  %1200 = load ptr, ptr %48, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.UT_hash_handle, ptr %1200, i32 0, i32 2
  store ptr null, ptr %1201, align 8, !tbaa !46
  br label %1202

1202:                                             ; preds = %1199, %1196
  %1203 = load i32, ptr %40, align 4, !tbaa !25
  %1204 = icmp ule i32 %1203, 1
  br i1 %1204, label %1205, label %1224

1205:                                             ; preds = %1202
  store i32 0, ptr %39, align 4, !tbaa !25
  %1206 = load ptr, ptr %48, align 8, !tbaa !5
  %1207 = load ptr, ptr %37, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.feature_hash, ptr %1207, i32 0, i32 3
  %1209 = getelementptr inbounds %struct.UT_hash_handle, ptr %1208, i32 0, i32 0
  %1210 = load ptr, ptr %1209, align 8, !tbaa !53
  %1211 = getelementptr inbounds %struct.UT_hash_table, ptr %1210, i32 0, i32 4
  store ptr %1206, ptr %1211, align 8, !tbaa !51
  br label %1212

1212:                                             ; preds = %1205
  %1213 = load ptr, ptr %47, align 8, !tbaa !5
  %1214 = load ptr, ptr %37, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.feature_hash, ptr %1214, i32 0, i32 3
  %1216 = getelementptr inbounds %struct.UT_hash_handle, ptr %1215, i32 0, i32 0
  %1217 = load ptr, ptr %1216, align 8, !tbaa !53
  %1218 = getelementptr inbounds %struct.UT_hash_table, ptr %1217, i32 0, i32 5
  %1219 = load i64, ptr %1218, align 8, !tbaa !37
  %1220 = sub i64 0, %1219
  %1221 = getelementptr inbounds i8, ptr %1213, i64 %1220
  store ptr %1221, ptr %37, align 8, !tbaa !5
  br label %1222

1222:                                             ; preds = %1212
  br label %1223

1223:                                             ; preds = %1222
  br label %1224

1224:                                             ; preds = %1223, %1202
  %1225 = load i32, ptr %41, align 4, !tbaa !25
  %1226 = mul i32 %1225, 2
  store i32 %1226, ptr %41, align 4, !tbaa !25
  br label %961, !llvm.loop !58

1227:                                             ; preds = %961
  br label %1228

1228:                                             ; preds = %1227, %955
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %1229

1229:                                             ; preds = %1228
  br label %1230

1230:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %1231 = load ptr, ptr %10, align 8, !tbaa !5
  %1232 = load ptr, ptr %37, align 8, !tbaa !5
  %1233 = load ptr, ptr %7, align 8, !tbaa !5
  %1234 = load ptr, ptr %6, align 8, !tbaa !5
  %1235 = call ptr @figureOutLanguagesFromJson(ptr noundef %1231, ptr noundef %1232, ptr noundef %1233, ptr noundef %1234)
  store ptr %1235, ptr %49, align 8, !tbaa !5
  br label %1236

1236:                                             ; preds = %1230
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %1237 = load ptr, ptr %49, align 8, !tbaa !5
  %1238 = icmp ne ptr %1237, null
  br i1 %1238, label %1239, label %1509

1239:                                             ; preds = %1236
  store i32 1, ptr %53, align 4, !tbaa !25
  store i32 1, ptr %51, align 4, !tbaa !25
  %1240 = load ptr, ptr %49, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.language_hash, ptr %1240, i32 0, i32 2
  store ptr %1241, ptr %59, align 8, !tbaa !5
  br label %1242

1242:                                             ; preds = %1505, %1239
  %1243 = load i32, ptr %51, align 4, !tbaa !25
  %1244 = icmp ne i32 %1243, 0
  br i1 %1244, label %1245, label %1508

1245:                                             ; preds = %1242
  %1246 = load ptr, ptr %59, align 8, !tbaa !5
  store ptr %1246, ptr %56, align 8, !tbaa !5
  store ptr null, ptr %59, align 8, !tbaa !5
  store ptr null, ptr %60, align 8, !tbaa !5
  store i32 0, ptr %52, align 4, !tbaa !25
  br label %1247

1247:                                             ; preds = %1475, %1245
  %1248 = load ptr, ptr %56, align 8, !tbaa !5
  %1249 = icmp ne ptr %1248, null
  br i1 %1249, label %1250, label %1477

1250:                                             ; preds = %1247
  %1251 = load i32, ptr %52, align 4, !tbaa !25
  %1252 = add i32 %1251, 1
  store i32 %1252, ptr %52, align 4, !tbaa !25
  %1253 = load ptr, ptr %56, align 8, !tbaa !5
  store ptr %1253, ptr %57, align 8, !tbaa !5
  store i32 0, ptr %54, align 4, !tbaa !25
  store i32 0, ptr %50, align 4, !tbaa !25
  br label %1254

1254:                                             ; preds = %1283, %1250
  %1255 = load i32, ptr %50, align 4, !tbaa !25
  %1256 = load i32, ptr %53, align 4, !tbaa !25
  %1257 = icmp ult i32 %1255, %1256
  br i1 %1257, label %1258, label %1286

1258:                                             ; preds = %1254
  %1259 = load i32, ptr %54, align 4, !tbaa !25
  %1260 = add i32 %1259, 1
  store i32 %1260, ptr %54, align 4, !tbaa !25
  %1261 = load ptr, ptr %57, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.UT_hash_handle, ptr %1261, i32 0, i32 2
  %1263 = load ptr, ptr %1262, align 8, !tbaa !46
  %1264 = icmp ne ptr %1263, null
  br i1 %1264, label %1265, label %1276

1265:                                             ; preds = %1258
  %1266 = load ptr, ptr %57, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.UT_hash_handle, ptr %1266, i32 0, i32 2
  %1268 = load ptr, ptr %1267, align 8, !tbaa !46
  %1269 = load ptr, ptr %49, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.language_hash, ptr %1269, i32 0, i32 2
  %1271 = getelementptr inbounds %struct.UT_hash_handle, ptr %1270, i32 0, i32 0
  %1272 = load ptr, ptr %1271, align 8, !tbaa !59
  %1273 = getelementptr inbounds %struct.UT_hash_table, ptr %1272, i32 0, i32 5
  %1274 = load i64, ptr %1273, align 8, !tbaa !37
  %1275 = getelementptr inbounds i8, ptr %1268, i64 %1274
  br label %1277

1276:                                             ; preds = %1258
  br label %1277

1277:                                             ; preds = %1276, %1265
  %1278 = phi ptr [ %1275, %1265 ], [ null, %1276 ]
  store ptr %1278, ptr %57, align 8, !tbaa !5
  %1279 = load ptr, ptr %57, align 8, !tbaa !5
  %1280 = icmp eq ptr %1279, null
  br i1 %1280, label %1281, label %1282

1281:                                             ; preds = %1277
  br label %1286

1282:                                             ; preds = %1277
  br label %1283

1283:                                             ; preds = %1282
  %1284 = load i32, ptr %50, align 4, !tbaa !25
  %1285 = add i32 %1284, 1
  store i32 %1285, ptr %50, align 4, !tbaa !25
  br label %1254, !llvm.loop !61

1286:                                             ; preds = %1281, %1254
  %1287 = load i32, ptr %53, align 4, !tbaa !25
  store i32 %1287, ptr %55, align 4, !tbaa !25
  br label %1288

1288:                                             ; preds = %1473, %1286
  %1289 = load i32, ptr %54, align 4, !tbaa !25
  %1290 = icmp ne i32 %1289, 0
  br i1 %1290, label %1299, label %1291

1291:                                             ; preds = %1288
  %1292 = load i32, ptr %55, align 4, !tbaa !25
  %1293 = icmp ne i32 %1292, 0
  br i1 %1293, label %1294, label %1297

1294:                                             ; preds = %1291
  %1295 = load ptr, ptr %57, align 8, !tbaa !5
  %1296 = icmp ne ptr %1295, null
  br label %1297

1297:                                             ; preds = %1294, %1291
  %1298 = phi i1 [ false, %1291 ], [ %1296, %1294 ]
  br label %1299

1299:                                             ; preds = %1297, %1288
  %1300 = phi i1 [ true, %1288 ], [ %1298, %1297 ]
  br i1 %1300, label %1301, label %1475

1301:                                             ; preds = %1299
  %1302 = load i32, ptr %54, align 4, !tbaa !25
  %1303 = icmp eq i32 %1302, 0
  br i1 %1303, label %1304, label %1326

1304:                                             ; preds = %1301
  %1305 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %1305, ptr %58, align 8, !tbaa !5
  %1306 = load ptr, ptr %57, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.UT_hash_handle, ptr %1306, i32 0, i32 2
  %1308 = load ptr, ptr %1307, align 8, !tbaa !46
  %1309 = icmp ne ptr %1308, null
  br i1 %1309, label %1310, label %1321

1310:                                             ; preds = %1304
  %1311 = load ptr, ptr %57, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.UT_hash_handle, ptr %1311, i32 0, i32 2
  %1313 = load ptr, ptr %1312, align 8, !tbaa !46
  %1314 = load ptr, ptr %49, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.language_hash, ptr %1314, i32 0, i32 2
  %1316 = getelementptr inbounds %struct.UT_hash_handle, ptr %1315, i32 0, i32 0
  %1317 = load ptr, ptr %1316, align 8, !tbaa !59
  %1318 = getelementptr inbounds %struct.UT_hash_table, ptr %1317, i32 0, i32 5
  %1319 = load i64, ptr %1318, align 8, !tbaa !37
  %1320 = getelementptr inbounds i8, ptr %1313, i64 %1319
  br label %1322

1321:                                             ; preds = %1304
  br label %1322

1322:                                             ; preds = %1321, %1310
  %1323 = phi ptr [ %1320, %1310 ], [ null, %1321 ]
  store ptr %1323, ptr %57, align 8, !tbaa !5
  %1324 = load i32, ptr %55, align 4, !tbaa !25
  %1325 = add i32 %1324, -1
  store i32 %1325, ptr %55, align 4, !tbaa !25
  br label %1429

1326:                                             ; preds = %1301
  %1327 = load i32, ptr %55, align 4, !tbaa !25
  %1328 = icmp eq i32 %1327, 0
  br i1 %1328, label %1332, label %1329

1329:                                             ; preds = %1326
  %1330 = load ptr, ptr %57, align 8, !tbaa !5
  %1331 = icmp eq ptr %1330, null
  br i1 %1331, label %1332, label %1358

1332:                                             ; preds = %1329, %1326
  %1333 = load ptr, ptr %56, align 8, !tbaa !5
  store ptr %1333, ptr %58, align 8, !tbaa !5
  %1334 = load ptr, ptr %56, align 8, !tbaa !5
  %1335 = icmp ne ptr %1334, null
  br i1 %1335, label %1336, label %1355

1336:                                             ; preds = %1332
  %1337 = load ptr, ptr %56, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.UT_hash_handle, ptr %1337, i32 0, i32 2
  %1339 = load ptr, ptr %1338, align 8, !tbaa !46
  %1340 = icmp ne ptr %1339, null
  br i1 %1340, label %1341, label %1352

1341:                                             ; preds = %1336
  %1342 = load ptr, ptr %56, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.UT_hash_handle, ptr %1342, i32 0, i32 2
  %1344 = load ptr, ptr %1343, align 8, !tbaa !46
  %1345 = load ptr, ptr %49, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.language_hash, ptr %1345, i32 0, i32 2
  %1347 = getelementptr inbounds %struct.UT_hash_handle, ptr %1346, i32 0, i32 0
  %1348 = load ptr, ptr %1347, align 8, !tbaa !59
  %1349 = getelementptr inbounds %struct.UT_hash_table, ptr %1348, i32 0, i32 5
  %1350 = load i64, ptr %1349, align 8, !tbaa !37
  %1351 = getelementptr inbounds i8, ptr %1344, i64 %1350
  br label %1353

1352:                                             ; preds = %1336
  br label %1353

1353:                                             ; preds = %1352, %1341
  %1354 = phi ptr [ %1351, %1341 ], [ null, %1352 ]
  store ptr %1354, ptr %56, align 8, !tbaa !5
  br label %1355

1355:                                             ; preds = %1353, %1332
  %1356 = load i32, ptr %54, align 4, !tbaa !25
  %1357 = add i32 %1356, -1
  store i32 %1357, ptr %54, align 4, !tbaa !25
  br label %1428

1358:                                             ; preds = %1329
  %1359 = load ptr, ptr %56, align 8, !tbaa !5
  %1360 = load ptr, ptr %49, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.language_hash, ptr %1360, i32 0, i32 2
  %1362 = getelementptr inbounds %struct.UT_hash_handle, ptr %1361, i32 0, i32 0
  %1363 = load ptr, ptr %1362, align 8, !tbaa !59
  %1364 = getelementptr inbounds %struct.UT_hash_table, ptr %1363, i32 0, i32 5
  %1365 = load i64, ptr %1364, align 8, !tbaa !37
  %1366 = sub i64 0, %1365
  %1367 = getelementptr inbounds i8, ptr %1359, i64 %1366
  %1368 = load ptr, ptr %57, align 8, !tbaa !5
  %1369 = load ptr, ptr %49, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.language_hash, ptr %1369, i32 0, i32 2
  %1371 = getelementptr inbounds %struct.UT_hash_handle, ptr %1370, i32 0, i32 0
  %1372 = load ptr, ptr %1371, align 8, !tbaa !59
  %1373 = getelementptr inbounds %struct.UT_hash_table, ptr %1372, i32 0, i32 5
  %1374 = load i64, ptr %1373, align 8, !tbaa !37
  %1375 = sub i64 0, %1374
  %1376 = getelementptr inbounds i8, ptr %1368, i64 %1375
  %1377 = call i32 @by_language_name(ptr noundef %1367, ptr noundef %1376)
  %1378 = icmp sle i32 %1377, 0
  br i1 %1378, label %1379, label %1405

1379:                                             ; preds = %1358
  %1380 = load ptr, ptr %56, align 8, !tbaa !5
  store ptr %1380, ptr %58, align 8, !tbaa !5
  %1381 = load ptr, ptr %56, align 8, !tbaa !5
  %1382 = icmp ne ptr %1381, null
  br i1 %1382, label %1383, label %1402

1383:                                             ; preds = %1379
  %1384 = load ptr, ptr %56, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.UT_hash_handle, ptr %1384, i32 0, i32 2
  %1386 = load ptr, ptr %1385, align 8, !tbaa !46
  %1387 = icmp ne ptr %1386, null
  br i1 %1387, label %1388, label %1399

1388:                                             ; preds = %1383
  %1389 = load ptr, ptr %56, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.UT_hash_handle, ptr %1389, i32 0, i32 2
  %1391 = load ptr, ptr %1390, align 8, !tbaa !46
  %1392 = load ptr, ptr %49, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.language_hash, ptr %1392, i32 0, i32 2
  %1394 = getelementptr inbounds %struct.UT_hash_handle, ptr %1393, i32 0, i32 0
  %1395 = load ptr, ptr %1394, align 8, !tbaa !59
  %1396 = getelementptr inbounds %struct.UT_hash_table, ptr %1395, i32 0, i32 5
  %1397 = load i64, ptr %1396, align 8, !tbaa !37
  %1398 = getelementptr inbounds i8, ptr %1391, i64 %1397
  br label %1400

1399:                                             ; preds = %1383
  br label %1400

1400:                                             ; preds = %1399, %1388
  %1401 = phi ptr [ %1398, %1388 ], [ null, %1399 ]
  store ptr %1401, ptr %56, align 8, !tbaa !5
  br label %1402

1402:                                             ; preds = %1400, %1379
  %1403 = load i32, ptr %54, align 4, !tbaa !25
  %1404 = add i32 %1403, -1
  store i32 %1404, ptr %54, align 4, !tbaa !25
  br label %1427

1405:                                             ; preds = %1358
  %1406 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %1406, ptr %58, align 8, !tbaa !5
  %1407 = load ptr, ptr %57, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.UT_hash_handle, ptr %1407, i32 0, i32 2
  %1409 = load ptr, ptr %1408, align 8, !tbaa !46
  %1410 = icmp ne ptr %1409, null
  br i1 %1410, label %1411, label %1422

1411:                                             ; preds = %1405
  %1412 = load ptr, ptr %57, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.UT_hash_handle, ptr %1412, i32 0, i32 2
  %1414 = load ptr, ptr %1413, align 8, !tbaa !46
  %1415 = load ptr, ptr %49, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct.language_hash, ptr %1415, i32 0, i32 2
  %1417 = getelementptr inbounds %struct.UT_hash_handle, ptr %1416, i32 0, i32 0
  %1418 = load ptr, ptr %1417, align 8, !tbaa !59
  %1419 = getelementptr inbounds %struct.UT_hash_table, ptr %1418, i32 0, i32 5
  %1420 = load i64, ptr %1419, align 8, !tbaa !37
  %1421 = getelementptr inbounds i8, ptr %1414, i64 %1420
  br label %1423

1422:                                             ; preds = %1405
  br label %1423

1423:                                             ; preds = %1422, %1411
  %1424 = phi ptr [ %1421, %1411 ], [ null, %1422 ]
  store ptr %1424, ptr %57, align 8, !tbaa !5
  %1425 = load i32, ptr %55, align 4, !tbaa !25
  %1426 = add i32 %1425, -1
  store i32 %1426, ptr %55, align 4, !tbaa !25
  br label %1427

1427:                                             ; preds = %1423, %1402
  br label %1428

1428:                                             ; preds = %1427, %1355
  br label %1429

1429:                                             ; preds = %1428, %1322
  %1430 = load ptr, ptr %60, align 8, !tbaa !5
  %1431 = icmp ne ptr %1430, null
  br i1 %1431, label %1432, label %1450

1432:                                             ; preds = %1429
  %1433 = load ptr, ptr %58, align 8, !tbaa !5
  %1434 = icmp ne ptr %1433, null
  br i1 %1434, label %1435, label %1445

1435:                                             ; preds = %1432
  %1436 = load ptr, ptr %58, align 8, !tbaa !5
  %1437 = load ptr, ptr %49, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct.language_hash, ptr %1437, i32 0, i32 2
  %1439 = getelementptr inbounds %struct.UT_hash_handle, ptr %1438, i32 0, i32 0
  %1440 = load ptr, ptr %1439, align 8, !tbaa !59
  %1441 = getelementptr inbounds %struct.UT_hash_table, ptr %1440, i32 0, i32 5
  %1442 = load i64, ptr %1441, align 8, !tbaa !37
  %1443 = sub i64 0, %1442
  %1444 = getelementptr inbounds i8, ptr %1436, i64 %1443
  br label %1446

1445:                                             ; preds = %1432
  br label %1446

1446:                                             ; preds = %1445, %1435
  %1447 = phi ptr [ %1444, %1435 ], [ null, %1445 ]
  %1448 = load ptr, ptr %60, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.UT_hash_handle, ptr %1448, i32 0, i32 2
  store ptr %1447, ptr %1449, align 8, !tbaa !46
  br label %1452

1450:                                             ; preds = %1429
  %1451 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %1451, ptr %59, align 8, !tbaa !5
  br label %1452

1452:                                             ; preds = %1450, %1446
  %1453 = load ptr, ptr %58, align 8, !tbaa !5
  %1454 = icmp ne ptr %1453, null
  br i1 %1454, label %1455, label %1473

1455:                                             ; preds = %1452
  %1456 = load ptr, ptr %60, align 8, !tbaa !5
  %1457 = icmp ne ptr %1456, null
  br i1 %1457, label %1458, label %1468

1458:                                             ; preds = %1455
  %1459 = load ptr, ptr %60, align 8, !tbaa !5
  %1460 = load ptr, ptr %49, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.language_hash, ptr %1460, i32 0, i32 2
  %1462 = getelementptr inbounds %struct.UT_hash_handle, ptr %1461, i32 0, i32 0
  %1463 = load ptr, ptr %1462, align 8, !tbaa !59
  %1464 = getelementptr inbounds %struct.UT_hash_table, ptr %1463, i32 0, i32 5
  %1465 = load i64, ptr %1464, align 8, !tbaa !37
  %1466 = sub i64 0, %1465
  %1467 = getelementptr inbounds i8, ptr %1459, i64 %1466
  br label %1469

1468:                                             ; preds = %1455
  br label %1469

1469:                                             ; preds = %1468, %1458
  %1470 = phi ptr [ %1467, %1458 ], [ null, %1468 ]
  %1471 = load ptr, ptr %58, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.UT_hash_handle, ptr %1471, i32 0, i32 1
  store ptr %1470, ptr %1472, align 8, !tbaa !48
  br label %1473

1473:                                             ; preds = %1469, %1452
  %1474 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %1474, ptr %60, align 8, !tbaa !5
  br label %1288, !llvm.loop !62

1475:                                             ; preds = %1299
  %1476 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %1476, ptr %56, align 8, !tbaa !5
  br label %1247, !llvm.loop !63

1477:                                             ; preds = %1247
  %1478 = load ptr, ptr %60, align 8, !tbaa !5
  %1479 = icmp ne ptr %1478, null
  br i1 %1479, label %1480, label %1483

1480:                                             ; preds = %1477
  %1481 = load ptr, ptr %60, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.UT_hash_handle, ptr %1481, i32 0, i32 2
  store ptr null, ptr %1482, align 8, !tbaa !46
  br label %1483

1483:                                             ; preds = %1480, %1477
  %1484 = load i32, ptr %52, align 4, !tbaa !25
  %1485 = icmp ule i32 %1484, 1
  br i1 %1485, label %1486, label %1505

1486:                                             ; preds = %1483
  store i32 0, ptr %51, align 4, !tbaa !25
  %1487 = load ptr, ptr %60, align 8, !tbaa !5
  %1488 = load ptr, ptr %49, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.language_hash, ptr %1488, i32 0, i32 2
  %1490 = getelementptr inbounds %struct.UT_hash_handle, ptr %1489, i32 0, i32 0
  %1491 = load ptr, ptr %1490, align 8, !tbaa !59
  %1492 = getelementptr inbounds %struct.UT_hash_table, ptr %1491, i32 0, i32 4
  store ptr %1487, ptr %1492, align 8, !tbaa !51
  br label %1493

1493:                                             ; preds = %1486
  %1494 = load ptr, ptr %59, align 8, !tbaa !5
  %1495 = load ptr, ptr %49, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.language_hash, ptr %1495, i32 0, i32 2
  %1497 = getelementptr inbounds %struct.UT_hash_handle, ptr %1496, i32 0, i32 0
  %1498 = load ptr, ptr %1497, align 8, !tbaa !59
  %1499 = getelementptr inbounds %struct.UT_hash_table, ptr %1498, i32 0, i32 5
  %1500 = load i64, ptr %1499, align 8, !tbaa !37
  %1501 = sub i64 0, %1500
  %1502 = getelementptr inbounds i8, ptr %1494, i64 %1501
  store ptr %1502, ptr %49, align 8, !tbaa !5
  br label %1503

1503:                                             ; preds = %1493
  br label %1504

1504:                                             ; preds = %1503
  br label %1505

1505:                                             ; preds = %1504, %1483
  %1506 = load i32, ptr %53, align 4, !tbaa !25
  %1507 = mul i32 %1506, 2
  store i32 %1507, ptr %53, align 4, !tbaa !25
  br label %1242, !llvm.loop !64

1508:                                             ; preds = %1242
  br label %1509

1509:                                             ; preds = %1508, %1236
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  br label %1510

1510:                                             ; preds = %1509
  br label %1511

1511:                                             ; preds = %1510
  %1512 = load ptr, ptr %15, align 8, !tbaa !5
  %1513 = icmp ne ptr %1512, null
  br i1 %1513, label %1514, label %1522

1514:                                             ; preds = %1511
  %1515 = load ptr, ptr %15, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.lookup_hash, ptr %1515, i32 0, i32 2
  %1517 = getelementptr inbounds %struct.UT_hash_handle, ptr %1516, i32 0, i32 0
  %1518 = load ptr, ptr %1517, align 8, !tbaa !28
  %1519 = getelementptr inbounds %struct.UT_hash_table, ptr %1518, i32 0, i32 3
  %1520 = load i32, ptr %1519, align 8, !tbaa !65
  %1521 = icmp ne i32 %1520, 0
  br i1 %1521, label %1523, label %1547

1522:                                             ; preds = %1511
  br i1 false, label %1523, label %1547

1523:                                             ; preds = %1522, %1514
  %1524 = load ptr, ptr %37, align 8, !tbaa !5
  %1525 = icmp ne ptr %1524, null
  br i1 %1525, label %1526, label %1534

1526:                                             ; preds = %1523
  %1527 = load ptr, ptr %37, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.feature_hash, ptr %1527, i32 0, i32 3
  %1529 = getelementptr inbounds %struct.UT_hash_handle, ptr %1528, i32 0, i32 0
  %1530 = load ptr, ptr %1529, align 8, !tbaa !53
  %1531 = getelementptr inbounds %struct.UT_hash_table, ptr %1530, i32 0, i32 3
  %1532 = load i32, ptr %1531, align 8, !tbaa !65
  %1533 = icmp ne i32 %1532, 0
  br i1 %1533, label %1535, label %1547

1534:                                             ; preds = %1523
  br i1 false, label %1535, label %1547

1535:                                             ; preds = %1534, %1526
  %1536 = load ptr, ptr %49, align 8, !tbaa !5
  %1537 = icmp ne ptr %1536, null
  br i1 %1537, label %1538, label %1546

1538:                                             ; preds = %1535
  %1539 = load ptr, ptr %49, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.language_hash, ptr %1539, i32 0, i32 2
  %1541 = getelementptr inbounds %struct.UT_hash_handle, ptr %1540, i32 0, i32 0
  %1542 = load ptr, ptr %1541, align 8, !tbaa !59
  %1543 = getelementptr inbounds %struct.UT_hash_table, ptr %1542, i32 0, i32 3
  %1544 = load i32, ptr %1543, align 8, !tbaa !65
  %1545 = icmp ne i32 %1544, 0
  br i1 %1545, label %1556, label %1547

1546:                                             ; preds = %1535
  br i1 false, label %1556, label %1547

1547:                                             ; preds = %1546, %1538, %1534, %1526, %1522, %1514
  %1548 = load ptr, ptr %6, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.otfcc_Options, ptr %1548, i32 0, i32 24
  %1550 = load ptr, ptr %1549, align 8, !tbaa !11
  %1551 = getelementptr inbounds %struct.otfcc_ILogger, ptr %1550, i32 0, i32 7
  %1552 = load ptr, ptr %1551, align 8, !tbaa !66
  %1553 = load ptr, ptr %6, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.otfcc_Options, ptr %1553, i32 0, i32 24
  %1555 = load ptr, ptr %1554, align 8, !tbaa !11
  call void %1552(ptr noundef %1555)
  store i32 2, ptr %14, align 4
  br label %2199

1556:                                             ; preds = %1546, %1538
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  %1557 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %1557, ptr %61, align 8, !tbaa !5
  %1558 = load ptr, ptr %15, align 8, !tbaa !5
  %1559 = icmp ne ptr %1558, null
  br i1 %1559, label %1560, label %1565

1560:                                             ; preds = %1556
  %1561 = load ptr, ptr %15, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.lookup_hash, ptr %1561, i32 0, i32 2
  %1563 = getelementptr inbounds %struct.UT_hash_handle, ptr %1562, i32 0, i32 2
  %1564 = load ptr, ptr %1563, align 8, !tbaa !67
  br label %1566

1565:                                             ; preds = %1556
  br label %1566

1566:                                             ; preds = %1565, %1560
  %1567 = phi ptr [ %1564, %1560 ], [ null, %1565 ]
  store ptr %1567, ptr %62, align 8, !tbaa !5
  br label %1568

1568:                                             ; preds = %1766, %1566
  %1569 = load ptr, ptr %61, align 8, !tbaa !5
  %1570 = icmp ne ptr %1569, null
  br i1 %1570, label %1571, label %1768

1571:                                             ; preds = %1568
  %1572 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_LookupList, ptr @otl_iLookupList, i32 0, i32 13), align 8, !tbaa !68
  %1573 = load ptr, ptr %8, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.table_OTL, ptr %1573, i32 0, i32 0
  %1575 = load ptr, ptr %61, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.lookup_hash, ptr %1575, i32 0, i32 1
  %1577 = load ptr, ptr %1576, align 8, !tbaa !70
  call void %1572(ptr noundef %1574, ptr noundef %1577)
  br label %1578

1578:                                             ; preds = %1571
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  %1579 = load ptr, ptr %61, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.lookup_hash, ptr %1579, i32 0, i32 2
  store ptr %1580, ptr %63, align 8, !tbaa !5
  %1581 = load ptr, ptr %63, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.UT_hash_handle, ptr %1581, i32 0, i32 1
  %1583 = load ptr, ptr %1582, align 8, !tbaa !48
  %1584 = icmp eq ptr %1583, null
  br i1 %1584, label %1585, label %1601

1585:                                             ; preds = %1578
  %1586 = load ptr, ptr %63, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.UT_hash_handle, ptr %1586, i32 0, i32 2
  %1588 = load ptr, ptr %1587, align 8, !tbaa !46
  %1589 = icmp eq ptr %1588, null
  br i1 %1589, label %1590, label %1601

1590:                                             ; preds = %1585
  %1591 = load ptr, ptr %15, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.lookup_hash, ptr %1591, i32 0, i32 2
  %1593 = getelementptr inbounds %struct.UT_hash_handle, ptr %1592, i32 0, i32 0
  %1594 = load ptr, ptr %1593, align 8, !tbaa !28
  %1595 = getelementptr inbounds %struct.UT_hash_table, ptr %1594, i32 0, i32 0
  %1596 = load ptr, ptr %1595, align 8, !tbaa !34
  call void @free(ptr noundef %1596) #6
  %1597 = load ptr, ptr %15, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.lookup_hash, ptr %1597, i32 0, i32 2
  %1599 = getelementptr inbounds %struct.UT_hash_handle, ptr %1598, i32 0, i32 0
  %1600 = load ptr, ptr %1599, align 8, !tbaa !28
  call void @free(ptr noundef %1600) #6
  store ptr null, ptr %15, align 8, !tbaa !5
  br label %1749

1601:                                             ; preds = %1585, %1578
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  %1602 = load ptr, ptr %63, align 8, !tbaa !5
  %1603 = load ptr, ptr %15, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct.lookup_hash, ptr %1603, i32 0, i32 2
  %1605 = getelementptr inbounds %struct.UT_hash_handle, ptr %1604, i32 0, i32 0
  %1606 = load ptr, ptr %1605, align 8, !tbaa !28
  %1607 = getelementptr inbounds %struct.UT_hash_table, ptr %1606, i32 0, i32 4
  %1608 = load ptr, ptr %1607, align 8, !tbaa !51
  %1609 = icmp eq ptr %1602, %1608
  br i1 %1609, label %1610, label %1626

1610:                                             ; preds = %1601
  %1611 = load ptr, ptr %63, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.UT_hash_handle, ptr %1611, i32 0, i32 1
  %1613 = load ptr, ptr %1612, align 8, !tbaa !48
  %1614 = load ptr, ptr %15, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.lookup_hash, ptr %1614, i32 0, i32 2
  %1616 = getelementptr inbounds %struct.UT_hash_handle, ptr %1615, i32 0, i32 0
  %1617 = load ptr, ptr %1616, align 8, !tbaa !28
  %1618 = getelementptr inbounds %struct.UT_hash_table, ptr %1617, i32 0, i32 5
  %1619 = load i64, ptr %1618, align 8, !tbaa !37
  %1620 = getelementptr inbounds i8, ptr %1613, i64 %1619
  %1621 = load ptr, ptr %15, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.lookup_hash, ptr %1621, i32 0, i32 2
  %1623 = getelementptr inbounds %struct.UT_hash_handle, ptr %1622, i32 0, i32 0
  %1624 = load ptr, ptr %1623, align 8, !tbaa !28
  %1625 = getelementptr inbounds %struct.UT_hash_table, ptr %1624, i32 0, i32 4
  store ptr %1620, ptr %1625, align 8, !tbaa !51
  br label %1626

1626:                                             ; preds = %1610, %1601
  %1627 = load ptr, ptr %63, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.UT_hash_handle, ptr %1627, i32 0, i32 1
  %1629 = load ptr, ptr %1628, align 8, !tbaa !48
  %1630 = icmp ne ptr %1629, null
  br i1 %1630, label %1631, label %1646

1631:                                             ; preds = %1626
  %1632 = load ptr, ptr %63, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.UT_hash_handle, ptr %1632, i32 0, i32 2
  %1634 = load ptr, ptr %1633, align 8, !tbaa !46
  %1635 = load ptr, ptr %63, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.UT_hash_handle, ptr %1635, i32 0, i32 1
  %1637 = load ptr, ptr %1636, align 8, !tbaa !48
  %1638 = load ptr, ptr %15, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.lookup_hash, ptr %1638, i32 0, i32 2
  %1640 = getelementptr inbounds %struct.UT_hash_handle, ptr %1639, i32 0, i32 0
  %1641 = load ptr, ptr %1640, align 8, !tbaa !28
  %1642 = getelementptr inbounds %struct.UT_hash_table, ptr %1641, i32 0, i32 5
  %1643 = load i64, ptr %1642, align 8, !tbaa !37
  %1644 = getelementptr inbounds i8, ptr %1637, i64 %1643
  %1645 = getelementptr inbounds %struct.UT_hash_handle, ptr %1644, i32 0, i32 2
  store ptr %1634, ptr %1645, align 8, !tbaa !46
  br label %1653

1646:                                             ; preds = %1626
  br label %1647

1647:                                             ; preds = %1646
  %1648 = load ptr, ptr %63, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.UT_hash_handle, ptr %1648, i32 0, i32 2
  %1650 = load ptr, ptr %1649, align 8, !tbaa !46
  store ptr %1650, ptr %15, align 8, !tbaa !5
  br label %1651

1651:                                             ; preds = %1647
  br label %1652

1652:                                             ; preds = %1651
  br label %1653

1653:                                             ; preds = %1652, %1631
  %1654 = load ptr, ptr %63, align 8, !tbaa !5
  %1655 = getelementptr inbounds %struct.UT_hash_handle, ptr %1654, i32 0, i32 2
  %1656 = load ptr, ptr %1655, align 8, !tbaa !46
  %1657 = icmp ne ptr %1656, null
  br i1 %1657, label %1658, label %1673

1658:                                             ; preds = %1653
  %1659 = load ptr, ptr %63, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.UT_hash_handle, ptr %1659, i32 0, i32 1
  %1661 = load ptr, ptr %1660, align 8, !tbaa !48
  %1662 = load ptr, ptr %63, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.UT_hash_handle, ptr %1662, i32 0, i32 2
  %1664 = load ptr, ptr %1663, align 8, !tbaa !46
  %1665 = load ptr, ptr %15, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.lookup_hash, ptr %1665, i32 0, i32 2
  %1667 = getelementptr inbounds %struct.UT_hash_handle, ptr %1666, i32 0, i32 0
  %1668 = load ptr, ptr %1667, align 8, !tbaa !28
  %1669 = getelementptr inbounds %struct.UT_hash_table, ptr %1668, i32 0, i32 5
  %1670 = load i64, ptr %1669, align 8, !tbaa !37
  %1671 = getelementptr inbounds i8, ptr %1664, i64 %1670
  %1672 = getelementptr inbounds %struct.UT_hash_handle, ptr %1671, i32 0, i32 1
  store ptr %1661, ptr %1672, align 8, !tbaa !48
  br label %1673

1673:                                             ; preds = %1658, %1653
  br label %1674

1674:                                             ; preds = %1673
  %1675 = load ptr, ptr %63, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.UT_hash_handle, ptr %1675, i32 0, i32 7
  %1677 = load i32, ptr %1676, align 4, !tbaa !71
  %1678 = load ptr, ptr %15, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.lookup_hash, ptr %1678, i32 0, i32 2
  %1680 = getelementptr inbounds %struct.UT_hash_handle, ptr %1679, i32 0, i32 0
  %1681 = load ptr, ptr %1680, align 8, !tbaa !28
  %1682 = getelementptr inbounds %struct.UT_hash_table, ptr %1681, i32 0, i32 1
  %1683 = load i32, ptr %1682, align 8, !tbaa !31
  %1684 = sub i32 %1683, 1
  %1685 = and i32 %1677, %1684
  store i32 %1685, ptr %64, align 4, !tbaa !25
  br label %1686

1686:                                             ; preds = %1674
  br label %1687

1687:                                             ; preds = %1686
  br label %1688

1688:                                             ; preds = %1687
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  %1689 = load ptr, ptr %15, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.lookup_hash, ptr %1689, i32 0, i32 2
  %1691 = getelementptr inbounds %struct.UT_hash_handle, ptr %1690, i32 0, i32 0
  %1692 = load ptr, ptr %1691, align 8, !tbaa !28
  %1693 = getelementptr inbounds %struct.UT_hash_table, ptr %1692, i32 0, i32 0
  %1694 = load ptr, ptr %1693, align 8, !tbaa !34
  %1695 = load i32, ptr %64, align 4, !tbaa !25
  %1696 = zext i32 %1695 to i64
  %1697 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1694, i64 %1696
  store ptr %1697, ptr %65, align 8, !tbaa !5
  %1698 = load ptr, ptr %65, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1698, i32 0, i32 1
  %1700 = load i32, ptr %1699, align 8, !tbaa !72
  %1701 = add i32 %1700, -1
  store i32 %1701, ptr %1699, align 8, !tbaa !72
  %1702 = load ptr, ptr %65, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1702, i32 0, i32 0
  %1704 = load ptr, ptr %1703, align 8, !tbaa !35
  %1705 = load ptr, ptr %63, align 8, !tbaa !5
  %1706 = icmp eq ptr %1704, %1705
  br i1 %1706, label %1707, label %1713

1707:                                             ; preds = %1688
  %1708 = load ptr, ptr %63, align 8, !tbaa !5
  %1709 = getelementptr inbounds %struct.UT_hash_handle, ptr %1708, i32 0, i32 4
  %1710 = load ptr, ptr %1709, align 8, !tbaa !73
  %1711 = load ptr, ptr %65, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1711, i32 0, i32 0
  store ptr %1710, ptr %1712, align 8, !tbaa !35
  br label %1713

1713:                                             ; preds = %1707, %1688
  %1714 = load ptr, ptr %63, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.UT_hash_handle, ptr %1714, i32 0, i32 3
  %1716 = load ptr, ptr %1715, align 8, !tbaa !74
  %1717 = icmp ne ptr %1716, null
  br i1 %1717, label %1718, label %1726

1718:                                             ; preds = %1713
  %1719 = load ptr, ptr %63, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.UT_hash_handle, ptr %1719, i32 0, i32 4
  %1721 = load ptr, ptr %1720, align 8, !tbaa !73
  %1722 = load ptr, ptr %63, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.UT_hash_handle, ptr %1722, i32 0, i32 3
  %1724 = load ptr, ptr %1723, align 8, !tbaa !74
  %1725 = getelementptr inbounds %struct.UT_hash_handle, ptr %1724, i32 0, i32 4
  store ptr %1721, ptr %1725, align 8, !tbaa !73
  br label %1726

1726:                                             ; preds = %1718, %1713
  %1727 = load ptr, ptr %63, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.UT_hash_handle, ptr %1727, i32 0, i32 4
  %1729 = load ptr, ptr %1728, align 8, !tbaa !73
  %1730 = icmp ne ptr %1729, null
  br i1 %1730, label %1731, label %1739

1731:                                             ; preds = %1726
  %1732 = load ptr, ptr %63, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.UT_hash_handle, ptr %1732, i32 0, i32 3
  %1734 = load ptr, ptr %1733, align 8, !tbaa !74
  %1735 = load ptr, ptr %63, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.UT_hash_handle, ptr %1735, i32 0, i32 4
  %1737 = load ptr, ptr %1736, align 8, !tbaa !73
  %1738 = getelementptr inbounds %struct.UT_hash_handle, ptr %1737, i32 0, i32 3
  store ptr %1734, ptr %1738, align 8, !tbaa !74
  br label %1739

1739:                                             ; preds = %1731, %1726
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  br label %1740

1740:                                             ; preds = %1739
  br label %1741

1741:                                             ; preds = %1740
  %1742 = load ptr, ptr %15, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.lookup_hash, ptr %1742, i32 0, i32 2
  %1744 = getelementptr inbounds %struct.UT_hash_handle, ptr %1743, i32 0, i32 0
  %1745 = load ptr, ptr %1744, align 8, !tbaa !28
  %1746 = getelementptr inbounds %struct.UT_hash_table, ptr %1745, i32 0, i32 3
  %1747 = load i32, ptr %1746, align 8, !tbaa !65
  %1748 = add i32 %1747, -1
  store i32 %1748, ptr %1746, align 8, !tbaa !65
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  br label %1749

1749:                                             ; preds = %1741, %1590
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  br label %1750

1750:                                             ; preds = %1749
  br label %1751

1751:                                             ; preds = %1750
  %1752 = load ptr, ptr %61, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.lookup_hash, ptr %1752, i32 0, i32 0
  %1754 = load ptr, ptr %1753, align 8, !tbaa !75
  call void @sdsfree(ptr noundef %1754)
  %1755 = load ptr, ptr %61, align 8, !tbaa !5
  call void @free(ptr noundef %1755) #6
  store ptr null, ptr %61, align 8, !tbaa !5
  br label %1756

1756:                                             ; preds = %1751
  %1757 = load ptr, ptr %62, align 8, !tbaa !5
  store ptr %1757, ptr %61, align 8, !tbaa !5
  %1758 = load ptr, ptr %62, align 8, !tbaa !5
  %1759 = icmp ne ptr %1758, null
  br i1 %1759, label %1760, label %1765

1760:                                             ; preds = %1756
  %1761 = load ptr, ptr %62, align 8, !tbaa !5
  %1762 = getelementptr inbounds %struct.lookup_hash, ptr %1761, i32 0, i32 2
  %1763 = getelementptr inbounds %struct.UT_hash_handle, ptr %1762, i32 0, i32 2
  %1764 = load ptr, ptr %1763, align 8, !tbaa !67
  br label %1766

1765:                                             ; preds = %1756
  br label %1766

1766:                                             ; preds = %1765, %1760
  %1767 = phi ptr [ %1764, %1760 ], [ null, %1765 ]
  store ptr %1767, ptr %62, align 8, !tbaa !5
  br label %1568, !llvm.loop !76

1768:                                             ; preds = %1568
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #6
  %1769 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %1769, ptr %66, align 8, !tbaa !5
  %1770 = load ptr, ptr %37, align 8, !tbaa !5
  %1771 = icmp ne ptr %1770, null
  br i1 %1771, label %1772, label %1777

1772:                                             ; preds = %1768
  %1773 = load ptr, ptr %37, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.feature_hash, ptr %1773, i32 0, i32 3
  %1775 = getelementptr inbounds %struct.UT_hash_handle, ptr %1774, i32 0, i32 2
  %1776 = load ptr, ptr %1775, align 8, !tbaa !77
  br label %1778

1777:                                             ; preds = %1768
  br label %1778

1778:                                             ; preds = %1777, %1772
  %1779 = phi ptr [ %1776, %1772 ], [ null, %1777 ]
  store ptr %1779, ptr %67, align 8, !tbaa !5
  br label %1780

1780:                                             ; preds = %1984, %1778
  %1781 = load ptr, ptr %66, align 8, !tbaa !5
  %1782 = icmp ne ptr %1781, null
  br i1 %1782, label %1783, label %1986

1783:                                             ; preds = %1780
  %1784 = load ptr, ptr %66, align 8, !tbaa !5
  %1785 = getelementptr inbounds %struct.feature_hash, ptr %1784, i32 0, i32 1
  %1786 = load i8, ptr %1785, align 8, !tbaa !78, !range !17, !noundef !18
  %1787 = trunc i8 %1786 to i1
  br i1 %1787, label %1795, label %1788

1788:                                             ; preds = %1783
  %1789 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_FeatureList, ptr @otl_iFeatureList, i32 0, i32 13), align 8, !tbaa !79
  %1790 = load ptr, ptr %8, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.table_OTL, ptr %1790, i32 0, i32 1
  %1792 = load ptr, ptr %66, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.feature_hash, ptr %1792, i32 0, i32 2
  %1794 = load ptr, ptr %1793, align 8, !tbaa !81
  call void %1789(ptr noundef %1791, ptr noundef %1794)
  br label %1795

1795:                                             ; preds = %1788, %1783
  br label %1796

1796:                                             ; preds = %1795
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #6
  %1797 = load ptr, ptr %66, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.feature_hash, ptr %1797, i32 0, i32 3
  store ptr %1798, ptr %68, align 8, !tbaa !5
  %1799 = load ptr, ptr %68, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.UT_hash_handle, ptr %1799, i32 0, i32 1
  %1801 = load ptr, ptr %1800, align 8, !tbaa !48
  %1802 = icmp eq ptr %1801, null
  br i1 %1802, label %1803, label %1819

1803:                                             ; preds = %1796
  %1804 = load ptr, ptr %68, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.UT_hash_handle, ptr %1804, i32 0, i32 2
  %1806 = load ptr, ptr %1805, align 8, !tbaa !46
  %1807 = icmp eq ptr %1806, null
  br i1 %1807, label %1808, label %1819

1808:                                             ; preds = %1803
  %1809 = load ptr, ptr %37, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.feature_hash, ptr %1809, i32 0, i32 3
  %1811 = getelementptr inbounds %struct.UT_hash_handle, ptr %1810, i32 0, i32 0
  %1812 = load ptr, ptr %1811, align 8, !tbaa !53
  %1813 = getelementptr inbounds %struct.UT_hash_table, ptr %1812, i32 0, i32 0
  %1814 = load ptr, ptr %1813, align 8, !tbaa !34
  call void @free(ptr noundef %1814) #6
  %1815 = load ptr, ptr %37, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.feature_hash, ptr %1815, i32 0, i32 3
  %1817 = getelementptr inbounds %struct.UT_hash_handle, ptr %1816, i32 0, i32 0
  %1818 = load ptr, ptr %1817, align 8, !tbaa !53
  call void @free(ptr noundef %1818) #6
  store ptr null, ptr %37, align 8, !tbaa !5
  br label %1967

1819:                                             ; preds = %1803, %1796
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %1820 = load ptr, ptr %68, align 8, !tbaa !5
  %1821 = load ptr, ptr %37, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.feature_hash, ptr %1821, i32 0, i32 3
  %1823 = getelementptr inbounds %struct.UT_hash_handle, ptr %1822, i32 0, i32 0
  %1824 = load ptr, ptr %1823, align 8, !tbaa !53
  %1825 = getelementptr inbounds %struct.UT_hash_table, ptr %1824, i32 0, i32 4
  %1826 = load ptr, ptr %1825, align 8, !tbaa !51
  %1827 = icmp eq ptr %1820, %1826
  br i1 %1827, label %1828, label %1844

1828:                                             ; preds = %1819
  %1829 = load ptr, ptr %68, align 8, !tbaa !5
  %1830 = getelementptr inbounds %struct.UT_hash_handle, ptr %1829, i32 0, i32 1
  %1831 = load ptr, ptr %1830, align 8, !tbaa !48
  %1832 = load ptr, ptr %37, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.feature_hash, ptr %1832, i32 0, i32 3
  %1834 = getelementptr inbounds %struct.UT_hash_handle, ptr %1833, i32 0, i32 0
  %1835 = load ptr, ptr %1834, align 8, !tbaa !53
  %1836 = getelementptr inbounds %struct.UT_hash_table, ptr %1835, i32 0, i32 5
  %1837 = load i64, ptr %1836, align 8, !tbaa !37
  %1838 = getelementptr inbounds i8, ptr %1831, i64 %1837
  %1839 = load ptr, ptr %37, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.feature_hash, ptr %1839, i32 0, i32 3
  %1841 = getelementptr inbounds %struct.UT_hash_handle, ptr %1840, i32 0, i32 0
  %1842 = load ptr, ptr %1841, align 8, !tbaa !53
  %1843 = getelementptr inbounds %struct.UT_hash_table, ptr %1842, i32 0, i32 4
  store ptr %1838, ptr %1843, align 8, !tbaa !51
  br label %1844

1844:                                             ; preds = %1828, %1819
  %1845 = load ptr, ptr %68, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.UT_hash_handle, ptr %1845, i32 0, i32 1
  %1847 = load ptr, ptr %1846, align 8, !tbaa !48
  %1848 = icmp ne ptr %1847, null
  br i1 %1848, label %1849, label %1864

1849:                                             ; preds = %1844
  %1850 = load ptr, ptr %68, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.UT_hash_handle, ptr %1850, i32 0, i32 2
  %1852 = load ptr, ptr %1851, align 8, !tbaa !46
  %1853 = load ptr, ptr %68, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.UT_hash_handle, ptr %1853, i32 0, i32 1
  %1855 = load ptr, ptr %1854, align 8, !tbaa !48
  %1856 = load ptr, ptr %37, align 8, !tbaa !5
  %1857 = getelementptr inbounds %struct.feature_hash, ptr %1856, i32 0, i32 3
  %1858 = getelementptr inbounds %struct.UT_hash_handle, ptr %1857, i32 0, i32 0
  %1859 = load ptr, ptr %1858, align 8, !tbaa !53
  %1860 = getelementptr inbounds %struct.UT_hash_table, ptr %1859, i32 0, i32 5
  %1861 = load i64, ptr %1860, align 8, !tbaa !37
  %1862 = getelementptr inbounds i8, ptr %1855, i64 %1861
  %1863 = getelementptr inbounds %struct.UT_hash_handle, ptr %1862, i32 0, i32 2
  store ptr %1852, ptr %1863, align 8, !tbaa !46
  br label %1871

1864:                                             ; preds = %1844
  br label %1865

1865:                                             ; preds = %1864
  %1866 = load ptr, ptr %68, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.UT_hash_handle, ptr %1866, i32 0, i32 2
  %1868 = load ptr, ptr %1867, align 8, !tbaa !46
  store ptr %1868, ptr %37, align 8, !tbaa !5
  br label %1869

1869:                                             ; preds = %1865
  br label %1870

1870:                                             ; preds = %1869
  br label %1871

1871:                                             ; preds = %1870, %1849
  %1872 = load ptr, ptr %68, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.UT_hash_handle, ptr %1872, i32 0, i32 2
  %1874 = load ptr, ptr %1873, align 8, !tbaa !46
  %1875 = icmp ne ptr %1874, null
  br i1 %1875, label %1876, label %1891

1876:                                             ; preds = %1871
  %1877 = load ptr, ptr %68, align 8, !tbaa !5
  %1878 = getelementptr inbounds %struct.UT_hash_handle, ptr %1877, i32 0, i32 1
  %1879 = load ptr, ptr %1878, align 8, !tbaa !48
  %1880 = load ptr, ptr %68, align 8, !tbaa !5
  %1881 = getelementptr inbounds %struct.UT_hash_handle, ptr %1880, i32 0, i32 2
  %1882 = load ptr, ptr %1881, align 8, !tbaa !46
  %1883 = load ptr, ptr %37, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.feature_hash, ptr %1883, i32 0, i32 3
  %1885 = getelementptr inbounds %struct.UT_hash_handle, ptr %1884, i32 0, i32 0
  %1886 = load ptr, ptr %1885, align 8, !tbaa !53
  %1887 = getelementptr inbounds %struct.UT_hash_table, ptr %1886, i32 0, i32 5
  %1888 = load i64, ptr %1887, align 8, !tbaa !37
  %1889 = getelementptr inbounds i8, ptr %1882, i64 %1888
  %1890 = getelementptr inbounds %struct.UT_hash_handle, ptr %1889, i32 0, i32 1
  store ptr %1879, ptr %1890, align 8, !tbaa !48
  br label %1891

1891:                                             ; preds = %1876, %1871
  br label %1892

1892:                                             ; preds = %1891
  %1893 = load ptr, ptr %68, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.UT_hash_handle, ptr %1893, i32 0, i32 7
  %1895 = load i32, ptr %1894, align 4, !tbaa !71
  %1896 = load ptr, ptr %37, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.feature_hash, ptr %1896, i32 0, i32 3
  %1898 = getelementptr inbounds %struct.UT_hash_handle, ptr %1897, i32 0, i32 0
  %1899 = load ptr, ptr %1898, align 8, !tbaa !53
  %1900 = getelementptr inbounds %struct.UT_hash_table, ptr %1899, i32 0, i32 1
  %1901 = load i32, ptr %1900, align 8, !tbaa !31
  %1902 = sub i32 %1901, 1
  %1903 = and i32 %1895, %1902
  store i32 %1903, ptr %69, align 4, !tbaa !25
  br label %1904

1904:                                             ; preds = %1892
  br label %1905

1905:                                             ; preds = %1904
  br label %1906

1906:                                             ; preds = %1905
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #6
  %1907 = load ptr, ptr %37, align 8, !tbaa !5
  %1908 = getelementptr inbounds %struct.feature_hash, ptr %1907, i32 0, i32 3
  %1909 = getelementptr inbounds %struct.UT_hash_handle, ptr %1908, i32 0, i32 0
  %1910 = load ptr, ptr %1909, align 8, !tbaa !53
  %1911 = getelementptr inbounds %struct.UT_hash_table, ptr %1910, i32 0, i32 0
  %1912 = load ptr, ptr %1911, align 8, !tbaa !34
  %1913 = load i32, ptr %69, align 4, !tbaa !25
  %1914 = zext i32 %1913 to i64
  %1915 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1912, i64 %1914
  store ptr %1915, ptr %70, align 8, !tbaa !5
  %1916 = load ptr, ptr %70, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1916, i32 0, i32 1
  %1918 = load i32, ptr %1917, align 8, !tbaa !72
  %1919 = add i32 %1918, -1
  store i32 %1919, ptr %1917, align 8, !tbaa !72
  %1920 = load ptr, ptr %70, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1920, i32 0, i32 0
  %1922 = load ptr, ptr %1921, align 8, !tbaa !35
  %1923 = load ptr, ptr %68, align 8, !tbaa !5
  %1924 = icmp eq ptr %1922, %1923
  br i1 %1924, label %1925, label %1931

1925:                                             ; preds = %1906
  %1926 = load ptr, ptr %68, align 8, !tbaa !5
  %1927 = getelementptr inbounds %struct.UT_hash_handle, ptr %1926, i32 0, i32 4
  %1928 = load ptr, ptr %1927, align 8, !tbaa !73
  %1929 = load ptr, ptr %70, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.UT_hash_bucket, ptr %1929, i32 0, i32 0
  store ptr %1928, ptr %1930, align 8, !tbaa !35
  br label %1931

1931:                                             ; preds = %1925, %1906
  %1932 = load ptr, ptr %68, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.UT_hash_handle, ptr %1932, i32 0, i32 3
  %1934 = load ptr, ptr %1933, align 8, !tbaa !74
  %1935 = icmp ne ptr %1934, null
  br i1 %1935, label %1936, label %1944

1936:                                             ; preds = %1931
  %1937 = load ptr, ptr %68, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.UT_hash_handle, ptr %1937, i32 0, i32 4
  %1939 = load ptr, ptr %1938, align 8, !tbaa !73
  %1940 = load ptr, ptr %68, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.UT_hash_handle, ptr %1940, i32 0, i32 3
  %1942 = load ptr, ptr %1941, align 8, !tbaa !74
  %1943 = getelementptr inbounds %struct.UT_hash_handle, ptr %1942, i32 0, i32 4
  store ptr %1939, ptr %1943, align 8, !tbaa !73
  br label %1944

1944:                                             ; preds = %1936, %1931
  %1945 = load ptr, ptr %68, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.UT_hash_handle, ptr %1945, i32 0, i32 4
  %1947 = load ptr, ptr %1946, align 8, !tbaa !73
  %1948 = icmp ne ptr %1947, null
  br i1 %1948, label %1949, label %1957

1949:                                             ; preds = %1944
  %1950 = load ptr, ptr %68, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.UT_hash_handle, ptr %1950, i32 0, i32 3
  %1952 = load ptr, ptr %1951, align 8, !tbaa !74
  %1953 = load ptr, ptr %68, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.UT_hash_handle, ptr %1953, i32 0, i32 4
  %1955 = load ptr, ptr %1954, align 8, !tbaa !73
  %1956 = getelementptr inbounds %struct.UT_hash_handle, ptr %1955, i32 0, i32 3
  store ptr %1952, ptr %1956, align 8, !tbaa !74
  br label %1957

1957:                                             ; preds = %1949, %1944
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #6
  br label %1958

1958:                                             ; preds = %1957
  br label %1959

1959:                                             ; preds = %1958
  %1960 = load ptr, ptr %37, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.feature_hash, ptr %1960, i32 0, i32 3
  %1962 = getelementptr inbounds %struct.UT_hash_handle, ptr %1961, i32 0, i32 0
  %1963 = load ptr, ptr %1962, align 8, !tbaa !53
  %1964 = getelementptr inbounds %struct.UT_hash_table, ptr %1963, i32 0, i32 3
  %1965 = load i32, ptr %1964, align 8, !tbaa !65
  %1966 = add i32 %1965, -1
  store i32 %1966, ptr %1964, align 8, !tbaa !65
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %1967

1967:                                             ; preds = %1959, %1808
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  br label %1968

1968:                                             ; preds = %1967
  br label %1969

1969:                                             ; preds = %1968
  %1970 = load ptr, ptr %66, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.feature_hash, ptr %1970, i32 0, i32 0
  %1972 = load ptr, ptr %1971, align 8, !tbaa !82
  call void @sdsfree(ptr noundef %1972)
  %1973 = load ptr, ptr %66, align 8, !tbaa !5
  call void @free(ptr noundef %1973) #6
  store ptr null, ptr %66, align 8, !tbaa !5
  br label %1974

1974:                                             ; preds = %1969
  %1975 = load ptr, ptr %67, align 8, !tbaa !5
  store ptr %1975, ptr %66, align 8, !tbaa !5
  %1976 = load ptr, ptr %67, align 8, !tbaa !5
  %1977 = icmp ne ptr %1976, null
  br i1 %1977, label %1978, label %1983

1978:                                             ; preds = %1974
  %1979 = load ptr, ptr %67, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct.feature_hash, ptr %1979, i32 0, i32 3
  %1981 = getelementptr inbounds %struct.UT_hash_handle, ptr %1980, i32 0, i32 2
  %1982 = load ptr, ptr %1981, align 8, !tbaa !77
  br label %1984

1983:                                             ; preds = %1974
  br label %1984

1984:                                             ; preds = %1983, %1978
  %1985 = phi ptr [ %1982, %1978 ], [ null, %1983 ]
  store ptr %1985, ptr %67, align 8, !tbaa !5
  br label %1780, !llvm.loop !83

1986:                                             ; preds = %1780
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #6
  %1987 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %1987, ptr %71, align 8, !tbaa !5
  %1988 = load ptr, ptr %49, align 8, !tbaa !5
  %1989 = icmp ne ptr %1988, null
  br i1 %1989, label %1990, label %1995

1990:                                             ; preds = %1986
  %1991 = load ptr, ptr %49, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.language_hash, ptr %1991, i32 0, i32 2
  %1993 = getelementptr inbounds %struct.UT_hash_handle, ptr %1992, i32 0, i32 2
  %1994 = load ptr, ptr %1993, align 8, !tbaa !84
  br label %1996

1995:                                             ; preds = %1986
  br label %1996

1996:                                             ; preds = %1995, %1990
  %1997 = phi ptr [ %1994, %1990 ], [ null, %1995 ]
  store ptr %1997, ptr %72, align 8, !tbaa !5
  br label %1998

1998:                                             ; preds = %2196, %1996
  %1999 = load ptr, ptr %71, align 8, !tbaa !5
  %2000 = icmp ne ptr %1999, null
  br i1 %2000, label %2001, label %2198

2001:                                             ; preds = %1998
  %2002 = load ptr, ptr getelementptr inbounds (%struct.__caryll_vectorinterface_otl_LangSystemList, ptr @otl_iLangSystemList, i32 0, i32 13), align 8, !tbaa !85
  %2003 = load ptr, ptr %8, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.table_OTL, ptr %2003, i32 0, i32 2
  %2005 = load ptr, ptr %71, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.language_hash, ptr %2005, i32 0, i32 1
  %2007 = load ptr, ptr %2006, align 8, !tbaa !87
  call void %2002(ptr noundef %2004, ptr noundef %2007)
  br label %2008

2008:                                             ; preds = %2001
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #6
  %2009 = load ptr, ptr %71, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.language_hash, ptr %2009, i32 0, i32 2
  store ptr %2010, ptr %73, align 8, !tbaa !5
  %2011 = load ptr, ptr %73, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.UT_hash_handle, ptr %2011, i32 0, i32 1
  %2013 = load ptr, ptr %2012, align 8, !tbaa !48
  %2014 = icmp eq ptr %2013, null
  br i1 %2014, label %2015, label %2031

2015:                                             ; preds = %2008
  %2016 = load ptr, ptr %73, align 8, !tbaa !5
  %2017 = getelementptr inbounds %struct.UT_hash_handle, ptr %2016, i32 0, i32 2
  %2018 = load ptr, ptr %2017, align 8, !tbaa !46
  %2019 = icmp eq ptr %2018, null
  br i1 %2019, label %2020, label %2031

2020:                                             ; preds = %2015
  %2021 = load ptr, ptr %49, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.language_hash, ptr %2021, i32 0, i32 2
  %2023 = getelementptr inbounds %struct.UT_hash_handle, ptr %2022, i32 0, i32 0
  %2024 = load ptr, ptr %2023, align 8, !tbaa !59
  %2025 = getelementptr inbounds %struct.UT_hash_table, ptr %2024, i32 0, i32 0
  %2026 = load ptr, ptr %2025, align 8, !tbaa !34
  call void @free(ptr noundef %2026) #6
  %2027 = load ptr, ptr %49, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.language_hash, ptr %2027, i32 0, i32 2
  %2029 = getelementptr inbounds %struct.UT_hash_handle, ptr %2028, i32 0, i32 0
  %2030 = load ptr, ptr %2029, align 8, !tbaa !59
  call void @free(ptr noundef %2030) #6
  store ptr null, ptr %49, align 8, !tbaa !5
  br label %2179

2031:                                             ; preds = %2015, %2008
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #6
  %2032 = load ptr, ptr %73, align 8, !tbaa !5
  %2033 = load ptr, ptr %49, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.language_hash, ptr %2033, i32 0, i32 2
  %2035 = getelementptr inbounds %struct.UT_hash_handle, ptr %2034, i32 0, i32 0
  %2036 = load ptr, ptr %2035, align 8, !tbaa !59
  %2037 = getelementptr inbounds %struct.UT_hash_table, ptr %2036, i32 0, i32 4
  %2038 = load ptr, ptr %2037, align 8, !tbaa !51
  %2039 = icmp eq ptr %2032, %2038
  br i1 %2039, label %2040, label %2056

2040:                                             ; preds = %2031
  %2041 = load ptr, ptr %73, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.UT_hash_handle, ptr %2041, i32 0, i32 1
  %2043 = load ptr, ptr %2042, align 8, !tbaa !48
  %2044 = load ptr, ptr %49, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.language_hash, ptr %2044, i32 0, i32 2
  %2046 = getelementptr inbounds %struct.UT_hash_handle, ptr %2045, i32 0, i32 0
  %2047 = load ptr, ptr %2046, align 8, !tbaa !59
  %2048 = getelementptr inbounds %struct.UT_hash_table, ptr %2047, i32 0, i32 5
  %2049 = load i64, ptr %2048, align 8, !tbaa !37
  %2050 = getelementptr inbounds i8, ptr %2043, i64 %2049
  %2051 = load ptr, ptr %49, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.language_hash, ptr %2051, i32 0, i32 2
  %2053 = getelementptr inbounds %struct.UT_hash_handle, ptr %2052, i32 0, i32 0
  %2054 = load ptr, ptr %2053, align 8, !tbaa !59
  %2055 = getelementptr inbounds %struct.UT_hash_table, ptr %2054, i32 0, i32 4
  store ptr %2050, ptr %2055, align 8, !tbaa !51
  br label %2056

2056:                                             ; preds = %2040, %2031
  %2057 = load ptr, ptr %73, align 8, !tbaa !5
  %2058 = getelementptr inbounds %struct.UT_hash_handle, ptr %2057, i32 0, i32 1
  %2059 = load ptr, ptr %2058, align 8, !tbaa !48
  %2060 = icmp ne ptr %2059, null
  br i1 %2060, label %2061, label %2076

2061:                                             ; preds = %2056
  %2062 = load ptr, ptr %73, align 8, !tbaa !5
  %2063 = getelementptr inbounds %struct.UT_hash_handle, ptr %2062, i32 0, i32 2
  %2064 = load ptr, ptr %2063, align 8, !tbaa !46
  %2065 = load ptr, ptr %73, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.UT_hash_handle, ptr %2065, i32 0, i32 1
  %2067 = load ptr, ptr %2066, align 8, !tbaa !48
  %2068 = load ptr, ptr %49, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.language_hash, ptr %2068, i32 0, i32 2
  %2070 = getelementptr inbounds %struct.UT_hash_handle, ptr %2069, i32 0, i32 0
  %2071 = load ptr, ptr %2070, align 8, !tbaa !59
  %2072 = getelementptr inbounds %struct.UT_hash_table, ptr %2071, i32 0, i32 5
  %2073 = load i64, ptr %2072, align 8, !tbaa !37
  %2074 = getelementptr inbounds i8, ptr %2067, i64 %2073
  %2075 = getelementptr inbounds %struct.UT_hash_handle, ptr %2074, i32 0, i32 2
  store ptr %2064, ptr %2075, align 8, !tbaa !46
  br label %2083

2076:                                             ; preds = %2056
  br label %2077

2077:                                             ; preds = %2076
  %2078 = load ptr, ptr %73, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.UT_hash_handle, ptr %2078, i32 0, i32 2
  %2080 = load ptr, ptr %2079, align 8, !tbaa !46
  store ptr %2080, ptr %49, align 8, !tbaa !5
  br label %2081

2081:                                             ; preds = %2077
  br label %2082

2082:                                             ; preds = %2081
  br label %2083

2083:                                             ; preds = %2082, %2061
  %2084 = load ptr, ptr %73, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.UT_hash_handle, ptr %2084, i32 0, i32 2
  %2086 = load ptr, ptr %2085, align 8, !tbaa !46
  %2087 = icmp ne ptr %2086, null
  br i1 %2087, label %2088, label %2103

2088:                                             ; preds = %2083
  %2089 = load ptr, ptr %73, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.UT_hash_handle, ptr %2089, i32 0, i32 1
  %2091 = load ptr, ptr %2090, align 8, !tbaa !48
  %2092 = load ptr, ptr %73, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.UT_hash_handle, ptr %2092, i32 0, i32 2
  %2094 = load ptr, ptr %2093, align 8, !tbaa !46
  %2095 = load ptr, ptr %49, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.language_hash, ptr %2095, i32 0, i32 2
  %2097 = getelementptr inbounds %struct.UT_hash_handle, ptr %2096, i32 0, i32 0
  %2098 = load ptr, ptr %2097, align 8, !tbaa !59
  %2099 = getelementptr inbounds %struct.UT_hash_table, ptr %2098, i32 0, i32 5
  %2100 = load i64, ptr %2099, align 8, !tbaa !37
  %2101 = getelementptr inbounds i8, ptr %2094, i64 %2100
  %2102 = getelementptr inbounds %struct.UT_hash_handle, ptr %2101, i32 0, i32 1
  store ptr %2091, ptr %2102, align 8, !tbaa !48
  br label %2103

2103:                                             ; preds = %2088, %2083
  br label %2104

2104:                                             ; preds = %2103
  %2105 = load ptr, ptr %73, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.UT_hash_handle, ptr %2105, i32 0, i32 7
  %2107 = load i32, ptr %2106, align 4, !tbaa !71
  %2108 = load ptr, ptr %49, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.language_hash, ptr %2108, i32 0, i32 2
  %2110 = getelementptr inbounds %struct.UT_hash_handle, ptr %2109, i32 0, i32 0
  %2111 = load ptr, ptr %2110, align 8, !tbaa !59
  %2112 = getelementptr inbounds %struct.UT_hash_table, ptr %2111, i32 0, i32 1
  %2113 = load i32, ptr %2112, align 8, !tbaa !31
  %2114 = sub i32 %2113, 1
  %2115 = and i32 %2107, %2114
  store i32 %2115, ptr %74, align 4, !tbaa !25
  br label %2116

2116:                                             ; preds = %2104
  br label %2117

2117:                                             ; preds = %2116
  br label %2118

2118:                                             ; preds = %2117
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %2119 = load ptr, ptr %49, align 8, !tbaa !5
  %2120 = getelementptr inbounds %struct.language_hash, ptr %2119, i32 0, i32 2
  %2121 = getelementptr inbounds %struct.UT_hash_handle, ptr %2120, i32 0, i32 0
  %2122 = load ptr, ptr %2121, align 8, !tbaa !59
  %2123 = getelementptr inbounds %struct.UT_hash_table, ptr %2122, i32 0, i32 0
  %2124 = load ptr, ptr %2123, align 8, !tbaa !34
  %2125 = load i32, ptr %74, align 4, !tbaa !25
  %2126 = zext i32 %2125 to i64
  %2127 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2124, i64 %2126
  store ptr %2127, ptr %75, align 8, !tbaa !5
  %2128 = load ptr, ptr %75, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2128, i32 0, i32 1
  %2130 = load i32, ptr %2129, align 8, !tbaa !72
  %2131 = add i32 %2130, -1
  store i32 %2131, ptr %2129, align 8, !tbaa !72
  %2132 = load ptr, ptr %75, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2132, i32 0, i32 0
  %2134 = load ptr, ptr %2133, align 8, !tbaa !35
  %2135 = load ptr, ptr %73, align 8, !tbaa !5
  %2136 = icmp eq ptr %2134, %2135
  br i1 %2136, label %2137, label %2143

2137:                                             ; preds = %2118
  %2138 = load ptr, ptr %73, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.UT_hash_handle, ptr %2138, i32 0, i32 4
  %2140 = load ptr, ptr %2139, align 8, !tbaa !73
  %2141 = load ptr, ptr %75, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.UT_hash_bucket, ptr %2141, i32 0, i32 0
  store ptr %2140, ptr %2142, align 8, !tbaa !35
  br label %2143

2143:                                             ; preds = %2137, %2118
  %2144 = load ptr, ptr %73, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.UT_hash_handle, ptr %2144, i32 0, i32 3
  %2146 = load ptr, ptr %2145, align 8, !tbaa !74
  %2147 = icmp ne ptr %2146, null
  br i1 %2147, label %2148, label %2156

2148:                                             ; preds = %2143
  %2149 = load ptr, ptr %73, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.UT_hash_handle, ptr %2149, i32 0, i32 4
  %2151 = load ptr, ptr %2150, align 8, !tbaa !73
  %2152 = load ptr, ptr %73, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.UT_hash_handle, ptr %2152, i32 0, i32 3
  %2154 = load ptr, ptr %2153, align 8, !tbaa !74
  %2155 = getelementptr inbounds %struct.UT_hash_handle, ptr %2154, i32 0, i32 4
  store ptr %2151, ptr %2155, align 8, !tbaa !73
  br label %2156

2156:                                             ; preds = %2148, %2143
  %2157 = load ptr, ptr %73, align 8, !tbaa !5
  %2158 = getelementptr inbounds %struct.UT_hash_handle, ptr %2157, i32 0, i32 4
  %2159 = load ptr, ptr %2158, align 8, !tbaa !73
  %2160 = icmp ne ptr %2159, null
  br i1 %2160, label %2161, label %2169

2161:                                             ; preds = %2156
  %2162 = load ptr, ptr %73, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.UT_hash_handle, ptr %2162, i32 0, i32 3
  %2164 = load ptr, ptr %2163, align 8, !tbaa !74
  %2165 = load ptr, ptr %73, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.UT_hash_handle, ptr %2165, i32 0, i32 4
  %2167 = load ptr, ptr %2166, align 8, !tbaa !73
  %2168 = getelementptr inbounds %struct.UT_hash_handle, ptr %2167, i32 0, i32 3
  store ptr %2164, ptr %2168, align 8, !tbaa !74
  br label %2169

2169:                                             ; preds = %2161, %2156
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  br label %2170

2170:                                             ; preds = %2169
  br label %2171

2171:                                             ; preds = %2170
  %2172 = load ptr, ptr %49, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.language_hash, ptr %2172, i32 0, i32 2
  %2174 = getelementptr inbounds %struct.UT_hash_handle, ptr %2173, i32 0, i32 0
  %2175 = load ptr, ptr %2174, align 8, !tbaa !59
  %2176 = getelementptr inbounds %struct.UT_hash_table, ptr %2175, i32 0, i32 3
  %2177 = load i32, ptr %2176, align 8, !tbaa !65
  %2178 = add i32 %2177, -1
  store i32 %2178, ptr %2176, align 8, !tbaa !65
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #6
  br label %2179

2179:                                             ; preds = %2171, %2020
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #6
  br label %2180

2180:                                             ; preds = %2179
  br label %2181

2181:                                             ; preds = %2180
  %2182 = load ptr, ptr %71, align 8, !tbaa !5
  %2183 = getelementptr inbounds %struct.language_hash, ptr %2182, i32 0, i32 0
  %2184 = load ptr, ptr %2183, align 8, !tbaa !88
  call void @sdsfree(ptr noundef %2184)
  %2185 = load ptr, ptr %71, align 8, !tbaa !5
  call void @free(ptr noundef %2185) #6
  store ptr null, ptr %71, align 8, !tbaa !5
  br label %2186

2186:                                             ; preds = %2181
  %2187 = load ptr, ptr %72, align 8, !tbaa !5
  store ptr %2187, ptr %71, align 8, !tbaa !5
  %2188 = load ptr, ptr %72, align 8, !tbaa !5
  %2189 = icmp ne ptr %2188, null
  br i1 %2189, label %2190, label %2195

2190:                                             ; preds = %2186
  %2191 = load ptr, ptr %72, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.language_hash, ptr %2191, i32 0, i32 2
  %2193 = getelementptr inbounds %struct.UT_hash_handle, ptr %2192, i32 0, i32 2
  %2194 = load ptr, ptr %2193, align 8, !tbaa !84
  br label %2196

2195:                                             ; preds = %2186
  br label %2196

2196:                                             ; preds = %2195, %2190
  %2197 = phi ptr [ %2194, %2190 ], [ null, %2195 ]
  store ptr %2197, ptr %72, align 8, !tbaa !5
  br label %1998, !llvm.loop !89

2198:                                             ; preds = %1998
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #6
  store i32 0, ptr %14, align 4
  br label %2199

2199:                                             ; preds = %2198, %1547
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  %2200 = load i32, ptr %14, align 4
  switch i32 %2200, label %2211 [
    i32 0, label %2201
  ]

2201:                                             ; preds = %2199
  br label %2202

2202:                                             ; preds = %2201
  store i8 0, ptr %13, align 1, !tbaa !16
  %2203 = load ptr, ptr %6, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.otfcc_Options, ptr %2203, i32 0, i32 24
  %2205 = load ptr, ptr %2204, align 8, !tbaa !11
  %2206 = getelementptr inbounds %struct.otfcc_ILogger, ptr %2205, i32 0, i32 8
  %2207 = load ptr, ptr %2206, align 8, !tbaa !90
  %2208 = load ptr, ptr %6, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.otfcc_Options, ptr %2208, i32 0, i32 24
  %2210 = load ptr, ptr %2209, align 8, !tbaa !11
  call void %2207(ptr noundef %2210)
  br label %112, !llvm.loop !91

2211:                                             ; preds = %2199, %115
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  %2212 = load i32, ptr %14, align 4
  switch i32 %2212, label %2233 [
    i32 3, label %2213
    i32 2, label %2215
  ]

2213:                                             ; preds = %2211
  %2214 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %2214, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %2233

2215:                                             ; preds = %2211, %99, %81
  %2216 = load ptr, ptr %8, align 8, !tbaa !5
  %2217 = icmp ne ptr %2216, null
  br i1 %2217, label %2218, label %2232

2218:                                             ; preds = %2215
  %2219 = load ptr, ptr %6, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.otfcc_Options, ptr %2219, i32 0, i32 24
  %2221 = load ptr, ptr %2220, align 8, !tbaa !11
  %2222 = getelementptr inbounds %struct.otfcc_ILogger, ptr %2221, i32 0, i32 6
  %2223 = load ptr, ptr %2222, align 8, !tbaa !92
  %2224 = load ptr, ptr %6, align 8, !tbaa !5
  %2225 = getelementptr inbounds %struct.otfcc_Options, ptr %2224, i32 0, i32 24
  %2226 = load ptr, ptr %2225, align 8, !tbaa !11
  %2227 = call ptr @sdsempty()
  %2228 = load ptr, ptr %7, align 8, !tbaa !5
  %2229 = call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %2227, ptr noundef @.str.5, ptr noundef %2228)
  call void %2223(ptr noundef %2226, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %2229)
  %2230 = load ptr, ptr getelementptr inbounds (%struct.__caryll_elementinterface_table_OTL, ptr @table_iOTL, i32 0, i32 7), align 8, !tbaa !93
  %2231 = load ptr, ptr %8, align 8, !tbaa !5
  call void %2230(ptr noundef %2231)
  br label %2232

2232:                                             ; preds = %2218, %2215
  store ptr null, ptr %4, align 8
  store i32 1, ptr %14, align 4
  br label %2233

2233:                                             ; preds = %2232, %2213, %2211
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  %2234 = load ptr, ptr %4, align 8
  ret ptr %2234
}

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

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

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

declare ptr @sdsempty() #3

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

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

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

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

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

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

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

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

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

declare void @sdsfree(ptr noundef) #3

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


; 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_OTL = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LookupList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_FeatureList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.__caryll_vectorinterface_otl_LangSystemList = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.UT_hash_bucket = type { ptr, i32, i32 }

@table_iOTL = external local_unnamed_addr constant %struct.__caryll_elementinterface_table_OTL, align 8
@.str = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [12 x i8], align 1
@otl_iLookupList = external local_unnamed_addr constant %struct.__caryll_vectorinterface_otl_LookupList, align 8
@otl_iFeatureList = external local_unnamed_addr constant %struct.__caryll_vectorinterface_otl_FeatureList, align 8
@otl_iLangSystemList = external local_unnamed_addr constant %struct.__caryll_vectorinterface_otl_LangSystemList, align 8
@.str.5 = external hidden unnamed_addr constant [58 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local ptr @otfcc_parseOtl(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #0 {
  %4 = tail call ptr @json_obj_get_type(ptr noundef %0, ptr noundef %2, i32 noundef 1)
  %.not = icmp eq ptr %4, null
  br i1 %.not, label %.thread889, label %5

5:                                                ; preds = %3
  %6 = load ptr, ptr getelementptr inbounds (i8, ptr @table_iOTL, i64 48), align 8, !tbaa !5
  %7 = tail call ptr (...) %6() #6
  %8 = tail call ptr @json_obj_get_type(ptr noundef nonnull %4, ptr noundef nonnull @.str, i32 noundef 1)
  %9 = tail call ptr @json_obj_get_type(ptr noundef nonnull %4, ptr noundef nonnull @.str.1, i32 noundef 1)
  %10 = tail call ptr @json_obj_get_type(ptr noundef nonnull %4, ptr noundef nonnull @.str.2, i32 noundef 1)
  %11 = icmp ne ptr %8, null
  %12 = icmp ne ptr %9, null
  %or.cond = select i1 %11, i1 %12, i1 false
  %13 = icmp ne ptr %10, null
  %or.cond3 = select i1 %or.cond, i1 %13, i1 false
  br i1 %or.cond3, label %.critedge846, label %779

.critedge846:                                     ; preds = %5
  %14 = getelementptr inbounds i8, ptr %1, i64 32
  %15 = load ptr, ptr %14, align 8, !tbaa !10
  %16 = getelementptr inbounds i8, ptr %15, i64 32
  %17 = load ptr, ptr %16, align 8, !tbaa !13
  %18 = tail call ptr @sdsempty() #6
  %19 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %18, ptr noundef nonnull @.str.3, ptr noundef %2) #6
  tail call void %17(ptr noundef %15, ptr noundef %19) #6
  %20 = tail call ptr @figureOutLookupsFromJSON(ptr noundef nonnull %10, ptr noundef %1)
  %21 = tail call ptr @json_obj_get_type(ptr noundef nonnull %4, ptr noundef nonnull @.str.4, i32 noundef 2)
  %.not772 = icmp eq ptr %21, null
  br i1 %.not772, label %.loopexit938, label %.preheader937

.preheader937:                                    ; preds = %.critedge846
  %22 = getelementptr inbounds i8, ptr %21, i64 16
  %23 = load i32, ptr %22, align 8, !tbaa !15
  %.not1033 = icmp eq i32 %23, 0
  br i1 %.not1033, label %.loopexit938, label %.lr.ph954

.lr.ph954:                                        ; preds = %.preheader937
  %24 = getelementptr inbounds i8, ptr %21, i64 24
  %.not840 = icmp eq ptr %20, null
  %25 = getelementptr inbounds i8, ptr %20, i64 16
  br label %26

26:                                               ; preds = %.lr.ph954, %.thread
  %27 = phi i32 [ %23, %.lr.ph954 ], [ %227, %.thread ]
  %.0596953 = phi i16 [ 0, %.lr.ph954 ], [ %228, %.thread ]
  %28 = load ptr, ptr %24, align 8, !tbaa !15
  %29 = zext i16 %.0596953 to i64
  %30 = getelementptr inbounds ptr, ptr %28, i64 %29
  %31 = load ptr, ptr %30, align 8, !tbaa !16
  %.not839 = icmp eq ptr %31, null
  br i1 %.not839, label %.thread, label %32

32:                                               ; preds = %26
  %33 = getelementptr inbounds i8, ptr %31, i64 8
  %34 = load i32, ptr %33, align 8, !tbaa !17
  %35 = icmp eq i32 %34, 5
  br i1 %35, label %36, label %.thread

36:                                               ; preds = %32
  %37 = getelementptr inbounds i8, ptr %31, i64 24
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  %39 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %38) #7
  %40 = trunc i64 %39 to i32
  %41 = icmp ugt i32 %40, 11
  br i1 %41, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %36, %.lr.ph
  %.0603944 = phi i32 [ %84, %.lr.ph ], [ -17973521, %36 ]
  %.0609943 = phi i32 [ %76, %.lr.ph ], [ -1640531527, %36 ]
  %.0709942 = phi i32 [ %80, %.lr.ph ], [ -1640531527, %36 ]
  %.0718941 = phi ptr [ %85, %.lr.ph ], [ %38, %36 ]
  %.0719940 = phi i32 [ %86, %.lr.ph ], [ %40, %36 ]
  %42 = load i32, ptr %.0718941, align 1
  %43 = getelementptr inbounds i8, ptr %.0718941, i64 4
  %44 = load i32, ptr %43, align 1
  %45 = add i32 %44, %.0709942
  %46 = getelementptr inbounds i8, ptr %.0718941, i64 8
  %47 = load i32, ptr %46, align 1
  %48 = add i32 %47, %.0603944
  %.neg913 = add i32 %42, %.0609943
  %49 = add i32 %45, %48
  %50 = sub i32 %.neg913, %49
  %51 = lshr i32 %48, 13
  %52 = xor i32 %50, %51
  %53 = add i32 %48, %52
  %54 = sub i32 %45, %53
  %55 = shl i32 %52, 8
  %56 = xor i32 %54, %55
  %57 = add i32 %52, %56
  %58 = sub i32 %48, %57
  %59 = lshr i32 %56, 13
  %60 = xor i32 %58, %59
  %61 = add i32 %56, %60
  %62 = sub i32 %52, %61
  %63 = lshr i32 %60, 12
  %64 = xor i32 %62, %63
  %65 = add i32 %60, %64
  %66 = sub i32 %56, %65
  %67 = shl i32 %64, 16
  %68 = xor i32 %66, %67
  %69 = add i32 %64, %68
  %70 = sub i32 %60, %69
  %71 = lshr i32 %68, 5
  %72 = xor i32 %70, %71
  %73 = add i32 %68, %72
  %74 = sub i32 %64, %73
  %75 = lshr i32 %72, 3
  %76 = xor i32 %74, %75
  %77 = add i32 %72, %76
  %78 = sub i32 %68, %77
  %79 = shl i32 %76, 10
  %80 = xor i32 %78, %79
  %81 = add i32 %76, %80
  %82 = sub i32 %72, %81
  %83 = lshr i32 %80, 15
  %84 = xor i32 %82, %83
  %85 = getelementptr inbounds i8, ptr %.0718941, i64 12
  %86 = add i32 %.0719940, -12
  %87 = icmp ugt i32 %86, 11
  br i1 %87, label %.lr.ph, label %._crit_edge, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph, %36
  %.0719.lcssa = phi i32 [ %40, %36 ], [ %86, %.lr.ph ]
  %.0718.lcssa = phi ptr [ %38, %36 ], [ %85, %.lr.ph ]
  %.0709.lcssa = phi i32 [ -1640531527, %36 ], [ %80, %.lr.ph ]
  %.0609.lcssa = phi i32 [ -1640531527, %36 ], [ %76, %.lr.ph ]
  %.0603.lcssa = phi i32 [ -17973521, %36 ], [ %84, %.lr.ph ]
  %88 = add i32 %.0603.lcssa, %40
  switch i32 %.0719.lcssa, label %152 [
    i32 11, label %89
    i32 10, label %95
    i32 9, label %101
    i32 8, label %107
    i32 7, label %113
    i32 6, label %119
    i32 5, label %125
    i32 4, label %130
    i32 3, label %136
    i32 2, label %142
    i32 1, label %148
  ]

89:                                               ; preds = %._crit_edge
  %90 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 10
  %91 = load i8, ptr %90, align 1, !tbaa !15
  %92 = zext i8 %91 to i32
  %93 = shl nuw i32 %92, 24
  %94 = add i32 %93, %88
  br label %95

95:                                               ; preds = %89, %._crit_edge
  %.1604 = phi i32 [ %88, %._crit_edge ], [ %94, %89 ]
  %96 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 9
  %97 = load i8, ptr %96, align 1, !tbaa !15
  %98 = zext i8 %97 to i32
  %99 = shl nuw nsw i32 %98, 16
  %100 = add i32 %99, %.1604
  br label %101

101:                                              ; preds = %95, %._crit_edge
  %.2605 = phi i32 [ %88, %._crit_edge ], [ %100, %95 ]
  %102 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 8
  %103 = load i8, ptr %102, align 1, !tbaa !15
  %104 = zext i8 %103 to i32
  %105 = shl nuw nsw i32 %104, 8
  %106 = add i32 %105, %.2605
  br label %107

107:                                              ; preds = %101, %._crit_edge
  %.3606 = phi i32 [ %88, %._crit_edge ], [ %106, %101 ]
  %108 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 7
  %109 = load i8, ptr %108, align 1, !tbaa !15
  %110 = zext i8 %109 to i32
  %111 = shl nuw i32 %110, 24
  %112 = add i32 %111, %.0709.lcssa
  br label %113

113:                                              ; preds = %107, %._crit_edge
  %.1710 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %112, %107 ]
  %.4607 = phi i32 [ %88, %._crit_edge ], [ %.3606, %107 ]
  %114 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 6
  %115 = load i8, ptr %114, align 1, !tbaa !15
  %116 = zext i8 %115 to i32
  %117 = shl nuw nsw i32 %116, 16
  %118 = add i32 %117, %.1710
  br label %119

119:                                              ; preds = %113, %._crit_edge
  %.2711 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %118, %113 ]
  %.5608 = phi i32 [ %88, %._crit_edge ], [ %.4607, %113 ]
  %120 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 5
  %121 = load i8, ptr %120, align 1, !tbaa !15
  %122 = zext i8 %121 to i32
  %123 = shl nuw nsw i32 %122, 8
  %124 = add i32 %123, %.2711
  br label %125

125:                                              ; preds = %119, %._crit_edge
  %.3712 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %124, %119 ]
  %.6 = phi i32 [ %88, %._crit_edge ], [ %.5608, %119 ]
  %126 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 4
  %127 = load i8, ptr %126, align 1, !tbaa !15
  %128 = zext i8 %127 to i32
  %129 = add i32 %.3712, %128
  br label %130

130:                                              ; preds = %125, %._crit_edge
  %.4713 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %129, %125 ]
  %.7 = phi i32 [ %88, %._crit_edge ], [ %.6, %125 ]
  %131 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 3
  %132 = load i8, ptr %131, align 1, !tbaa !15
  %133 = zext i8 %132 to i32
  %134 = shl nuw i32 %133, 24
  %135 = add i32 %134, %.0609.lcssa
  br label %136

136:                                              ; preds = %130, %._crit_edge
  %.5714 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %.4713, %130 ]
  %.1610 = phi i32 [ %.0609.lcssa, %._crit_edge ], [ %135, %130 ]
  %.8 = phi i32 [ %88, %._crit_edge ], [ %.7, %130 ]
  %137 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 2
  %138 = load i8, ptr %137, align 1, !tbaa !15
  %139 = zext i8 %138 to i32
  %140 = shl nuw nsw i32 %139, 16
  %141 = add i32 %140, %.1610
  br label %142

142:                                              ; preds = %136, %._crit_edge
  %.6715 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %.5714, %136 ]
  %.2611 = phi i32 [ %.0609.lcssa, %._crit_edge ], [ %141, %136 ]
  %.9 = phi i32 [ %88, %._crit_edge ], [ %.8, %136 ]
  %143 = getelementptr inbounds i8, ptr %.0718.lcssa, i64 1
  %144 = load i8, ptr %143, align 1, !tbaa !15
  %145 = zext i8 %144 to i32
  %146 = shl nuw nsw i32 %145, 8
  %147 = add i32 %146, %.2611
  br label %148

148:                                              ; preds = %142, %._crit_edge
  %.7716 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %.6715, %142 ]
  %.3612 = phi i32 [ %.0609.lcssa, %._crit_edge ], [ %147, %142 ]
  %.10 = phi i32 [ %88, %._crit_edge ], [ %.9, %142 ]
  %149 = load i8, ptr %.0718.lcssa, align 1, !tbaa !15
  %150 = zext i8 %149 to i32
  %151 = add i32 %.3612, %150
  br label %152

152:                                              ; preds = %._crit_edge, %148
  %.8717 = phi i32 [ %.0709.lcssa, %._crit_edge ], [ %.7716, %148 ]
  %.4613 = phi i32 [ %.0609.lcssa, %._crit_edge ], [ %151, %148 ]
  %.11 = phi i32 [ %88, %._crit_edge ], [ %.10, %148 ]
  %153 = add i32 %.8717, %.11
  %154 = sub i32 %.4613, %153
  %155 = lshr i32 %.11, 13
  %156 = xor i32 %154, %155
  %157 = add i32 %.11, %156
  %158 = sub i32 %.8717, %157
  %159 = shl i32 %156, 8
  %160 = xor i32 %158, %159
  %161 = add i32 %156, %160
  %162 = sub i32 %.11, %161
  %163 = lshr i32 %160, 13
  %164 = xor i32 %162, %163
  %165 = add i32 %160, %164
  %166 = sub i32 %156, %165
  %167 = lshr i32 %164, 12
  %168 = xor i32 %166, %167
  %169 = add i32 %164, %168
  %170 = sub i32 %160, %169
  %171 = shl i32 %168, 16
  %172 = xor i32 %170, %171
  %173 = add i32 %168, %172
  %174 = sub i32 %164, %173
  %175 = lshr i32 %172, 5
  %176 = xor i32 %174, %175
  %177 = add i32 %172, %176
  %178 = sub i32 %168, %177
  %179 = lshr i32 %176, 3
  %180 = xor i32 %178, %179
  %181 = add i32 %176, %180
  %182 = sub i32 %172, %181
  %183 = shl i32 %180, 10
  %184 = xor i32 %182, %183
  %185 = add i32 %180, %184
  %186 = sub i32 %176, %185
  %187 = lshr i32 %184, 15
  %188 = xor i32 %186, %187
  br i1 %.not840, label %.thread, label %189

189:                                              ; preds = %152
  %190 = load ptr, ptr %25, align 8, !tbaa !22
  %191 = getelementptr inbounds i8, ptr %190, i64 8
  %192 = load i32, ptr %191, align 8, !tbaa !26
  %193 = add i32 %192, -1
  %194 = and i32 %193, %188
  %195 = load ptr, ptr %190, align 8, !tbaa !29
  %196 = zext i32 %194 to i64
  %197 = getelementptr inbounds %struct.UT_hash_bucket, ptr %195, i64 %196
  %198 = load ptr, ptr %197, align 8, !tbaa !30
  %.not841 = icmp eq ptr %198, null
  br i1 %.not841, label %.thread, label %.lr.ph952

.lr.ph952:                                        ; preds = %189
  %199 = getelementptr inbounds i8, ptr %190, i64 32
  %200 = load i64, ptr %199, align 8, !tbaa !32
  %201 = sub i64 0, %200
  %202 = getelementptr inbounds i8, ptr %198, i64 %201
  %203 = and i64 %39, 4294967295
  %204 = getelementptr inbounds i8, ptr %190, i64 32
  br label %205

205:                                              ; preds = %220, %.lr.ph952
  %.1600950 = phi ptr [ %202, %.lr.ph952 ], [ %223, %220 ]
  %206 = getelementptr inbounds i8, ptr %.1600950, i64 68
  %207 = load i32, ptr %206, align 4, !tbaa !33
  %208 = icmp eq i32 %207, %188
  br i1 %208, label %209, label %217

209:                                              ; preds = %205
  %210 = getelementptr inbounds i8, ptr %.1600950, i64 64
  %211 = load i32, ptr %210, align 8, !tbaa !34
  %212 = icmp eq i32 %211, %40
  br i1 %212, label %213, label %217

213:                                              ; preds = %209
  %214 = getelementptr inbounds i8, ptr %.1600950, i64 56
  %215 = load ptr, ptr %214, align 8, !tbaa !35
  %bcmp = tail call i32 @bcmp(ptr %215, ptr %38, i64 %203)
  %216 = icmp eq i32 %bcmp, 0
  br i1 %216, label %224, label %217

217:                                              ; preds = %213, %209, %205
  %218 = getelementptr inbounds i8, ptr %.1600950, i64 48
  %219 = load ptr, ptr %218, align 8, !tbaa !36
  %.not843 = icmp eq ptr %219, null
  br i1 %.not843, label %.thread, label %220

220:                                              ; preds = %217
  %221 = load i64, ptr %204, align 8, !tbaa !32
  %222 = sub i64 0, %221
  %223 = getelementptr inbounds i8, ptr %219, i64 %222
  br label %205, !llvm.loop !37

224:                                              ; preds = %213
  %225 = getelementptr inbounds i8, ptr %.1600950, i64 72
  store i32 0, ptr %225, align 8, !tbaa !38
  %226 = getelementptr inbounds i8, ptr %.1600950, i64 76
  store i16 %.0596953, ptr %226, align 4, !tbaa !39
  %.pre = load i32, ptr %22, align 8, !tbaa !15
  br label %.thread

.thread:                                          ; preds = %217, %189, %152, %224, %32, %26
  %227 = phi i32 [ %27, %152 ], [ %.pre, %224 ], [ %27, %32 ], [ %27, %26 ], [ %27, %189 ], [ %27, %217 ]
  %228 = add i16 %.0596953, 1
  %229 = zext i16 %228 to i32
  %230 = icmp ugt i32 %227, %229
  br i1 %230, label %26, label %.loopexit938, !llvm.loop !40

.loopexit938:                                     ; preds = %.thread, %.preheader937, %.critedge846
  %.not773 = icmp eq ptr %20, null
  br i1 %.not773, label %.loopexit936, label %231

231:                                              ; preds = %.loopexit938
  %232 = getelementptr inbounds i8, ptr %20, i64 16
  %233 = getelementptr inbounds i8, ptr %20, i64 16
  br label %.lr.ph970

.preheader935:                                    ; preds = %321
  %234 = shl i32 %.07049751147, 1
  %.not826965 = icmp eq ptr %.2686.ph, null
  br i1 %.not826965, label %.loopexit936.loopexit, label %.lr.ph970

.lr.ph970:                                        ; preds = %231, %.preheader935
  %.07049751147 = phi i32 [ 1, %231 ], [ %234, %.preheader935 ]
  %.06849761146 = phi ptr [ %232, %231 ], [ %.2686.ph, %.preheader935 ]
  %.not1034 = icmp eq i32 %.07049751147, 0
  br label %235

.loopexit934:                                     ; preds = %245
  %.not826 = icmp eq ptr %.2691, null
  br i1 %.not826, label %._crit_edge971, label %235, !llvm.loop !41

235:                                              ; preds = %.lr.ph970, %.loopexit934
  %.0682969 = phi ptr [ null, %.lr.ph970 ], [ %.1683, %.loopexit934 ]
  %.1685968 = phi ptr [ null, %.lr.ph970 ], [ %.2686.ph, %.loopexit934 ]
  %.0693967 = phi ptr [ %.06849761146, %.lr.ph970 ], [ %.2691, %.loopexit934 ]
  %.0705966 = phi i32 [ 0, %.lr.ph970 ], [ %236, %.loopexit934 ]
  %236 = add i32 %.0705966, 1
  br i1 %.not1034, label %.thread853.preheader, label %.lr.ph959

.lr.ph959:                                        ; preds = %235, %240
  %.0689957 = phi ptr [ %244, %240 ], [ %.0693967, %235 ]
  %.0700956 = phi i32 [ %237, %240 ], [ 0, %235 ]
  %237 = add nuw i32 %.0700956, 1
  %238 = getelementptr inbounds i8, ptr %.0689957, i64 16
  %239 = load ptr, ptr %238, align 8, !tbaa !42
  %.not828 = icmp eq ptr %239, null
  br i1 %.not828, label %.thread853.preheader, label %240

240:                                              ; preds = %.lr.ph959
  %241 = load ptr, ptr %233, align 8, !tbaa !22
  %242 = getelementptr inbounds i8, ptr %241, i64 32
  %243 = load i64, ptr %242, align 8, !tbaa !32
  %244 = getelementptr inbounds i8, ptr %239, i64 %243
  %exitcond.not = icmp eq i32 %237, %.07049751147
  br i1 %exitcond.not, label %.thread853.preheader, label %.lr.ph959, !llvm.loop !43

.thread853.preheader:                             ; preds = %240, %.lr.ph959, %235
  %.2702.ph = phi i32 [ 0, %235 ], [ %237, %.lr.ph959 ], [ %.07049751147, %240 ]
  %.2691.ph = phi ptr [ %.0693967, %235 ], [ null, %.lr.ph959 ], [ %244, %240 ]
  br label %.thread853.outer

.thread853.outer:                                 ; preds = %.thread853.outer.backedge, %.thread853.preheader
  %.2702.ph1197 = phi i32 [ %.2702.ph, %.thread853.preheader ], [ %.3703, %.thread853.outer.backedge ]
  %.0698.ph = phi i32 [ %.07049751147, %.thread853.preheader ], [ %.1699, %.thread853.outer.backedge ]
  %.1694.ph = phi ptr [ %.0693967, %.thread853.preheader ], [ %.4697, %.thread853.outer.backedge ]
  %.2691.ph1198 = phi ptr [ %.2691.ph, %.thread853.preheader ], [ %.3692, %.thread853.outer.backedge ]
  %.2686.ph = phi ptr [ %.1685968, %.thread853.preheader ], [ %.2686.ph.be, %.thread853.outer.backedge ]
  %.1683.ph = phi ptr [ %.0682969, %.thread853.preheader ], [ %.0688, %.thread853.outer.backedge ]
  br label %.thread853

.thread853:                                       ; preds = %.thread853.outer, %.thread854.thread
  %.2702 = phi i32 [ %.3703, %.thread854.thread ], [ %.2702.ph1197, %.thread853.outer ]
  %.0698 = phi i32 [ %.1699, %.thread854.thread ], [ %.0698.ph, %.thread853.outer ]
  %.1694 = phi ptr [ %.4697, %.thread854.thread ], [ %.1694.ph, %.thread853.outer ]
  %.2691 = phi ptr [ %.3692, %.thread854.thread ], [ %.2691.ph1198, %.thread853.outer ]
  %.1683 = phi ptr [ %.0688, %.thread854.thread ], [ %.1683.ph, %.thread853.outer ]
  %cond847 = icmp eq i32 %.2702, 0
  br i1 %cond847, label %245, label %259

245:                                              ; preds = %.thread853
  %246 = icmp ne i32 %.0698, 0
  %247 = icmp ne ptr %.2691, null
  %248 = select i1 %246, i1 %247, i1 false
  br i1 %248, label %.critedge, label %.loopexit934

.critedge:                                        ; preds = %245
  %249 = getelementptr inbounds i8, ptr %.2691, i64 16
  %250 = load ptr, ptr %249, align 8, !tbaa !42
  %.not835 = icmp eq ptr %250, null
  br i1 %.not835, label %256, label %251

251:                                              ; preds = %.critedge
  %252 = load ptr, ptr %233, align 8, !tbaa !22
  %253 = getelementptr inbounds i8, ptr %252, i64 32
  %254 = load i64, ptr %253, align 8, !tbaa !32
  %255 = getelementptr inbounds i8, ptr %250, i64 %254
  br label %256

256:                                              ; preds = %.critedge, %251
  %257 = phi ptr [ %255, %251 ], [ null, %.critedge ]
  %258 = add i32 %.0698, -1
  br label %304

259:                                              ; preds = %.thread853
  %260 = icmp eq i32 %.0698, 0
  %261 = icmp eq ptr %.2691, null
  %or.cond5 = select i1 %260, i1 true, i1 %261
  br i1 %or.cond5, label %262, label %273

262:                                              ; preds = %259
  %.not833 = icmp eq ptr %.1694, null
  br i1 %.not833, label %271, label %263

263:                                              ; preds = %262
  %264 = getelementptr inbounds i8, ptr %.1694, i64 16
  %265 = load ptr, ptr %264, align 8, !tbaa !42
  %.not834 = icmp eq ptr %265, null
  br i1 %.not834, label %271, label %266

266:                                              ; preds = %263
  %267 = load ptr, ptr %233, align 8, !tbaa !22
  %268 = getelementptr inbounds i8, ptr %267, i64 32
  %269 = load i64, ptr %268, align 8, !tbaa !32
  %270 = getelementptr inbounds i8, ptr %265, i64 %269
  br label %271

271:                                              ; preds = %266, %263, %262
  %.2695 = phi ptr [ null, %262 ], [ %270, %266 ], [ null, %263 ]
  %272 = add i32 %.2702, -1
  br label %304

273:                                              ; preds = %259
  %274 = load ptr, ptr %233, align 8, !tbaa !22
  %275 = getelementptr inbounds i8, ptr %274, i64 32
  %276 = load i64, ptr %275, align 8, !tbaa !32
  %277 = sub i64 0, %276
  %278 = getelementptr inbounds i8, ptr %.1694, i64 %277
  %279 = getelementptr inbounds i8, ptr %.2691, i64 %277
  %280 = tail call i32 @by_lookup_order(ptr noundef %278, ptr noundef %279)
  %281 = icmp slt i32 %280, 1
  br i1 %281, label %282, label %293

282:                                              ; preds = %273
  %.not831 = icmp eq ptr %.1694, null
  br i1 %.not831, label %291, label %283

283:                                              ; preds = %282
  %284 = getelementptr inbounds i8, ptr %.1694, i64 16
  %285 = load ptr, ptr %284, align 8, !tbaa !42
  %.not832 = icmp eq ptr %285, null
  br i1 %.not832, label %291, label %286

286:                                              ; preds = %283
  %287 = load ptr, ptr %233, align 8, !tbaa !22
  %288 = getelementptr inbounds i8, ptr %287, i64 32
  %289 = load i64, ptr %288, align 8, !tbaa !32
  %290 = getelementptr inbounds i8, ptr %285, i64 %289
  br label %291

291:                                              ; preds = %286, %283, %282
  %.3696 = phi ptr [ null, %282 ], [ %290, %286 ], [ null, %283 ]
  %292 = add i32 %.2702, -1
  br label %304

293:                                              ; preds = %273
  %294 = getelementptr inbounds i8, ptr %.2691, i64 16
  %295 = load ptr, ptr %294, align 8, !tbaa !42
  %.not830 = icmp eq ptr %295, null
  br i1 %.not830, label %301, label %296

296:                                              ; preds = %293
  %297 = load ptr, ptr %233, align 8, !tbaa !22
  %298 = getelementptr inbounds i8, ptr %297, i64 32
  %299 = load i64, ptr %298, align 8, !tbaa !32
  %300 = getelementptr inbounds i8, ptr %295, i64 %299
  br label %301

301:                                              ; preds = %293, %296
  %302 = phi ptr [ %300, %296 ], [ null, %293 ]
  %303 = add i32 %.0698, -1
  br label %304

304:                                              ; preds = %271, %301, %291, %256
  %.3703 = phi i32 [ 0, %256 ], [ %272, %271 ], [ %292, %291 ], [ %.2702, %301 ]
  %.1699 = phi i32 [ %258, %256 ], [ %.0698, %271 ], [ %.0698, %291 ], [ %303, %301 ]
  %.4697 = phi ptr [ %.1694, %256 ], [ %.2695, %271 ], [ %.3696, %291 ], [ %.1694, %301 ]
  %.3692 = phi ptr [ %257, %256 ], [ %.2691, %271 ], [ %.2691, %291 ], [ %302, %301 ]
  %.0688 = phi ptr [ %.2691, %256 ], [ %.1694, %271 ], [ %.1694, %291 ], [ %.2691, %301 ]
  %.not836 = icmp eq ptr %.1683, null
  %.not838 = icmp eq ptr %.0688, null
  br i1 %.not836, label %307, label %305

305:                                              ; preds = %304
  br i1 %.not838, label %.thread854.thread, label %308

.thread854.thread:                                ; preds = %305
  %306 = getelementptr inbounds i8, ptr %.1683, i64 16
  store ptr null, ptr %306, align 8, !tbaa !42
  br label %.thread853, !llvm.loop !44

307:                                              ; preds = %304
  br i1 %.not838, label %.thread853.outer.backedge, label %316

308:                                              ; preds = %305
  %309 = load ptr, ptr %233, align 8, !tbaa !22
  %310 = getelementptr inbounds i8, ptr %309, i64 32
  %311 = load i64, ptr %310, align 8, !tbaa !32
  %312 = sub i64 0, %311
  %313 = getelementptr inbounds i8, ptr %.0688, i64 %312
  %314 = getelementptr inbounds i8, ptr %.1683, i64 16
  store ptr %313, ptr %314, align 8, !tbaa !42
  %315 = getelementptr inbounds i8, ptr %.1683, i64 %312
  br label %316

316:                                              ; preds = %307, %308
  %.3687857862 = phi ptr [ %.2686.ph, %308 ], [ %.0688, %307 ]
  %317 = phi ptr [ %315, %308 ], [ null, %307 ]
  %318 = getelementptr inbounds i8, ptr %.0688, i64 8
  store ptr %317, ptr %318, align 8, !tbaa !45
  br label %.thread853.outer.backedge

.thread853.outer.backedge:                        ; preds = %316, %307
  %.2686.ph.be = phi ptr [ null, %307 ], [ %.3687857862, %316 ]
  br label %.thread853.outer, !llvm.loop !44

._crit_edge971:                                   ; preds = %.loopexit934
  %.not827 = icmp eq ptr %.1683, null
  br i1 %.not827, label %321, label %319

319:                                              ; preds = %._crit_edge971
  %320 = getelementptr inbounds i8, ptr %.1683, i64 16
  store ptr null, ptr %320, align 8, !tbaa !42
  br label %321

321:                                              ; preds = %319, %._crit_edge971
  %.0682.lcssa1079 = phi ptr [ %.1683, %319 ], [ null, %._crit_edge971 ]
  %322 = icmp ult i32 %236, 2
  br i1 %322, label %.loopexit936.loopexit, label %.preheader935

.loopexit936.loopexit:                            ; preds = %.preheader935, %321
  %.1685.lcssa10781085 = phi ptr [ %.2686.ph, %321 ], [ null, %.preheader935 ]
  %.0682.lcssa10791084 = phi ptr [ %.0682.lcssa1079, %321 ], [ null, %.preheader935 ]
  %323 = getelementptr inbounds i8, ptr %20, i64 16
  %324 = load ptr, ptr %323, align 8, !tbaa !22
  %325 = getelementptr inbounds i8, ptr %324, i64 24
  store ptr %.0682.lcssa10791084, ptr %325, align 8, !tbaa !46
  %326 = getelementptr inbounds i8, ptr %324, i64 32
  %327 = load i64, ptr %326, align 8, !tbaa !32
  %328 = sub i64 0, %327
  %329 = getelementptr inbounds i8, ptr %.1685.lcssa10781085, i64 %328
  br label %.loopexit936

.loopexit936:                                     ; preds = %.loopexit936.loopexit, %.loopexit938
  %.2 = phi ptr [ null, %.loopexit938 ], [ %329, %.loopexit936.loopexit ]
  %330 = tail call ptr @figureOutFeaturesFromJSON(ptr noundef nonnull %9, ptr noundef %.2, ptr noundef %2, ptr noundef %1)
  %.not775 = icmp eq ptr %330, null
  br i1 %.not775, label %.loopexit933, label %331

331:                                              ; preds = %.loopexit936
  %332 = getelementptr inbounds i8, ptr %330, i64 24
  %333 = getelementptr inbounds i8, ptr %330, i64 24
  br label %.lr.ph993

.preheader932:                                    ; preds = %421
  %334 = shl i32 %.06719991149, 1
  %.not813988 = icmp eq ptr %.2653.ph, null
  br i1 %.not813988, label %.loopexit933.loopexit, label %.lr.ph993

.lr.ph993:                                        ; preds = %331, %.preheader932
  %.06719991149 = phi i32 [ 1, %331 ], [ %334, %.preheader932 ]
  %.065110001148 = phi ptr [ %332, %331 ], [ %.2653.ph, %.preheader932 ]
  %.not1035 = icmp eq i32 %.06719991149, 0
  br label %335

.loopexit931:                                     ; preds = %345
  %.not813 = icmp eq ptr %.2658, null
  br i1 %.not813, label %._crit_edge994, label %335, !llvm.loop !47

335:                                              ; preds = %.lr.ph993, %.loopexit931
  %.0649992 = phi ptr [ null, %.lr.ph993 ], [ %.1650, %.loopexit931 ]
  %.1652991 = phi ptr [ null, %.lr.ph993 ], [ %.2653.ph, %.loopexit931 ]
  %.0660990 = phi ptr [ %.065110001148, %.lr.ph993 ], [ %.2658, %.loopexit931 ]
  %.0672989 = phi i32 [ 0, %.lr.ph993 ], [ %336, %.loopexit931 ]
  %336 = add i32 %.0672989, 1
  br i1 %.not1035, label %.thread863.preheader, label %.lr.ph982

.lr.ph982:                                        ; preds = %335, %340
  %.0656980 = phi ptr [ %344, %340 ], [ %.0660990, %335 ]
  %.0667979 = phi i32 [ %337, %340 ], [ 0, %335 ]
  %337 = add nuw i32 %.0667979, 1
  %338 = getelementptr inbounds i8, ptr %.0656980, i64 16
  %339 = load ptr, ptr %338, align 8, !tbaa !42
  %.not815 = icmp eq ptr %339, null
  br i1 %.not815, label %.thread863.preheader, label %340

340:                                              ; preds = %.lr.ph982
  %341 = load ptr, ptr %333, align 8, !tbaa !48
  %342 = getelementptr inbounds i8, ptr %341, i64 32
  %343 = load i64, ptr %342, align 8, !tbaa !32
  %344 = getelementptr inbounds i8, ptr %339, i64 %343
  %exitcond1048.not = icmp eq i32 %337, %.06719991149
  br i1 %exitcond1048.not, label %.thread863.preheader, label %.lr.ph982, !llvm.loop !50

.thread863.preheader:                             ; preds = %340, %.lr.ph982, %335
  %.2669.ph = phi i32 [ 0, %335 ], [ %337, %.lr.ph982 ], [ %.06719991149, %340 ]
  %.2658.ph = phi ptr [ %.0660990, %335 ], [ null, %.lr.ph982 ], [ %344, %340 ]
  br label %.thread863.outer

.thread863.outer:                                 ; preds = %.thread863.outer.backedge, %.thread863.preheader
  %.2669.ph1174 = phi i32 [ %.2669.ph, %.thread863.preheader ], [ %.3670, %.thread863.outer.backedge ]
  %.0665.ph = phi i32 [ %.06719991149, %.thread863.preheader ], [ %.1666, %.thread863.outer.backedge ]
  %.1661.ph = phi ptr [ %.0660990, %.thread863.preheader ], [ %.4664, %.thread863.outer.backedge ]
  %.2658.ph1175 = phi ptr [ %.2658.ph, %.thread863.preheader ], [ %.3659, %.thread863.outer.backedge ]
  %.2653.ph = phi ptr [ %.1652991, %.thread863.preheader ], [ %.2653.ph.be, %.thread863.outer.backedge ]
  %.1650.ph = phi ptr [ %.0649992, %.thread863.preheader ], [ %.0655, %.thread863.outer.backedge ]
  br label %.thread863

.thread863:                                       ; preds = %.thread863.outer, %.thread864.thread
  %.2669 = phi i32 [ %.3670, %.thread864.thread ], [ %.2669.ph1174, %.thread863.outer ]
  %.0665 = phi i32 [ %.1666, %.thread864.thread ], [ %.0665.ph, %.thread863.outer ]
  %.1661 = phi ptr [ %.4664, %.thread864.thread ], [ %.1661.ph, %.thread863.outer ]
  %.2658 = phi ptr [ %.3659, %.thread864.thread ], [ %.2658.ph1175, %.thread863.outer ]
  %.1650 = phi ptr [ %.0655, %.thread864.thread ], [ %.1650.ph, %.thread863.outer ]
  %cond848 = icmp eq i32 %.2669, 0
  br i1 %cond848, label %345, label %359

345:                                              ; preds = %.thread863
  %346 = icmp ne i32 %.0665, 0
  %347 = icmp ne ptr %.2658, null
  %348 = select i1 %346, i1 %347, i1 false
  br i1 %348, label %.critedge7, label %.loopexit931

.critedge7:                                       ; preds = %345
  %349 = getelementptr inbounds i8, ptr %.2658, i64 16
  %350 = load ptr, ptr %349, align 8, !tbaa !42
  %.not822 = icmp eq ptr %350, null
  br i1 %.not822, label %356, label %351

351:                                              ; preds = %.critedge7
  %352 = load ptr, ptr %333, align 8, !tbaa !48
  %353 = getelementptr inbounds i8, ptr %352, i64 32
  %354 = load i64, ptr %353, align 8, !tbaa !32
  %355 = getelementptr inbounds i8, ptr %350, i64 %354
  br label %356

356:                                              ; preds = %.critedge7, %351
  %357 = phi ptr [ %355, %351 ], [ null, %.critedge7 ]
  %358 = add i32 %.0665, -1
  br label %404

359:                                              ; preds = %.thread863
  %360 = icmp eq i32 %.0665, 0
  %361 = icmp eq ptr %.2658, null
  %or.cond9 = select i1 %360, i1 true, i1 %361
  br i1 %or.cond9, label %362, label %373

362:                                              ; preds = %359
  %.not820 = icmp eq ptr %.1661, null
  br i1 %.not820, label %371, label %363

363:                                              ; preds = %362
  %364 = getelementptr inbounds i8, ptr %.1661, i64 16
  %365 = load ptr, ptr %364, align 8, !tbaa !42
  %.not821 = icmp eq ptr %365, null
  br i1 %.not821, label %371, label %366

366:                                              ; preds = %363
  %367 = load ptr, ptr %333, align 8, !tbaa !48
  %368 = getelementptr inbounds i8, ptr %367, i64 32
  %369 = load i64, ptr %368, align 8, !tbaa !32
  %370 = getelementptr inbounds i8, ptr %365, i64 %369
  br label %371

371:                                              ; preds = %366, %363, %362
  %.2662 = phi ptr [ null, %362 ], [ %370, %366 ], [ null, %363 ]
  %372 = add i32 %.2669, -1
  br label %404

373:                                              ; preds = %359
  %374 = load ptr, ptr %333, align 8, !tbaa !48
  %375 = getelementptr inbounds i8, ptr %374, i64 32
  %376 = load i64, ptr %375, align 8, !tbaa !32
  %377 = sub i64 0, %376
  %378 = getelementptr inbounds i8, ptr %.1661, i64 %377
  %379 = getelementptr inbounds i8, ptr %.2658, i64 %377
  %380 = tail call i32 @by_feature_name(ptr noundef %378, ptr noundef %379)
  %381 = icmp slt i32 %380, 1
  br i1 %381, label %382, label %393

382:                                              ; preds = %373
  %.not818 = icmp eq ptr %.1661, null
  br i1 %.not818, label %391, label %383

383:                                              ; preds = %382
  %384 = getelementptr inbounds i8, ptr %.1661, i64 16
  %385 = load ptr, ptr %384, align 8, !tbaa !42
  %.not819 = icmp eq ptr %385, null
  br i1 %.not819, label %391, label %386

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

391:                                              ; preds = %386, %383, %382
  %.3663 = phi ptr [ null, %382 ], [ %390, %386 ], [ null, %383 ]
  %392 = add i32 %.2669, -1
  br label %404

393:                                              ; preds = %373
  %394 = getelementptr inbounds i8, ptr %.2658, i64 16
  %395 = load ptr, ptr %394, align 8, !tbaa !42
  %.not817 = icmp eq ptr %395, null
  br i1 %.not817, label %401, label %396

396:                                              ; preds = %393
  %397 = load ptr, ptr %333, align 8, !tbaa !48
  %398 = getelementptr inbounds i8, ptr %397, i64 32
  %399 = load i64, ptr %398, align 8, !tbaa !32
  %400 = getelementptr inbounds i8, ptr %395, i64 %399
  br label %401

401:                                              ; preds = %393, %396
  %402 = phi ptr [ %400, %396 ], [ null, %393 ]
  %403 = add i32 %.0665, -1
  br label %404

404:                                              ; preds = %371, %401, %391, %356
  %.3670 = phi i32 [ 0, %356 ], [ %372, %371 ], [ %392, %391 ], [ %.2669, %401 ]
  %.1666 = phi i32 [ %358, %356 ], [ %.0665, %371 ], [ %.0665, %391 ], [ %403, %401 ]
  %.4664 = phi ptr [ %.1661, %356 ], [ %.2662, %371 ], [ %.3663, %391 ], [ %.1661, %401 ]
  %.3659 = phi ptr [ %357, %356 ], [ %.2658, %371 ], [ %.2658, %391 ], [ %402, %401 ]
  %.0655 = phi ptr [ %.2658, %356 ], [ %.1661, %371 ], [ %.1661, %391 ], [ %.2658, %401 ]
  %.not823 = icmp eq ptr %.1650, null
  %.not825 = icmp eq ptr %.0655, null
  br i1 %.not823, label %407, label %405

405:                                              ; preds = %404
  br i1 %.not825, label %.thread864.thread, label %408

.thread864.thread:                                ; preds = %405
  %406 = getelementptr inbounds i8, ptr %.1650, i64 16
  store ptr null, ptr %406, align 8, !tbaa !42
  br label %.thread863, !llvm.loop !51

407:                                              ; preds = %404
  br i1 %.not825, label %.thread863.outer.backedge, label %416

408:                                              ; preds = %405
  %409 = load ptr, ptr %333, align 8, !tbaa !48
  %410 = getelementptr inbounds i8, ptr %409, i64 32
  %411 = load i64, ptr %410, align 8, !tbaa !32
  %412 = sub i64 0, %411
  %413 = getelementptr inbounds i8, ptr %.0655, i64 %412
  %414 = getelementptr inbounds i8, ptr %.1650, i64 16
  store ptr %413, ptr %414, align 8, !tbaa !42
  %415 = getelementptr inbounds i8, ptr %.1650, i64 %412
  br label %416

416:                                              ; preds = %407, %408
  %.3654867872 = phi ptr [ %.2653.ph, %408 ], [ %.0655, %407 ]
  %417 = phi ptr [ %415, %408 ], [ null, %407 ]
  %418 = getelementptr inbounds i8, ptr %.0655, i64 8
  store ptr %417, ptr %418, align 8, !tbaa !45
  br label %.thread863.outer.backedge

.thread863.outer.backedge:                        ; preds = %416, %407
  %.2653.ph.be = phi ptr [ null, %407 ], [ %.3654867872, %416 ]
  br label %.thread863.outer, !llvm.loop !51

._crit_edge994:                                   ; preds = %.loopexit931
  %.not814 = icmp eq ptr %.1650, null
  br i1 %.not814, label %421, label %419

419:                                              ; preds = %._crit_edge994
  %420 = getelementptr inbounds i8, ptr %.1650, i64 16
  store ptr null, ptr %420, align 8, !tbaa !42
  br label %421

421:                                              ; preds = %419, %._crit_edge994
  %.0649.lcssa1097 = phi ptr [ %.1650, %419 ], [ null, %._crit_edge994 ]
  %422 = icmp ult i32 %336, 2
  br i1 %422, label %.loopexit933.loopexit, label %.preheader932

.loopexit933.loopexit:                            ; preds = %.preheader932, %421
  %.1652.lcssa10961103 = phi ptr [ %.2653.ph, %421 ], [ null, %.preheader932 ]
  %.0649.lcssa10971102 = phi ptr [ %.0649.lcssa1097, %421 ], [ null, %.preheader932 ]
  %423 = getelementptr inbounds i8, ptr %330, i64 24
  %424 = load ptr, ptr %423, align 8, !tbaa !48
  %425 = getelementptr inbounds i8, ptr %424, i64 24
  store ptr %.0649.lcssa10971102, ptr %425, align 8, !tbaa !46
  %426 = getelementptr inbounds i8, ptr %424, i64 32
  %427 = load i64, ptr %426, align 8, !tbaa !32
  %428 = sub i64 0, %427
  %429 = getelementptr inbounds i8, ptr %.1652.lcssa10961103, i64 %428
  br label %.loopexit933

.loopexit933:                                     ; preds = %.loopexit933.loopexit, %.loopexit936
  %.2678 = phi ptr [ null, %.loopexit936 ], [ %429, %.loopexit933.loopexit ]
  %430 = tail call ptr @figureOutLanguagesFromJson(ptr noundef nonnull %8, ptr noundef %.2678, ptr noundef %2, ptr noundef %1)
  %.not777 = icmp eq ptr %430, null
  br i1 %.not777, label %.loopexit930, label %431

431:                                              ; preds = %.loopexit933
  %432 = getelementptr inbounds i8, ptr %430, i64 16
  %433 = getelementptr inbounds i8, ptr %430, i64 16
  br label %.lr.ph1016

.preheader:                                       ; preds = %521
  %434 = shl i32 %.063810221151, 1
  %.not8001011 = icmp eq ptr %.2620.ph, null
  br i1 %.not8001011, label %.loopexit930.loopexit, label %.lr.ph1016

.lr.ph1016:                                       ; preds = %431, %.preheader
  %.063810221151 = phi i32 [ 1, %431 ], [ %434, %.preheader ]
  %.061810231150 = phi ptr [ %432, %431 ], [ %.2620.ph, %.preheader ]
  %.not1036 = icmp eq i32 %.063810221151, 0
  br label %435

.loopexit:                                        ; preds = %445
  %.not800 = icmp eq ptr %.2625, null
  br i1 %.not800, label %._crit_edge1017, label %435, !llvm.loop !52

435:                                              ; preds = %.lr.ph1016, %.loopexit
  %.06161015 = phi ptr [ null, %.lr.ph1016 ], [ %.1617, %.loopexit ]
  %.16191014 = phi ptr [ null, %.lr.ph1016 ], [ %.2620.ph, %.loopexit ]
  %.06271013 = phi ptr [ %.061810231150, %.lr.ph1016 ], [ %.2625, %.loopexit ]
  %.06391012 = phi i32 [ 0, %.lr.ph1016 ], [ %436, %.loopexit ]
  %436 = add i32 %.06391012, 1
  br i1 %.not1036, label %.thread873.preheader, label %.lr.ph1005

.lr.ph1005:                                       ; preds = %435, %440
  %.06231003 = phi ptr [ %444, %440 ], [ %.06271013, %435 ]
  %.06341002 = phi i32 [ %437, %440 ], [ 0, %435 ]
  %437 = add nuw i32 %.06341002, 1
  %438 = getelementptr inbounds i8, ptr %.06231003, i64 16
  %439 = load ptr, ptr %438, align 8, !tbaa !42
  %.not802 = icmp eq ptr %439, null
  br i1 %.not802, label %.thread873.preheader, label %440

440:                                              ; preds = %.lr.ph1005
  %441 = load ptr, ptr %433, align 8, !tbaa !53
  %442 = getelementptr inbounds i8, ptr %441, i64 32
  %443 = load i64, ptr %442, align 8, !tbaa !32
  %444 = getelementptr inbounds i8, ptr %439, i64 %443
  %exitcond1049.not = icmp eq i32 %437, %.063810221151
  br i1 %exitcond1049.not, label %.thread873.preheader, label %.lr.ph1005, !llvm.loop !55

.thread873.preheader:                             ; preds = %440, %.lr.ph1005, %435
  %.2636.ph = phi i32 [ 0, %435 ], [ %437, %.lr.ph1005 ], [ %.063810221151, %440 ]
  %.2625.ph = phi ptr [ %.06271013, %435 ], [ null, %.lr.ph1005 ], [ %444, %440 ]
  br label %.thread873.outer

.thread873.outer:                                 ; preds = %.thread873.outer.backedge, %.thread873.preheader
  %.2636.ph1152 = phi i32 [ %.2636.ph, %.thread873.preheader ], [ %.3637, %.thread873.outer.backedge ]
  %.0632.ph = phi i32 [ %.063810221151, %.thread873.preheader ], [ %.1633, %.thread873.outer.backedge ]
  %.1628.ph = phi ptr [ %.06271013, %.thread873.preheader ], [ %.4631, %.thread873.outer.backedge ]
  %.2625.ph1153 = phi ptr [ %.2625.ph, %.thread873.preheader ], [ %.3626, %.thread873.outer.backedge ]
  %.2620.ph = phi ptr [ %.16191014, %.thread873.preheader ], [ %.2620.ph.be, %.thread873.outer.backedge ]
  %.1617.ph = phi ptr [ %.06161015, %.thread873.preheader ], [ %.0622, %.thread873.outer.backedge ]
  br label %.thread873

.thread873:                                       ; preds = %.thread873.outer, %.thread874.thread
  %.2636 = phi i32 [ %.3637, %.thread874.thread ], [ %.2636.ph1152, %.thread873.outer ]
  %.0632 = phi i32 [ %.1633, %.thread874.thread ], [ %.0632.ph, %.thread873.outer ]
  %.1628 = phi ptr [ %.4631, %.thread874.thread ], [ %.1628.ph, %.thread873.outer ]
  %.2625 = phi ptr [ %.3626, %.thread874.thread ], [ %.2625.ph1153, %.thread873.outer ]
  %.1617 = phi ptr [ %.0622, %.thread874.thread ], [ %.1617.ph, %.thread873.outer ]
  %cond849 = icmp eq i32 %.2636, 0
  br i1 %cond849, label %445, label %459

445:                                              ; preds = %.thread873
  %446 = icmp ne i32 %.0632, 0
  %447 = icmp ne ptr %.2625, null
  %448 = select i1 %446, i1 %447, i1 false
  br i1 %448, label %.critedge11, label %.loopexit

.critedge11:                                      ; preds = %445
  %449 = getelementptr inbounds i8, ptr %.2625, i64 16
  %450 = load ptr, ptr %449, align 8, !tbaa !42
  %.not809 = icmp eq ptr %450, null
  br i1 %.not809, label %456, label %451

451:                                              ; preds = %.critedge11
  %452 = load ptr, ptr %433, align 8, !tbaa !53
  %453 = getelementptr inbounds i8, ptr %452, i64 32
  %454 = load i64, ptr %453, align 8, !tbaa !32
  %455 = getelementptr inbounds i8, ptr %450, i64 %454
  br label %456

456:                                              ; preds = %.critedge11, %451
  %457 = phi ptr [ %455, %451 ], [ null, %.critedge11 ]
  %458 = add i32 %.0632, -1
  br label %504

459:                                              ; preds = %.thread873
  %460 = icmp eq i32 %.0632, 0
  %461 = icmp eq ptr %.2625, null
  %or.cond13 = select i1 %460, i1 true, i1 %461
  br i1 %or.cond13, label %462, label %473

462:                                              ; preds = %459
  %.not807 = icmp eq ptr %.1628, null
  br i1 %.not807, label %471, label %463

463:                                              ; preds = %462
  %464 = getelementptr inbounds i8, ptr %.1628, i64 16
  %465 = load ptr, ptr %464, align 8, !tbaa !42
  %.not808 = icmp eq ptr %465, null
  br i1 %.not808, label %471, label %466

466:                                              ; preds = %463
  %467 = load ptr, ptr %433, align 8, !tbaa !53
  %468 = getelementptr inbounds i8, ptr %467, i64 32
  %469 = load i64, ptr %468, align 8, !tbaa !32
  %470 = getelementptr inbounds i8, ptr %465, i64 %469
  br label %471

471:                                              ; preds = %466, %463, %462
  %.2629 = phi ptr [ null, %462 ], [ %470, %466 ], [ null, %463 ]
  %472 = add i32 %.2636, -1
  br label %504

473:                                              ; preds = %459
  %474 = load ptr, ptr %433, align 8, !tbaa !53
  %475 = getelementptr inbounds i8, ptr %474, i64 32
  %476 = load i64, ptr %475, align 8, !tbaa !32
  %477 = sub i64 0, %476
  %478 = getelementptr inbounds i8, ptr %.1628, i64 %477
  %479 = getelementptr inbounds i8, ptr %.2625, i64 %477
  %480 = tail call i32 @by_language_name(ptr noundef %478, ptr noundef %479)
  %481 = icmp slt i32 %480, 1
  br i1 %481, label %482, label %493

482:                                              ; preds = %473
  %.not805 = icmp eq ptr %.1628, null
  br i1 %.not805, label %491, label %483

483:                                              ; preds = %482
  %484 = getelementptr inbounds i8, ptr %.1628, i64 16
  %485 = load ptr, ptr %484, align 8, !tbaa !42
  %.not806 = icmp eq ptr %485, null
  br i1 %.not806, label %491, label %486

486:                                              ; preds = %483
  %487 = load ptr, ptr %433, align 8, !tbaa !53
  %488 = getelementptr inbounds i8, ptr %487, i64 32
  %489 = load i64, ptr %488, align 8, !tbaa !32
  %490 = getelementptr inbounds i8, ptr %485, i64 %489
  br label %491

491:                                              ; preds = %486, %483, %482
  %.3630 = phi ptr [ null, %482 ], [ %490, %486 ], [ null, %483 ]
  %492 = add i32 %.2636, -1
  br label %504

493:                                              ; preds = %473
  %494 = getelementptr inbounds i8, ptr %.2625, i64 16
  %495 = load ptr, ptr %494, align 8, !tbaa !42
  %.not804 = icmp eq ptr %495, null
  br i1 %.not804, label %501, label %496

496:                                              ; preds = %493
  %497 = load ptr, ptr %433, align 8, !tbaa !53
  %498 = getelementptr inbounds i8, ptr %497, i64 32
  %499 = load i64, ptr %498, align 8, !tbaa !32
  %500 = getelementptr inbounds i8, ptr %495, i64 %499
  br label %501

501:                                              ; preds = %493, %496
  %502 = phi ptr [ %500, %496 ], [ null, %493 ]
  %503 = add i32 %.0632, -1
  br label %504

504:                                              ; preds = %471, %501, %491, %456
  %.3637 = phi i32 [ 0, %456 ], [ %472, %471 ], [ %492, %491 ], [ %.2636, %501 ]
  %.1633 = phi i32 [ %458, %456 ], [ %.0632, %471 ], [ %.0632, %491 ], [ %503, %501 ]
  %.4631 = phi ptr [ %.1628, %456 ], [ %.2629, %471 ], [ %.3630, %491 ], [ %.1628, %501 ]
  %.3626 = phi ptr [ %457, %456 ], [ %.2625, %471 ], [ %.2625, %491 ], [ %502, %501 ]
  %.0622 = phi ptr [ %.2625, %456 ], [ %.1628, %471 ], [ %.1628, %491 ], [ %.2625, %501 ]
  %.not810 = icmp eq ptr %.1617, null
  %.not812 = icmp eq ptr %.0622, null
  br i1 %.not810, label %507, label %505

505:                                              ; preds = %504
  br i1 %.not812, label %.thread874.thread, label %508

.thread874.thread:                                ; preds = %505
  %506 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr null, ptr %506, align 8, !tbaa !42
  br label %.thread873, !llvm.loop !56

507:                                              ; preds = %504
  br i1 %.not812, label %.thread873.outer.backedge, label %516

508:                                              ; preds = %505
  %509 = load ptr, ptr %433, align 8, !tbaa !53
  %510 = getelementptr inbounds i8, ptr %509, i64 32
  %511 = load i64, ptr %510, align 8, !tbaa !32
  %512 = sub i64 0, %511
  %513 = getelementptr inbounds i8, ptr %.0622, i64 %512
  %514 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr %513, ptr %514, align 8, !tbaa !42
  %515 = getelementptr inbounds i8, ptr %.1617, i64 %512
  br label %516

516:                                              ; preds = %507, %508
  %.3621877882 = phi ptr [ %.2620.ph, %508 ], [ %.0622, %507 ]
  %517 = phi ptr [ %515, %508 ], [ null, %507 ]
  %518 = getelementptr inbounds i8, ptr %.0622, i64 8
  store ptr %517, ptr %518, align 8, !tbaa !45
  br label %.thread873.outer.backedge

.thread873.outer.backedge:                        ; preds = %516, %507
  %.2620.ph.be = phi ptr [ null, %507 ], [ %.3621877882, %516 ]
  br label %.thread873.outer, !llvm.loop !56

._crit_edge1017:                                  ; preds = %.loopexit
  %.not801 = icmp eq ptr %.1617, null
  br i1 %.not801, label %521, label %519

519:                                              ; preds = %._crit_edge1017
  %520 = getelementptr inbounds i8, ptr %.1617, i64 16
  store ptr null, ptr %520, align 8, !tbaa !42
  br label %521

521:                                              ; preds = %519, %._crit_edge1017
  %.0616.lcssa1115 = phi ptr [ %.1617, %519 ], [ null, %._crit_edge1017 ]
  %522 = icmp ult i32 %436, 2
  br i1 %522, label %.loopexit930.loopexit, label %.preheader

.loopexit930.loopexit:                            ; preds = %.preheader, %521
  %.1619.lcssa11141121 = phi ptr [ %.2620.ph, %521 ], [ null, %.preheader ]
  %.0616.lcssa11151120 = phi ptr [ %.0616.lcssa1115, %521 ], [ null, %.preheader ]
  %523 = getelementptr inbounds i8, ptr %430, i64 16
  %524 = load ptr, ptr %523, align 8, !tbaa !53
  %525 = getelementptr inbounds i8, ptr %524, i64 24
  store ptr %.0616.lcssa11151120, ptr %525, align 8, !tbaa !46
  %526 = getelementptr inbounds i8, ptr %524, i64 32
  %527 = load i64, ptr %526, align 8, !tbaa !32
  %528 = sub i64 0, %527
  %529 = getelementptr inbounds i8, ptr %.1619.lcssa11141121, i64 %528
  br label %.loopexit930

.loopexit930:                                     ; preds = %.loopexit930.loopexit, %.loopexit933
  %.2645 = phi ptr [ null, %.loopexit933 ], [ %529, %.loopexit930.loopexit ]
  %.not779 = icmp eq ptr %.2, null
  br i1 %.not779, label %.thread886, label %530

530:                                              ; preds = %.loopexit930
  %531 = getelementptr inbounds i8, ptr %.2, i64 16
  %532 = load ptr, ptr %531, align 8, !tbaa !22
  %533 = getelementptr inbounds i8, ptr %532, i64 16
  %534 = load i32, ptr %533, align 8, !tbaa !57
  %535 = icmp ne i32 %534, 0
  %536 = icmp ne ptr %.2678, null
  %or.cond15 = and i1 %536, %535
  br i1 %or.cond15, label %537, label %.thread886

537:                                              ; preds = %530
  %538 = getelementptr inbounds i8, ptr %.2678, i64 24
  %539 = load ptr, ptr %538, align 8, !tbaa !48
  %540 = getelementptr inbounds i8, ptr %539, i64 16
  %541 = load i32, ptr %540, align 8, !tbaa !57
  %542 = icmp ne i32 %541, 0
  %543 = icmp ne ptr %.2645, null
  %or.cond17 = select i1 %542, i1 %543, i1 false
  br i1 %or.cond17, label %544, label %.thread886

544:                                              ; preds = %537
  %545 = getelementptr inbounds i8, ptr %.2645, i64 16
  %546 = load ptr, ptr %545, align 8, !tbaa !53
  %547 = getelementptr inbounds i8, ptr %546, i64 16
  %548 = load i32, ptr %547, align 8, !tbaa !57
  %.not780 = icmp eq i32 %548, 0
  br i1 %.not780, label %.thread886, label %549

549:                                              ; preds = %544
  %550 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iLookupList, i64 104), align 8, !tbaa !58
  br label %551

551:                                              ; preds = %619, %549
  %.31026 = phi ptr [ %.2, %549 ], [ %.5, %619 ]
  %.06151024 = phi ptr [ %.2, %549 ], [ %.06141025, %619 ]
  %.06141025.in = getelementptr inbounds i8, ptr %.06151024, i64 32
  %.06141025 = load ptr, ptr %.06141025.in, align 8, !tbaa !60
  %552 = getelementptr inbounds i8, ptr %.06151024, i64 8
  %553 = load ptr, ptr %552, align 8, !tbaa !61
  tail call void %550(ptr noundef %7, ptr noundef %553) #6
  %554 = getelementptr inbounds i8, ptr %.06151024, i64 16
  %555 = getelementptr inbounds i8, ptr %.06151024, i64 24
  %556 = load ptr, ptr %555, align 8, !tbaa !45
  %557 = icmp eq ptr %556, null
  br i1 %557, label %558, label %567

558:                                              ; preds = %551
  %559 = getelementptr inbounds i8, ptr %.06151024, i64 32
  %560 = load ptr, ptr %559, align 8, !tbaa !42
  %561 = icmp eq ptr %560, null
  br i1 %561, label %562, label %567

562:                                              ; preds = %558
  %563 = getelementptr inbounds i8, ptr %.31026, i64 16
  %564 = load ptr, ptr %563, align 8, !tbaa !22
  %565 = load ptr, ptr %564, align 8, !tbaa !29
  tail call void @free(ptr noundef %565) #6
  %566 = load ptr, ptr %563, align 8, !tbaa !22
  tail call void @free(ptr noundef %566) #6
  br label %619

567:                                              ; preds = %558, %551
  %568 = getelementptr inbounds i8, ptr %.31026, i64 16
  %569 = load ptr, ptr %568, align 8, !tbaa !22
  %570 = getelementptr inbounds i8, ptr %569, i64 24
  %571 = load ptr, ptr %570, align 8, !tbaa !46
  %572 = icmp eq ptr %554, %571
  br i1 %572, label %573, label %577

573:                                              ; preds = %567
  %574 = getelementptr inbounds i8, ptr %569, i64 32
  %575 = load i64, ptr %574, align 8, !tbaa !32
  %576 = getelementptr inbounds i8, ptr %556, i64 %575
  store ptr %576, ptr %570, align 8, !tbaa !46
  br label %577

577:                                              ; preds = %573, %567
  %578 = getelementptr inbounds i8, ptr %.06151024, i64 32
  %579 = load ptr, ptr %578, align 8, !tbaa !42
  br i1 %557, label %585, label %580

580:                                              ; preds = %577
  %581 = getelementptr inbounds i8, ptr %569, i64 32
  %582 = load i64, ptr %581, align 8, !tbaa !32
  %583 = getelementptr inbounds i8, ptr %556, i64 %582
  %584 = getelementptr inbounds i8, ptr %583, i64 16
  store ptr %579, ptr %584, align 8, !tbaa !42
  br label %585

585:                                              ; preds = %577, %580
  %.4 = phi ptr [ %.31026, %580 ], [ %579, %577 ]
  %.not796 = icmp eq ptr %579, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.4, i64 16
  %.pre1051 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !22
  br i1 %.not796, label %._crit_edge1050, label %586

586:                                              ; preds = %585
  %587 = getelementptr inbounds i8, ptr %.pre1051, i64 32
  %588 = load i64, ptr %587, align 8, !tbaa !32
  %589 = getelementptr inbounds i8, ptr %579, i64 %588
  %590 = getelementptr inbounds i8, ptr %589, i64 8
  store ptr %556, ptr %590, align 8, !tbaa !45
  br label %._crit_edge1050

._crit_edge1050:                                  ; preds = %585, %586
  %591 = getelementptr inbounds i8, ptr %.06151024, i64 68
  %592 = load i32, ptr %591, align 4, !tbaa !62
  %593 = getelementptr inbounds i8, ptr %.pre1051, i64 8
  %594 = load i32, ptr %593, align 8, !tbaa !26
  %595 = add i32 %594, -1
  %596 = and i32 %595, %592
  %597 = load ptr, ptr %.pre1051, align 8, !tbaa !29
  %598 = zext i32 %596 to i64
  %599 = getelementptr inbounds %struct.UT_hash_bucket, ptr %597, i64 %598
  %600 = getelementptr inbounds i8, ptr %599, i64 8
  %601 = load i32, ptr %600, align 8, !tbaa !63
  %602 = add i32 %601, -1
  store i32 %602, ptr %600, align 8, !tbaa !63
  %603 = load ptr, ptr %599, align 8, !tbaa !30
  %604 = icmp eq ptr %603, %554
  br i1 %604, label %605, label %608

605:                                              ; preds = %._crit_edge1050
  %606 = getelementptr inbounds i8, ptr %.06151024, i64 48
  %607 = load ptr, ptr %606, align 8, !tbaa !64
  store ptr %607, ptr %599, align 8, !tbaa !30
  br label %608

608:                                              ; preds = %605, %._crit_edge1050
  %609 = getelementptr inbounds i8, ptr %.06151024, i64 40
  %610 = load ptr, ptr %609, align 8, !tbaa !65
  %.not797 = icmp eq ptr %610, null
  %.phi.trans.insert1053 = getelementptr inbounds i8, ptr %.06151024, i64 48
  %.pre1054 = load ptr, ptr %.phi.trans.insert1053, align 8, !tbaa !64
  br i1 %.not797, label %._crit_edge1052, label %611

611:                                              ; preds = %608
  %612 = getelementptr inbounds i8, ptr %610, i64 32
  store ptr %.pre1054, ptr %612, align 8, !tbaa !64
  br label %._crit_edge1052

._crit_edge1052:                                  ; preds = %608, %611
  %.not798 = icmp eq ptr %.pre1054, null
  br i1 %.not798, label %615, label %613

613:                                              ; preds = %._crit_edge1052
  %614 = getelementptr inbounds i8, ptr %.pre1054, i64 24
  store ptr %610, ptr %614, align 8, !tbaa !65
  br label %615

615:                                              ; preds = %613, %._crit_edge1052
  %616 = getelementptr inbounds i8, ptr %.pre1051, i64 16
  %617 = load i32, ptr %616, align 8, !tbaa !57
  %618 = add i32 %617, -1
  store i32 %618, ptr %616, align 8, !tbaa !57
  br label %619

619:                                              ; preds = %615, %562
  %.5 = phi ptr [ null, %562 ], [ %.4, %615 ]
  %620 = load ptr, ptr %.06151024, align 8, !tbaa !66
  tail call void @sdsfree(ptr noundef %620) #6
  tail call void @free(ptr noundef nonnull %.06151024) #6
  %.not799 = icmp eq ptr %.06141025, null
  br i1 %.not799, label %621, label %551, !llvm.loop !67

621:                                              ; preds = %619
  %622 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iFeatureList, i64 104), align 8
  %623 = getelementptr inbounds i8, ptr %7, i64 24
  br label %624

624:                                              ; preds = %697, %621
  %.05981028 = phi ptr [ %.2678, %621 ], [ %.05971029, %697 ]
  %.36791027 = phi ptr [ %.2678, %621 ], [ %.5681, %697 ]
  %.05971029.in = getelementptr inbounds i8, ptr %.05981028, i64 40
  %.05971029 = load ptr, ptr %.05971029.in, align 8, !tbaa !68
  %625 = getelementptr inbounds i8, ptr %.05981028, i64 8
  %626 = load i8, ptr %625, align 8, !tbaa !69, !range !70, !noundef !71
  %627 = trunc nuw i8 %626 to i1
  br i1 %627, label %631, label %628

628:                                              ; preds = %624
  %629 = getelementptr inbounds i8, ptr %.05981028, i64 16
  %630 = load ptr, ptr %629, align 8, !tbaa !72
  tail call void %622(ptr noundef nonnull %623, ptr noundef %630) #6
  br label %631

631:                                              ; preds = %624, %628
  %632 = getelementptr inbounds i8, ptr %.05981028, i64 24
  %633 = getelementptr inbounds i8, ptr %.05981028, i64 32
  %634 = load ptr, ptr %633, align 8, !tbaa !45
  %635 = icmp eq ptr %634, null
  br i1 %635, label %636, label %645

636:                                              ; preds = %631
  %637 = getelementptr inbounds i8, ptr %.05981028, i64 40
  %638 = load ptr, ptr %637, align 8, !tbaa !42
  %639 = icmp eq ptr %638, null
  br i1 %639, label %640, label %645

640:                                              ; preds = %636
  %641 = getelementptr inbounds i8, ptr %.36791027, i64 24
  %642 = load ptr, ptr %641, align 8, !tbaa !48
  %643 = load ptr, ptr %642, align 8, !tbaa !29
  tail call void @free(ptr noundef %643) #6
  %644 = load ptr, ptr %641, align 8, !tbaa !48
  tail call void @free(ptr noundef %644) #6
  br label %697

645:                                              ; preds = %636, %631
  %646 = getelementptr inbounds i8, ptr %.36791027, i64 24
  %647 = load ptr, ptr %646, align 8, !tbaa !48
  %648 = getelementptr inbounds i8, ptr %647, i64 24
  %649 = load ptr, ptr %648, align 8, !tbaa !46
  %650 = icmp eq ptr %632, %649
  br i1 %650, label %651, label %655

651:                                              ; preds = %645
  %652 = getelementptr inbounds i8, ptr %647, i64 32
  %653 = load i64, ptr %652, align 8, !tbaa !32
  %654 = getelementptr inbounds i8, ptr %634, i64 %653
  store ptr %654, ptr %648, align 8, !tbaa !46
  br label %655

655:                                              ; preds = %651, %645
  %656 = getelementptr inbounds i8, ptr %.05981028, i64 40
  %657 = load ptr, ptr %656, align 8, !tbaa !42
  br i1 %635, label %663, label %658

658:                                              ; preds = %655
  %659 = getelementptr inbounds i8, ptr %647, i64 32
  %660 = load i64, ptr %659, align 8, !tbaa !32
  %661 = getelementptr inbounds i8, ptr %634, i64 %660
  %662 = getelementptr inbounds i8, ptr %661, i64 16
  store ptr %657, ptr %662, align 8, !tbaa !42
  br label %663

663:                                              ; preds = %655, %658
  %.4680 = phi ptr [ %.36791027, %658 ], [ %657, %655 ]
  %.not791 = icmp eq ptr %657, null
  %.phi.trans.insert1056 = getelementptr inbounds i8, ptr %.4680, i64 24
  %.pre1057 = load ptr, ptr %.phi.trans.insert1056, align 8, !tbaa !48
  br i1 %.not791, label %._crit_edge1055, label %664

664:                                              ; preds = %663
  %665 = getelementptr inbounds i8, ptr %.pre1057, i64 32
  %666 = load i64, ptr %665, align 8, !tbaa !32
  %667 = getelementptr inbounds i8, ptr %657, i64 %666
  %668 = getelementptr inbounds i8, ptr %667, i64 8
  store ptr %634, ptr %668, align 8, !tbaa !45
  br label %._crit_edge1055

._crit_edge1055:                                  ; preds = %663, %664
  %669 = getelementptr inbounds i8, ptr %.05981028, i64 76
  %670 = load i32, ptr %669, align 4, !tbaa !62
  %671 = getelementptr inbounds i8, ptr %.pre1057, i64 8
  %672 = load i32, ptr %671, align 8, !tbaa !26
  %673 = add i32 %672, -1
  %674 = and i32 %673, %670
  %675 = load ptr, ptr %.pre1057, align 8, !tbaa !29
  %676 = zext i32 %674 to i64
  %677 = getelementptr inbounds %struct.UT_hash_bucket, ptr %675, i64 %676
  %678 = getelementptr inbounds i8, ptr %677, i64 8
  %679 = load i32, ptr %678, align 8, !tbaa !63
  %680 = add i32 %679, -1
  store i32 %680, ptr %678, align 8, !tbaa !63
  %681 = load ptr, ptr %677, align 8, !tbaa !30
  %682 = icmp eq ptr %681, %632
  br i1 %682, label %683, label %686

683:                                              ; preds = %._crit_edge1055
  %684 = getelementptr inbounds i8, ptr %.05981028, i64 56
  %685 = load ptr, ptr %684, align 8, !tbaa !64
  store ptr %685, ptr %677, align 8, !tbaa !30
  br label %686

686:                                              ; preds = %683, %._crit_edge1055
  %687 = getelementptr inbounds i8, ptr %.05981028, i64 48
  %688 = load ptr, ptr %687, align 8, !tbaa !65
  %.not792 = icmp eq ptr %688, null
  %.phi.trans.insert1059 = getelementptr inbounds i8, ptr %.05981028, i64 56
  %.pre1060 = load ptr, ptr %.phi.trans.insert1059, align 8, !tbaa !64
  br i1 %.not792, label %._crit_edge1058, label %689

689:                                              ; preds = %686
  %690 = getelementptr inbounds i8, ptr %688, i64 32
  store ptr %.pre1060, ptr %690, align 8, !tbaa !64
  br label %._crit_edge1058

._crit_edge1058:                                  ; preds = %686, %689
  %.not793 = icmp eq ptr %.pre1060, null
  br i1 %.not793, label %693, label %691

691:                                              ; preds = %._crit_edge1058
  %692 = getelementptr inbounds i8, ptr %.pre1060, i64 24
  store ptr %688, ptr %692, align 8, !tbaa !65
  br label %693

693:                                              ; preds = %691, %._crit_edge1058
  %694 = getelementptr inbounds i8, ptr %.pre1057, i64 16
  %695 = load i32, ptr %694, align 8, !tbaa !57
  %696 = add i32 %695, -1
  store i32 %696, ptr %694, align 8, !tbaa !57
  br label %697

697:                                              ; preds = %693, %640
  %.5681 = phi ptr [ null, %640 ], [ %.4680, %693 ]
  %698 = load ptr, ptr %.05981028, align 8, !tbaa !73
  tail call void @sdsfree(ptr noundef %698) #6
  tail call void @free(ptr noundef nonnull %.05981028) #6
  %.not794 = icmp eq ptr %.05971029, null
  br i1 %.not794, label %699, label %624, !llvm.loop !74

699:                                              ; preds = %697
  %700 = load ptr, ptr getelementptr inbounds (i8, ptr @otl_iLangSystemList, i64 104), align 8, !tbaa !75
  %701 = getelementptr inbounds i8, ptr %7, i64 48
  br label %702

702:                                              ; preds = %770, %699
  %.05921031 = phi ptr [ %.2645, %699 ], [ %.05911032, %770 ]
  %.36461030 = phi ptr [ %.2645, %699 ], [ %.5648, %770 ]
  %.05911032.in = getelementptr inbounds i8, ptr %.05921031, i64 32
  %.05911032 = load ptr, ptr %.05911032.in, align 8, !tbaa !77
  %703 = getelementptr inbounds i8, ptr %.05921031, i64 8
  %704 = load ptr, ptr %703, align 8, !tbaa !78
  tail call void %700(ptr noundef nonnull %701, ptr noundef %704) #6
  %705 = getelementptr inbounds i8, ptr %.05921031, i64 16
  %706 = getelementptr inbounds i8, ptr %.05921031, i64 24
  %707 = load ptr, ptr %706, align 8, !tbaa !45
  %708 = icmp eq ptr %707, null
  br i1 %708, label %709, label %718

709:                                              ; preds = %702
  %710 = getelementptr inbounds i8, ptr %.05921031, i64 32
  %711 = load ptr, ptr %710, align 8, !tbaa !42
  %712 = icmp eq ptr %711, null
  br i1 %712, label %713, label %718

713:                                              ; preds = %709
  %714 = getelementptr inbounds i8, ptr %.36461030, i64 16
  %715 = load ptr, ptr %714, align 8, !tbaa !53
  %716 = load ptr, ptr %715, align 8, !tbaa !29
  tail call void @free(ptr noundef %716) #6
  %717 = load ptr, ptr %714, align 8, !tbaa !53
  tail call void @free(ptr noundef %717) #6
  br label %770

718:                                              ; preds = %709, %702
  %719 = getelementptr inbounds i8, ptr %.36461030, i64 16
  %720 = load ptr, ptr %719, align 8, !tbaa !53
  %721 = getelementptr inbounds i8, ptr %720, i64 24
  %722 = load ptr, ptr %721, align 8, !tbaa !46
  %723 = icmp eq ptr %705, %722
  br i1 %723, label %724, label %728

724:                                              ; preds = %718
  %725 = getelementptr inbounds i8, ptr %720, i64 32
  %726 = load i64, ptr %725, align 8, !tbaa !32
  %727 = getelementptr inbounds i8, ptr %707, i64 %726
  store ptr %727, ptr %721, align 8, !tbaa !46
  br label %728

728:                                              ; preds = %724, %718
  %729 = getelementptr inbounds i8, ptr %.05921031, i64 32
  %730 = load ptr, ptr %729, align 8, !tbaa !42
  br i1 %708, label %736, label %731

731:                                              ; preds = %728
  %732 = getelementptr inbounds i8, ptr %720, i64 32
  %733 = load i64, ptr %732, align 8, !tbaa !32
  %734 = getelementptr inbounds i8, ptr %707, i64 %733
  %735 = getelementptr inbounds i8, ptr %734, i64 16
  store ptr %730, ptr %735, align 8, !tbaa !42
  br label %736

736:                                              ; preds = %728, %731
  %.4647 = phi ptr [ %.36461030, %731 ], [ %730, %728 ]
  %.not786 = icmp eq ptr %730, null
  %.phi.trans.insert1062 = getelementptr inbounds i8, ptr %.4647, i64 16
  %.pre1063 = load ptr, ptr %.phi.trans.insert1062, align 8, !tbaa !53
  br i1 %.not786, label %._crit_edge1061, label %737

737:                                              ; preds = %736
  %738 = getelementptr inbounds i8, ptr %.pre1063, i64 32
  %739 = load i64, ptr %738, align 8, !tbaa !32
  %740 = getelementptr inbounds i8, ptr %730, i64 %739
  %741 = getelementptr inbounds i8, ptr %740, i64 8
  store ptr %707, ptr %741, align 8, !tbaa !45
  br label %._crit_edge1061

._crit_edge1061:                                  ; preds = %736, %737
  %742 = getelementptr inbounds i8, ptr %.05921031, i64 68
  %743 = load i32, ptr %742, align 4, !tbaa !62
  %744 = getelementptr inbounds i8, ptr %.pre1063, i64 8
  %745 = load i32, ptr %744, align 8, !tbaa !26
  %746 = add i32 %745, -1
  %747 = and i32 %746, %743
  %748 = load ptr, ptr %.pre1063, align 8, !tbaa !29
  %749 = zext i32 %747 to i64
  %750 = getelementptr inbounds %struct.UT_hash_bucket, ptr %748, i64 %749
  %751 = getelementptr inbounds i8, ptr %750, i64 8
  %752 = load i32, ptr %751, align 8, !tbaa !63
  %753 = add i32 %752, -1
  store i32 %753, ptr %751, align 8, !tbaa !63
  %754 = load ptr, ptr %750, align 8, !tbaa !30
  %755 = icmp eq ptr %754, %705
  br i1 %755, label %756, label %759

756:                                              ; preds = %._crit_edge1061
  %757 = getelementptr inbounds i8, ptr %.05921031, i64 48
  %758 = load ptr, ptr %757, align 8, !tbaa !64
  store ptr %758, ptr %750, align 8, !tbaa !30
  br label %759

759:                                              ; preds = %756, %._crit_edge1061
  %760 = getelementptr inbounds i8, ptr %.05921031, i64 40
  %761 = load ptr, ptr %760, align 8, !tbaa !65
  %.not787 = icmp eq ptr %761, null
  %.phi.trans.insert1065 = getelementptr inbounds i8, ptr %.05921031, i64 48
  %.pre1066 = load ptr, ptr %.phi.trans.insert1065, align 8, !tbaa !64
  br i1 %.not787, label %._crit_edge1064, label %762

762:                                              ; preds = %759
  %763 = getelementptr inbounds i8, ptr %761, i64 32
  store ptr %.pre1066, ptr %763, align 8, !tbaa !64
  br label %._crit_edge1064

._crit_edge1064:                                  ; preds = %759, %762
  %.not788 = icmp eq ptr %.pre1066, null
  br i1 %.not788, label %766, label %764

764:                                              ; preds = %._crit_edge1064
  %765 = getelementptr inbounds i8, ptr %.pre1066, i64 24
  store ptr %761, ptr %765, align 8, !tbaa !65
  br label %766

766:                                              ; preds = %764, %._crit_edge1064
  %767 = getelementptr inbounds i8, ptr %.pre1063, i64 16
  %768 = load i32, ptr %767, align 8, !tbaa !57
  %769 = add i32 %768, -1
  store i32 %769, ptr %767, align 8, !tbaa !57
  br label %770

770:                                              ; preds = %766, %713
  %.5648 = phi ptr [ null, %713 ], [ %.4647, %766 ]
  %771 = load ptr, ptr %.05921031, align 8, !tbaa !79
  tail call void @sdsfree(ptr noundef %771) #6
  tail call void @free(ptr noundef nonnull %.05921031) #6
  %.not789 = icmp eq ptr %.05911032, null
  br i1 %.not789, label %775, label %702, !llvm.loop !80

.thread886:                                       ; preds = %.loopexit930, %544, %537, %530
  %772 = load ptr, ptr %14, align 8, !tbaa !10
  %773 = getelementptr inbounds i8, ptr %772, i64 56
  %774 = load ptr, ptr %773, align 8, !tbaa !81
  tail call void %774(ptr noundef %772) #6
  br label %779

775:                                              ; preds = %770
  %776 = load ptr, ptr %14, align 8, !tbaa !10
  %777 = getelementptr inbounds i8, ptr %776, i64 64
  %778 = load ptr, ptr %777, align 8, !tbaa !82
  tail call void %778(ptr noundef %776) #6
  br label %.thread889

779:                                              ; preds = %.thread886, %5
  %.not784 = icmp eq ptr %7, null
  br i1 %.not784, label %.thread889, label %780

780:                                              ; preds = %779
  %781 = getelementptr inbounds i8, ptr %1, i64 32
  %782 = load ptr, ptr %781, align 8, !tbaa !10
  %783 = getelementptr inbounds i8, ptr %782, i64 48
  %784 = load ptr, ptr %783, align 8, !tbaa !83
  %785 = tail call ptr @sdsempty() #6
  %786 = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %785, ptr noundef nonnull @.str.5, ptr noundef %2) #6
  tail call void %784(ptr noundef %782, i8 noundef zeroext 1, i32 noundef 1, ptr noundef %786) #6
  %787 = load ptr, ptr getelementptr inbounds (i8, ptr @table_iOTL, i64 56), align 8, !tbaa !84
  tail call void %787(ptr noundef nonnull %7) #6
  br label %.thread889

.thread889:                                       ; preds = %3, %775, %779, %780
  %.0 = phi ptr [ %7, %775 ], [ null, %780 ], [ null, %779 ], [ null, %3 ]
  ret ptr %.0
}

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

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

declare ptr @sdsempty() local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3

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

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

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

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

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

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

declare void @sdsfree(ptr noundef) local_unnamed_addr #2

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

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 = { 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 #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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nofree nounwind willreturn memory(argmem: read) }
attributes #6 = { nounwind }
attributes #7 = { 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, !7, i64 48}
!6 = !{!"__caryll_elementinterface_table_OTL", !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 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!11, !7, i64 32}
!11 = !{!"", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !12, i64 9, !12, i64 10, !12, i64 11, !12, i64 12, !12, i64 13, !12, i64 14, !12, i64 15, !12, i64 16, !12, i64 17, !12, i64 18, !12, i64 19, !12, i64 20, !12, i64 21, !12, i64 22, !7, i64 24, !7, i64 32}
!12 = !{!"_Bool", !8, i64 0}
!13 = !{!14, !7, i64 32}
!14 = !{!"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}
!15 = !{!8, !8, i64 0}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !19, i64 8}
!18 = !{!"_json_value", !7, i64 0, !19, i64 8, !8, i64 16, !8, i64 32}
!19 = !{!"int", !8, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!23, !7, i64 16}
!23 = !{!"", !7, i64 0, !7, i64 8, !24, i64 16, !19, i64 72, !25, i64 76}
!24 = !{!"UT_hash_handle", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !19, i64 48, !19, i64 52}
!25 = !{!"short", !8, i64 0}
!26 = !{!27, !19, i64 8}
!27 = !{!"UT_hash_table", !7, i64 0, !19, i64 8, !19, i64 12, !19, i64 16, !7, i64 24, !28, i64 32, !19, i64 40, !19, i64 44, !19, i64 48, !19, i64 52, !19, i64 56}
!28 = !{!"long", !8, i64 0}
!29 = !{!27, !7, i64 0}
!30 = !{!31, !7, i64 0}
!31 = !{!"UT_hash_bucket", !7, i64 0, !19, i64 8, !19, i64 12}
!32 = !{!27, !28, i64 32}
!33 = !{!23, !19, i64 68}
!34 = !{!23, !19, i64 64}
!35 = !{!23, !7, i64 56}
!36 = !{!23, !7, i64 48}
!37 = distinct !{!37, !21}
!38 = !{!23, !19, i64 72}
!39 = !{!23, !25, i64 76}
!40 = distinct !{!40, !21}
!41 = distinct !{!41, !21}
!42 = !{!24, !7, i64 16}
!43 = distinct !{!43, !21}
!44 = distinct !{!44, !21}
!45 = !{!24, !7, i64 8}
!46 = !{!27, !7, i64 24}
!47 = distinct !{!47, !21}
!48 = !{!49, !7, i64 24}
!49 = !{!"", !7, i64 0, !12, i64 8, !7, i64 16, !24, i64 24}
!50 = distinct !{!50, !21}
!51 = distinct !{!51, !21}
!52 = distinct !{!52, !21}
!53 = !{!54, !7, i64 16}
!54 = !{!"", !7, i64 0, !7, i64 8, !24, i64 16}
!55 = distinct !{!55, !21}
!56 = distinct !{!56, !21}
!57 = !{!27, !19, i64 16}
!58 = !{!59, !7, i64 104}
!59 = !{!"__caryll_vectorinterface_otl_LookupList", !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, !7, i64 128, !7, i64 136, !7, i64 144}
!60 = !{!23, !7, i64 32}
!61 = !{!23, !7, i64 8}
!62 = !{!24, !19, i64 52}
!63 = !{!31, !19, i64 8}
!64 = !{!24, !7, i64 32}
!65 = !{!24, !7, i64 24}
!66 = !{!23, !7, i64 0}
!67 = distinct !{!67, !21}
!68 = !{!49, !7, i64 40}
!69 = !{!49, !12, i64 8}
!70 = !{i8 0, i8 2}
!71 = !{}
!72 = !{!49, !7, i64 16}
!73 = !{!49, !7, i64 0}
!74 = distinct !{!74, !21}
!75 = !{!76, !7, i64 104}
!76 = !{!"__caryll_vectorinterface_otl_LangSystemList", !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, !7, i64 128, !7, i64 136, !7, i64 144}
!77 = !{!54, !7, i64 32}
!78 = !{!54, !7, i64 8}
!79 = !{!54, !7, i64 0}
!80 = distinct !{!80, !21}
!81 = !{!14, !7, i64 56}
!82 = !{!14, !7, i64 64}
!83 = !{!14, !7, i64 48}
!84 = !{!6, !7, i64 56}


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