; LLVM IR from p4lang/p4c :: backends/ebpf/runtime (ebpf_map)

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

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

16:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  br label %17

17:                                               ; preds = %16
  br label %18

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

21:                                               ; preds = %189, %18
  %22 = load i32, ptr %12, align 4, !tbaa !9
  %23 = icmp uge i32 %22, 12
  br i1 %23, label %24, label %194

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

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

188:                                              ; preds = %97
  br label %189

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

194:                                              ; preds = %21
  %195 = load i32, ptr %7, align 4, !tbaa !9
  %196 = load i32, ptr %9, align 4, !tbaa !9
  %197 = add i32 %196, %195
  store i32 %197, ptr %9, align 4, !tbaa !9
  %198 = load i32, ptr %12, align 4, !tbaa !9
  switch i32 %198, label %285 [
    i32 11, label %199
    i32 10, label %207
    i32 9, label %215
    i32 8, label %223
    i32 7, label %231
    i32 6, label %239
    i32 5, label %247
    i32 4, label %254
    i32 3, label %262
    i32 2, label %270
    i32 1, label %278
  ]

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

207:                                              ; preds = %199, %194
  %208 = load ptr, ptr %13, align 8, !tbaa !5
  %209 = getelementptr inbounds i8, ptr %208, i64 9
  %210 = load i8, ptr %209, align 1, !tbaa !11
  %211 = zext i8 %210 to i32
  %212 = shl i32 %211, 16
  %213 = load i32, ptr %9, align 4, !tbaa !9
  %214 = add i32 %213, %212
  store i32 %214, ptr %9, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %207, %194
  %216 = load ptr, ptr %13, align 8, !tbaa !5
  %217 = getelementptr inbounds i8, ptr %216, i64 8
  %218 = load i8, ptr %217, align 1, !tbaa !11
  %219 = zext i8 %218 to i32
  %220 = shl i32 %219, 8
  %221 = load i32, ptr %9, align 4, !tbaa !9
  %222 = add i32 %221, %220
  store i32 %222, ptr %9, align 4, !tbaa !9
  br label %223

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

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

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

247:                                              ; preds = %239, %194
  %248 = load ptr, ptr %13, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 4
  %250 = load i8, ptr %249, align 1, !tbaa !11
  %251 = zext i8 %250 to i32
  %252 = load i32, ptr %11, align 4, !tbaa !9
  %253 = add i32 %252, %251
  store i32 %253, ptr %11, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %247, %194
  %255 = load ptr, ptr %13, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 3
  %257 = load i8, ptr %256, align 1, !tbaa !11
  %258 = zext i8 %257 to i32
  %259 = shl i32 %258, 24
  %260 = load i32, ptr %10, align 4, !tbaa !9
  %261 = add i32 %260, %259
  store i32 %261, ptr %10, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %254, %194
  %263 = load ptr, ptr %13, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i64 2
  %265 = load i8, ptr %264, align 1, !tbaa !11
  %266 = zext i8 %265 to i32
  %267 = shl i32 %266, 16
  %268 = load i32, ptr %10, align 4, !tbaa !9
  %269 = add i32 %268, %267
  store i32 %269, ptr %10, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %262, %194
  %271 = load ptr, ptr %13, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 1
  %273 = load i8, ptr %272, align 1, !tbaa !11
  %274 = zext i8 %273 to i32
  %275 = shl i32 %274, 8
  %276 = load i32, ptr %10, align 4, !tbaa !9
  %277 = add i32 %276, %275
  store i32 %277, ptr %10, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %270, %194
  %279 = load ptr, ptr %13, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i64 0
  %281 = load i8, ptr %280, align 1, !tbaa !11
  %282 = zext i8 %281 to i32
  %283 = load i32, ptr %10, align 4, !tbaa !9
  %284 = add i32 %283, %282
  store i32 %284, ptr %10, align 4, !tbaa !9
  br label %285

285:                                              ; preds = %278, %194
  br label %286

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

377:                                              ; preds = %286
  br label %378

378:                                              ; preds = %377
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  br label %379

379:                                              ; preds = %378
  br label %380

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381
  br label %383

383:                                              ; preds = %382
  store ptr null, ptr %8, align 8, !tbaa !5
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = icmp ne ptr %384, null
  br i1 %385, label %386, label %493

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

387:                                              ; preds = %386
  %388 = load i32, ptr %9, align 4, !tbaa !9
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.bpf_map, ptr %389, i32 0, i32 2
  %391 = getelementptr inbounds %struct.UT_hash_handle, ptr %390, i32 0, i32 0
  %392 = load ptr, ptr %391, align 8, !tbaa !14
  %393 = getelementptr inbounds %struct.UT_hash_table, ptr %392, i32 0, i32 1
  %394 = load i32, ptr %393, align 8, !tbaa !17
  %395 = sub i32 %394, 1
  %396 = and i32 %388, %395
  store i32 %396, ptr %14, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %387
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.bpf_map, ptr %400, i32 0, i32 2
  %402 = getelementptr inbounds %struct.UT_hash_handle, ptr %401, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8, !tbaa !14
  %404 = getelementptr inbounds %struct.UT_hash_table, ptr %403, i32 0, i32 0
  %405 = load ptr, ptr %404, align 8, !tbaa !20
  %406 = load i32, ptr %14, align 4, !tbaa !9
  %407 = zext i32 %406 to i64
  %408 = getelementptr inbounds %struct.UT_hash_bucket, ptr %405, i64 %407
  %409 = getelementptr inbounds %struct.UT_hash_bucket, ptr %408, i32 0, i32 0
  %410 = load ptr, ptr %409, align 8, !tbaa !21
  %411 = icmp ne ptr %410, null
  br i1 %411, label %412, label %435

412:                                              ; preds = %399
  br label %413

413:                                              ; preds = %412
  %414 = load ptr, ptr %5, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.bpf_map, ptr %414, i32 0, i32 2
  %416 = getelementptr inbounds %struct.UT_hash_handle, ptr %415, i32 0, i32 0
  %417 = load ptr, ptr %416, align 8, !tbaa !14
  %418 = getelementptr inbounds %struct.UT_hash_table, ptr %417, i32 0, i32 0
  %419 = load ptr, ptr %418, align 8, !tbaa !20
  %420 = load i32, ptr %14, align 4, !tbaa !9
  %421 = zext i32 %420 to i64
  %422 = getelementptr inbounds %struct.UT_hash_bucket, ptr %419, i64 %421
  %423 = getelementptr inbounds %struct.UT_hash_bucket, ptr %422, i32 0, i32 0
  %424 = load ptr, ptr %423, align 8, !tbaa !21
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.bpf_map, ptr %425, i32 0, i32 2
  %427 = getelementptr inbounds %struct.UT_hash_handle, ptr %426, i32 0, i32 0
  %428 = load ptr, ptr %427, align 8, !tbaa !14
  %429 = getelementptr inbounds %struct.UT_hash_table, ptr %428, i32 0, i32 5
  %430 = load i64, ptr %429, align 8, !tbaa !23
  %431 = sub i64 0, %430
  %432 = getelementptr inbounds i8, ptr %424, i64 %431
  store ptr %432, ptr %8, align 8, !tbaa !5
  br label %433

433:                                              ; preds = %413
  br label %434

434:                                              ; preds = %433
  br label %436

435:                                              ; preds = %399
  store ptr null, ptr %8, align 8, !tbaa !5
  br label %436

436:                                              ; preds = %435, %434
  br label %437

437:                                              ; preds = %489, %436
  %438 = load ptr, ptr %8, align 8, !tbaa !5
  %439 = icmp ne ptr %438, null
  br i1 %439, label %440, label %490

440:                                              ; preds = %437
  %441 = load ptr, ptr %8, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.bpf_map, ptr %441, i32 0, i32 2
  %443 = getelementptr inbounds %struct.UT_hash_handle, ptr %442, i32 0, i32 7
  %444 = load i32, ptr %443, align 4, !tbaa !24
  %445 = load i32, ptr %9, align 4, !tbaa !9
  %446 = icmp eq i32 %444, %445
  br i1 %446, label %447, label %466

447:                                              ; preds = %440
  %448 = load ptr, ptr %8, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.bpf_map, ptr %448, i32 0, i32 2
  %450 = getelementptr inbounds %struct.UT_hash_handle, ptr %449, i32 0, i32 6
  %451 = load i32, ptr %450, align 8, !tbaa !25
  %452 = load i32, ptr %7, align 4, !tbaa !9
  %453 = icmp eq i32 %451, %452
  br i1 %453, label %454, label %466

454:                                              ; preds = %447
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.bpf_map, ptr %455, i32 0, i32 2
  %457 = getelementptr inbounds %struct.UT_hash_handle, ptr %456, i32 0, i32 5
  %458 = load ptr, ptr %457, align 8, !tbaa !26
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = load i32, ptr %7, align 4, !tbaa !9
  %461 = zext i32 %460 to i64
  %462 = call i32 @memcmp(ptr noundef %458, ptr noundef %459, i64 noundef %461) #4
  %463 = icmp eq i32 %462, 0
  br i1 %463, label %464, label %465

464:                                              ; preds = %454
  br label %490

465:                                              ; preds = %454
  br label %466

466:                                              ; preds = %465, %447, %440
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.bpf_map, ptr %467, i32 0, i32 2
  %469 = getelementptr inbounds %struct.UT_hash_handle, ptr %468, i32 0, i32 4
  %470 = load ptr, ptr %469, align 8, !tbaa !27
  %471 = icmp ne ptr %470, null
  br i1 %471, label %472, label %488

472:                                              ; preds = %466
  br label %473

473:                                              ; preds = %472
  %474 = load ptr, ptr %8, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.bpf_map, ptr %474, i32 0, i32 2
  %476 = getelementptr inbounds %struct.UT_hash_handle, ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %476, align 8, !tbaa !27
  %478 = load ptr, ptr %5, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.bpf_map, ptr %478, i32 0, i32 2
  %480 = getelementptr inbounds %struct.UT_hash_handle, ptr %479, i32 0, i32 0
  %481 = load ptr, ptr %480, align 8, !tbaa !14
  %482 = getelementptr inbounds %struct.UT_hash_table, ptr %481, i32 0, i32 5
  %483 = load i64, ptr %482, align 8, !tbaa !23
  %484 = sub i64 0, %483
  %485 = getelementptr inbounds i8, ptr %477, i64 %484
  store ptr %485, ptr %8, align 8, !tbaa !5
  br label %486

486:                                              ; preds = %473
  br label %487

487:                                              ; preds = %486
  br label %489

488:                                              ; preds = %466
  store ptr null, ptr %8, align 8, !tbaa !5
  br label %489

489:                                              ; preds = %488, %487
  br label %437, !llvm.loop !28

490:                                              ; preds = %464, %437
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %493

493:                                              ; preds = %492, %383
  br label %494

494:                                              ; preds = %493
  br label %495

495:                                              ; preds = %494
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  br label %496

496:                                              ; preds = %495
  br label %497

497:                                              ; preds = %496
  %498 = load ptr, ptr %8, align 8, !tbaa !5
  %499 = icmp eq ptr %498, null
  br i1 %499, label %500, label %501

500:                                              ; preds = %497
  store ptr null, ptr %4, align 8
  store i32 1, ptr %15, align 4
  br label %505

501:                                              ; preds = %497
  %502 = load ptr, ptr %8, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.bpf_map, ptr %502, i32 0, i32 1
  %504 = load ptr, ptr %503, align 8, !tbaa !29
  store ptr %504, ptr %4, align 8
  store i32 1, ptr %15, align 4
  br label %505

505:                                              ; preds = %501, %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  %506 = load ptr, ptr %4, align 8
  ret ptr %506
}

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

; 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) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nounwind }
attributes #4 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !6, i64 16}
!15 = !{!"bpf_map", !6, i64 0, !6, i64 8, !16, i64 16}
!16 = !{!"UT_hash_handle", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !10, i64 52}
!17 = !{!18, !10, i64 8}
!18 = !{!"UT_hash_table", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !19, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!19 = !{!"long", !7, i64 0}
!20 = !{!18, !6, i64 0}
!21 = !{!22, !6, i64 0}
!22 = !{!"UT_hash_bucket", !6, i64 0, !10, i64 8, !10, i64 12}
!23 = !{!18, !19, i64 32}
!24 = !{!15, !10, i64 68}
!25 = !{!15, !10, i64 64}
!26 = !{!15, !6, i64 56}
!27 = !{!15, !6, i64 48}
!28 = distinct !{!28, !13}
!29 = !{!15, !6, i64 8}


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

; Function Attrs: nofree nounwind memory(read, inaccessiblemem: none) uwtable
define dso_local ptr @bpf_map_lookup_elem(ptr noundef readonly %0, ptr nocapture noundef readonly %1, i32 noundef %2) local_unnamed_addr #0 {
  %4 = icmp ugt i32 %2, 11
  br i1 %4, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %3, %.lr.ph
  %.0174243 = phi ptr [ %48, %.lr.ph ], [ %1, %3 ]
  %.0175242 = phi i32 [ %49, %.lr.ph ], [ %2, %3 ]
  %.0176241 = phi i32 [ %43, %.lr.ph ], [ -1640531527, %3 ]
  %.0177240 = phi i32 [ %39, %.lr.ph ], [ -1640531527, %3 ]
  %.0182239 = phi i32 [ %47, %.lr.ph ], [ -17973521, %3 ]
  %5 = load i32, ptr %.0174243, align 1
  %6 = getelementptr inbounds i8, ptr %.0174243, i64 4
  %7 = load i32, ptr %6, align 1
  %8 = add i32 %7, %.0176241
  %9 = getelementptr inbounds i8, ptr %.0174243, i64 8
  %10 = load i32, ptr %9, align 1
  %11 = add i32 %10, %.0182239
  %.neg221 = add i32 %5, %.0177240
  %12 = add i32 %8, %11
  %13 = sub i32 %.neg221, %12
  %14 = lshr i32 %11, 13
  %15 = xor i32 %13, %14
  %16 = add i32 %11, %15
  %17 = sub i32 %8, %16
  %18 = shl i32 %15, 8
  %19 = xor i32 %17, %18
  %20 = add i32 %15, %19
  %21 = sub i32 %11, %20
  %22 = lshr i32 %19, 13
  %23 = xor i32 %21, %22
  %24 = add i32 %19, %23
  %25 = sub i32 %15, %24
  %26 = lshr i32 %23, 12
  %27 = xor i32 %25, %26
  %28 = add i32 %23, %27
  %29 = sub i32 %19, %28
  %30 = shl i32 %27, 16
  %31 = xor i32 %29, %30
  %32 = add i32 %27, %31
  %33 = sub i32 %23, %32
  %34 = lshr i32 %31, 5
  %35 = xor i32 %33, %34
  %36 = add i32 %31, %35
  %37 = sub i32 %27, %36
  %38 = lshr i32 %35, 3
  %39 = xor i32 %37, %38
  %40 = add i32 %35, %39
  %41 = sub i32 %31, %40
  %42 = shl i32 %39, 10
  %43 = xor i32 %41, %42
  %44 = add i32 %39, %43
  %45 = sub i32 %35, %44
  %46 = lshr i32 %43, 15
  %47 = xor i32 %45, %46
  %48 = getelementptr inbounds i8, ptr %.0174243, i64 12
  %49 = add i32 %.0175242, -12
  %50 = icmp ugt i32 %49, 11
  br i1 %50, label %.lr.ph, label %._crit_edge, !llvm.loop !5

._crit_edge:                                      ; preds = %.lr.ph, %3
  %.0182.lcssa = phi i32 [ -17973521, %3 ], [ %47, %.lr.ph ]
  %.0177.lcssa = phi i32 [ -1640531527, %3 ], [ %39, %.lr.ph ]
  %.0176.lcssa = phi i32 [ -1640531527, %3 ], [ %43, %.lr.ph ]
  %.0175.lcssa = phi i32 [ %2, %3 ], [ %49, %.lr.ph ]
  %.0174.lcssa = phi ptr [ %1, %3 ], [ %48, %.lr.ph ]
  %51 = add i32 %.0182.lcssa, %2
  switch i32 %.0175.lcssa, label %115 [
    i32 11, label %52
    i32 10, label %58
    i32 9, label %64
    i32 8, label %70
    i32 7, label %76
    i32 6, label %82
    i32 5, label %88
    i32 4, label %93
    i32 3, label %99
    i32 2, label %105
    i32 1, label %111
  ]

52:                                               ; preds = %._crit_edge
  %53 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 10
  %54 = load i8, ptr %53, align 1, !tbaa !7
  %55 = zext i8 %54 to i32
  %56 = shl nuw i32 %55, 24
  %57 = add i32 %56, %51
  br label %58

58:                                               ; preds = %52, %._crit_edge
  %.1183 = phi i32 [ %51, %._crit_edge ], [ %57, %52 ]
  %59 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 9
  %60 = load i8, ptr %59, align 1, !tbaa !7
  %61 = zext i8 %60 to i32
  %62 = shl nuw nsw i32 %61, 16
  %63 = add i32 %62, %.1183
  br label %64

64:                                               ; preds = %58, %._crit_edge
  %.2184 = phi i32 [ %51, %._crit_edge ], [ %63, %58 ]
  %65 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 8
  %66 = load i8, ptr %65, align 1, !tbaa !7
  %67 = zext i8 %66 to i32
  %68 = shl nuw nsw i32 %67, 8
  %69 = add i32 %68, %.2184
  br label %70

70:                                               ; preds = %64, %._crit_edge
  %.3185 = phi i32 [ %51, %._crit_edge ], [ %69, %64 ]
  %71 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 7
  %72 = load i8, ptr %71, align 1, !tbaa !7
  %73 = zext i8 %72 to i32
  %74 = shl nuw i32 %73, 24
  %75 = add i32 %74, %.0176.lcssa
  br label %76

76:                                               ; preds = %70, %._crit_edge
  %.4186 = phi i32 [ %51, %._crit_edge ], [ %.3185, %70 ]
  %.1 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %75, %70 ]
  %77 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 6
  %78 = load i8, ptr %77, align 1, !tbaa !7
  %79 = zext i8 %78 to i32
  %80 = shl nuw nsw i32 %79, 16
  %81 = add i32 %80, %.1
  br label %82

82:                                               ; preds = %76, %._crit_edge
  %.5187 = phi i32 [ %51, %._crit_edge ], [ %.4186, %76 ]
  %.2 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %81, %76 ]
  %83 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 5
  %84 = load i8, ptr %83, align 1, !tbaa !7
  %85 = zext i8 %84 to i32
  %86 = shl nuw nsw i32 %85, 8
  %87 = add i32 %86, %.2
  br label %88

88:                                               ; preds = %82, %._crit_edge
  %.6188 = phi i32 [ %51, %._crit_edge ], [ %.5187, %82 ]
  %.3 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %87, %82 ]
  %89 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 4
  %90 = load i8, ptr %89, align 1, !tbaa !7
  %91 = zext i8 %90 to i32
  %92 = add i32 %.3, %91
  br label %93

93:                                               ; preds = %88, %._crit_edge
  %.7189 = phi i32 [ %51, %._crit_edge ], [ %.6188, %88 ]
  %.4 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %92, %88 ]
  %94 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 3
  %95 = load i8, ptr %94, align 1, !tbaa !7
  %96 = zext i8 %95 to i32
  %97 = shl nuw i32 %96, 24
  %98 = add i32 %97, %.0177.lcssa
  br label %99

99:                                               ; preds = %93, %._crit_edge
  %.8190 = phi i32 [ %51, %._crit_edge ], [ %.7189, %93 ]
  %.1178 = phi i32 [ %.0177.lcssa, %._crit_edge ], [ %98, %93 ]
  %.5 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %.4, %93 ]
  %100 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 2
  %101 = load i8, ptr %100, align 1, !tbaa !7
  %102 = zext i8 %101 to i32
  %103 = shl nuw nsw i32 %102, 16
  %104 = add i32 %103, %.1178
  br label %105

105:                                              ; preds = %99, %._crit_edge
  %.9 = phi i32 [ %51, %._crit_edge ], [ %.8190, %99 ]
  %.2179 = phi i32 [ %.0177.lcssa, %._crit_edge ], [ %104, %99 ]
  %.6 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %.5, %99 ]
  %106 = getelementptr inbounds i8, ptr %.0174.lcssa, i64 1
  %107 = load i8, ptr %106, align 1, !tbaa !7
  %108 = zext i8 %107 to i32
  %109 = shl nuw nsw i32 %108, 8
  %110 = add i32 %109, %.2179
  br label %111

111:                                              ; preds = %105, %._crit_edge
  %.10 = phi i32 [ %51, %._crit_edge ], [ %.9, %105 ]
  %.3180 = phi i32 [ %.0177.lcssa, %._crit_edge ], [ %110, %105 ]
  %.7 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %.6, %105 ]
  %112 = load i8, ptr %.0174.lcssa, align 1, !tbaa !7
  %113 = zext i8 %112 to i32
  %114 = add i32 %.3180, %113
  br label %115

115:                                              ; preds = %._crit_edge, %111
  %.11 = phi i32 [ %51, %._crit_edge ], [ %.10, %111 ]
  %.4181 = phi i32 [ %.0177.lcssa, %._crit_edge ], [ %114, %111 ]
  %.8 = phi i32 [ %.0176.lcssa, %._crit_edge ], [ %.7, %111 ]
  %116 = add i32 %.11, %.8
  %117 = sub i32 %.4181, %116
  %118 = lshr i32 %.11, 13
  %119 = xor i32 %117, %118
  %120 = add i32 %.11, %119
  %121 = sub i32 %.8, %120
  %122 = shl i32 %119, 8
  %123 = xor i32 %121, %122
  %124 = add i32 %119, %123
  %125 = sub i32 %.11, %124
  %126 = lshr i32 %123, 13
  %127 = xor i32 %125, %126
  %128 = add i32 %123, %127
  %129 = sub i32 %119, %128
  %130 = lshr i32 %127, 12
  %131 = xor i32 %129, %130
  %132 = add i32 %127, %131
  %133 = sub i32 %123, %132
  %134 = shl i32 %131, 16
  %135 = xor i32 %133, %134
  %136 = add i32 %131, %135
  %137 = sub i32 %127, %136
  %138 = lshr i32 %135, 5
  %139 = xor i32 %137, %138
  %140 = add i32 %135, %139
  %141 = sub i32 %131, %140
  %142 = lshr i32 %139, 3
  %143 = xor i32 %141, %142
  %144 = add i32 %139, %143
  %145 = sub i32 %135, %144
  %146 = shl i32 %143, 10
  %147 = xor i32 %145, %146
  %148 = add i32 %143, %147
  %149 = sub i32 %139, %148
  %150 = lshr i32 %147, 15
  %151 = xor i32 %149, %150
  %.not = icmp eq ptr %0, null
  br i1 %.not, label %.thread, label %152

152:                                              ; preds = %115
  %153 = getelementptr inbounds i8, ptr %0, i64 16
  %154 = load ptr, ptr %153, align 8, !tbaa !10
  %155 = getelementptr inbounds i8, ptr %154, i64 8
  %156 = load i32, ptr %155, align 8, !tbaa !15
  %157 = add i32 %156, -1
  %158 = and i32 %157, %151
  %159 = load ptr, ptr %154, align 8, !tbaa !18
  %160 = zext i32 %158 to i64
  %161 = getelementptr inbounds %struct.UT_hash_bucket, ptr %159, i64 %160
  %162 = load ptr, ptr %161, align 8, !tbaa !19
  %.not199 = icmp eq ptr %162, null
  br i1 %.not199, label %.thread, label %.lr.ph251

.lr.ph251:                                        ; preds = %152
  %163 = getelementptr inbounds i8, ptr %154, i64 32
  %164 = load i64, ptr %163, align 8, !tbaa !21
  %165 = sub i64 0, %164
  %166 = getelementptr inbounds i8, ptr %162, i64 %165
  %167 = zext i32 %2 to i64
  %168 = getelementptr inbounds i8, ptr %154, i64 32
  br label %169

169:                                              ; preds = %184, %.lr.ph251
  %.1192249 = phi ptr [ %166, %.lr.ph251 ], [ %187, %184 ]
  %170 = getelementptr inbounds i8, ptr %.1192249, i64 68
  %171 = load i32, ptr %170, align 4, !tbaa !22
  %172 = icmp eq i32 %171, %151
  br i1 %172, label %173, label %181

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %.1192249, i64 64
  %175 = load i32, ptr %174, align 8, !tbaa !23
  %176 = icmp eq i32 %175, %2
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %.1192249, i64 56
  %179 = load ptr, ptr %178, align 8, !tbaa !24
  %bcmp = tail call i32 @bcmp(ptr %179, ptr %1, i64 %167)
  %180 = icmp eq i32 %bcmp, 0
  br i1 %180, label %188, label %181

181:                                              ; preds = %177, %173, %169
  %182 = getelementptr inbounds i8, ptr %.1192249, i64 48
  %183 = load ptr, ptr %182, align 8, !tbaa !25
  %.not201 = icmp eq ptr %183, null
  br i1 %.not201, label %.thread, label %184

184:                                              ; preds = %181
  %185 = load i64, ptr %168, align 8, !tbaa !21
  %186 = sub i64 0, %185
  %187 = getelementptr inbounds i8, ptr %183, i64 %186
  br label %169, !llvm.loop !26

188:                                              ; preds = %177
  %189 = getelementptr inbounds i8, ptr %.1192249, i64 8
  %190 = load ptr, ptr %189, align 8, !tbaa !27
  br label %.thread

.thread:                                          ; preds = %181, %152, %115, %188
  %.0 = phi ptr [ %190, %188 ], [ null, %115 ], [ null, %152 ], [ null, %181 ]
  ret ptr %.0
}

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

attributes #0 = { nofree nounwind memory(read, inaccessiblemem: none) 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 = { nofree nounwind willreturn memory(argmem: 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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!11, !12, i64 16}
!11 = !{!"bpf_map", !12, i64 0, !12, i64 8, !13, i64 16}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"UT_hash_handle", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !14, i64 48, !14, i64 52}
!14 = !{!"int", !8, i64 0}
!15 = !{!16, !14, i64 8}
!16 = !{!"UT_hash_table", !12, i64 0, !14, i64 8, !14, i64 12, !14, i64 16, !12, i64 24, !17, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56}
!17 = !{!"long", !8, i64 0}
!18 = !{!16, !12, i64 0}
!19 = !{!20, !12, i64 0}
!20 = !{!"UT_hash_bucket", !12, i64 0, !14, i64 8, !14, i64 12}
!21 = !{!16, !17, i64 32}
!22 = !{!11, !14, i64 68}
!23 = !{!11, !14, i64 64}
!24 = !{!11, !12, i64 56}
!25 = !{!11, !12, i64 48}
!26 = distinct !{!26, !6}
!27 = !{!11, !12, i64 8}


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