; 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

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

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

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

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

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

18:                                               ; preds = %17
  br label %19

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

22:                                               ; preds = %190, %19
  %23 = load i32, ptr %11, align 4, !tbaa !9
  %24 = icmp uge i32 %23, 12
  br i1 %24, label %25, label %195

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

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

189:                                              ; preds = %98
  br label %190

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

195:                                              ; preds = %22
  %196 = load i32, ptr %6, align 4, !tbaa !9
  %197 = load i32, ptr %8, align 4, !tbaa !9
  %198 = add i32 %197, %196
  store i32 %198, ptr %8, align 4, !tbaa !9
  %199 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %199, label %286 [
    i32 11, label %200
    i32 10, label %208
    i32 9, label %216
    i32 8, label %224
    i32 7, label %232
    i32 6, label %240
    i32 5, label %248
    i32 4, label %255
    i32 3, label %263
    i32 2, label %271
    i32 1, label %279
  ]

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

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

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

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

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

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

248:                                              ; preds = %240, %195
  %249 = load ptr, ptr %12, align 8, !tbaa !5
  %250 = getelementptr inbounds i8, ptr %249, i64 4
  %251 = load i8, ptr %250, align 1, !tbaa !11
  %252 = zext i8 %251 to i32
  %253 = load i32, ptr %10, align 4, !tbaa !9
  %254 = add i32 %253, %252
  store i32 %254, ptr %10, align 4, !tbaa !9
  br label %255

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

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

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

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

286:                                              ; preds = %279, %195
  br label %287

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

378:                                              ; preds = %287
  br label %379

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

380:                                              ; preds = %379
  br label %381

381:                                              ; preds = %380
  br label %382

382:                                              ; preds = %381
  br label %383

383:                                              ; preds = %382
  br label %384

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

387:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  br label %388

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

398:                                              ; preds = %388
  br label %399

399:                                              ; preds = %398
  br label %400

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

413:                                              ; preds = %400
  br label %414

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

434:                                              ; preds = %414
  br label %435

435:                                              ; preds = %434
  br label %437

436:                                              ; preds = %400
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %437

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

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

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

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

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

465:                                              ; preds = %455
  br label %491

466:                                              ; preds = %455
  br label %467

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

473:                                              ; preds = %467
  br label %474

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

487:                                              ; preds = %474
  br label %488

488:                                              ; preds = %487
  br label %490

489:                                              ; preds = %467
  store ptr null, ptr %7, align 8, !tbaa !5
  br label %490

490:                                              ; preds = %489, %488
  br label %438, !llvm.loop !28

491:                                              ; preds = %465, %438
  br label %492

492:                                              ; preds = %491
  br label %493

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

494:                                              ; preds = %493, %384
  br label %495

495:                                              ; preds = %494
  br label %496

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

497:                                              ; preds = %496
  br label %498

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

501:                                              ; preds = %498
  br label %502

502:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  %503 = load ptr, ptr %7, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.bpf_map, ptr %503, i32 0, i32 2
  store ptr %504, ptr %14, align 8, !tbaa !5
  %505 = load ptr, ptr %14, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.UT_hash_handle, ptr %505, i32 0, i32 1
  %507 = load ptr, ptr %506, align 8, !tbaa !29
  %508 = icmp eq ptr %507, null
  br i1 %508, label %509, label %525

509:                                              ; preds = %502
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.UT_hash_handle, ptr %510, i32 0, i32 2
  %512 = load ptr, ptr %511, align 8, !tbaa !30
  %513 = icmp eq ptr %512, null
  br i1 %513, label %514, label %525

514:                                              ; preds = %509
  %515 = load ptr, ptr %4, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.bpf_map, ptr %515, i32 0, i32 2
  %517 = getelementptr inbounds %struct.UT_hash_handle, ptr %516, i32 0, i32 0
  %518 = load ptr, ptr %517, align 8, !tbaa !14
  %519 = getelementptr inbounds %struct.UT_hash_table, ptr %518, i32 0, i32 0
  %520 = load ptr, ptr %519, align 8, !tbaa !20
  call void @free(ptr noundef %520) #4
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.bpf_map, ptr %521, i32 0, i32 2
  %523 = getelementptr inbounds %struct.UT_hash_handle, ptr %522, i32 0, i32 0
  %524 = load ptr, ptr %523, align 8, !tbaa !14
  call void @free(ptr noundef %524) #4
  store ptr null, ptr %4, align 8, !tbaa !5
  br label %673

525:                                              ; preds = %509, %502
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %526 = load ptr, ptr %14, align 8, !tbaa !5
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.bpf_map, ptr %527, i32 0, i32 2
  %529 = getelementptr inbounds %struct.UT_hash_handle, ptr %528, i32 0, i32 0
  %530 = load ptr, ptr %529, align 8, !tbaa !14
  %531 = getelementptr inbounds %struct.UT_hash_table, ptr %530, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !31
  %533 = icmp eq ptr %526, %532
  br i1 %533, label %534, label %550

534:                                              ; preds = %525
  %535 = load ptr, ptr %14, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.UT_hash_handle, ptr %535, i32 0, i32 1
  %537 = load ptr, ptr %536, align 8, !tbaa !29
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.bpf_map, ptr %538, i32 0, i32 2
  %540 = getelementptr inbounds %struct.UT_hash_handle, ptr %539, i32 0, i32 0
  %541 = load ptr, ptr %540, align 8, !tbaa !14
  %542 = getelementptr inbounds %struct.UT_hash_table, ptr %541, i32 0, i32 5
  %543 = load i64, ptr %542, align 8, !tbaa !23
  %544 = getelementptr inbounds i8, ptr %537, i64 %543
  %545 = load ptr, ptr %4, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.bpf_map, ptr %545, i32 0, i32 2
  %547 = getelementptr inbounds %struct.UT_hash_handle, ptr %546, i32 0, i32 0
  %548 = load ptr, ptr %547, align 8, !tbaa !14
  %549 = getelementptr inbounds %struct.UT_hash_table, ptr %548, i32 0, i32 4
  store ptr %544, ptr %549, align 8, !tbaa !31
  br label %550

550:                                              ; preds = %534, %525
  %551 = load ptr, ptr %14, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.UT_hash_handle, ptr %551, i32 0, i32 1
  %553 = load ptr, ptr %552, align 8, !tbaa !29
  %554 = icmp ne ptr %553, null
  br i1 %554, label %555, label %570

555:                                              ; preds = %550
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.UT_hash_handle, ptr %556, i32 0, i32 2
  %558 = load ptr, ptr %557, align 8, !tbaa !30
  %559 = load ptr, ptr %14, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.UT_hash_handle, ptr %559, i32 0, i32 1
  %561 = load ptr, ptr %560, align 8, !tbaa !29
  %562 = load ptr, ptr %4, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.bpf_map, 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 !14
  %566 = getelementptr inbounds %struct.UT_hash_table, ptr %565, i32 0, i32 5
  %567 = load i64, ptr %566, align 8, !tbaa !23
  %568 = getelementptr inbounds i8, ptr %561, i64 %567
  %569 = getelementptr inbounds %struct.UT_hash_handle, ptr %568, i32 0, i32 2
  store ptr %558, ptr %569, align 8, !tbaa !30
  br label %577

570:                                              ; preds = %550
  br label %571

571:                                              ; preds = %570
  %572 = load ptr, ptr %14, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.UT_hash_handle, ptr %572, i32 0, i32 2
  %574 = load ptr, ptr %573, align 8, !tbaa !30
  store ptr %574, ptr %4, align 8, !tbaa !5
  br label %575

575:                                              ; preds = %571
  br label %576

576:                                              ; preds = %575
  br label %577

577:                                              ; preds = %576, %555
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.UT_hash_handle, ptr %578, i32 0, i32 2
  %580 = load ptr, ptr %579, align 8, !tbaa !30
  %581 = icmp ne ptr %580, null
  br i1 %581, label %582, label %597

582:                                              ; preds = %577
  %583 = load ptr, ptr %14, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.UT_hash_handle, ptr %583, i32 0, i32 1
  %585 = load ptr, ptr %584, align 8, !tbaa !29
  %586 = load ptr, ptr %14, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.UT_hash_handle, ptr %586, i32 0, i32 2
  %588 = load ptr, ptr %587, align 8, !tbaa !30
  %589 = load ptr, ptr %4, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.bpf_map, ptr %589, i32 0, i32 2
  %591 = getelementptr inbounds %struct.UT_hash_handle, ptr %590, i32 0, i32 0
  %592 = load ptr, ptr %591, align 8, !tbaa !14
  %593 = getelementptr inbounds %struct.UT_hash_table, ptr %592, i32 0, i32 5
  %594 = load i64, ptr %593, align 8, !tbaa !23
  %595 = getelementptr inbounds i8, ptr %588, i64 %594
  %596 = getelementptr inbounds %struct.UT_hash_handle, ptr %595, i32 0, i32 1
  store ptr %585, ptr %596, align 8, !tbaa !29
  br label %597

597:                                              ; preds = %582, %577
  br label %598

598:                                              ; preds = %597
  %599 = load ptr, ptr %14, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.UT_hash_handle, ptr %599, i32 0, i32 7
  %601 = load i32, ptr %600, align 4, !tbaa !32
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.bpf_map, ptr %602, i32 0, i32 2
  %604 = getelementptr inbounds %struct.UT_hash_handle, ptr %603, i32 0, i32 0
  %605 = load ptr, ptr %604, align 8, !tbaa !14
  %606 = getelementptr inbounds %struct.UT_hash_table, ptr %605, i32 0, i32 1
  %607 = load i32, ptr %606, align 8, !tbaa !17
  %608 = sub i32 %607, 1
  %609 = and i32 %601, %608
  store i32 %609, ptr %15, align 4, !tbaa !9
  br label %610

610:                                              ; preds = %598
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.bpf_map, ptr %613, i32 0, i32 2
  %615 = getelementptr inbounds %struct.UT_hash_handle, ptr %614, i32 0, i32 0
  %616 = load ptr, ptr %615, align 8, !tbaa !14
  %617 = getelementptr inbounds %struct.UT_hash_table, ptr %616, i32 0, i32 0
  %618 = load ptr, ptr %617, align 8, !tbaa !20
  %619 = load i32, ptr %15, align 4, !tbaa !9
  %620 = zext i32 %619 to i64
  %621 = getelementptr inbounds %struct.UT_hash_bucket, ptr %618, i64 %620
  store ptr %621, ptr %16, align 8, !tbaa !5
  %622 = load ptr, ptr %16, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.UT_hash_bucket, ptr %622, i32 0, i32 1
  %624 = load i32, ptr %623, align 8, !tbaa !33
  %625 = add i32 %624, -1
  store i32 %625, ptr %623, align 8, !tbaa !33
  %626 = load ptr, ptr %16, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.UT_hash_bucket, ptr %626, i32 0, i32 0
  %628 = load ptr, ptr %627, align 8, !tbaa !21
  %629 = load ptr, ptr %14, align 8, !tbaa !5
  %630 = icmp eq ptr %628, %629
  br i1 %630, label %631, label %637

631:                                              ; preds = %612
  %632 = load ptr, ptr %14, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.UT_hash_handle, ptr %632, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !34
  %635 = load ptr, ptr %16, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.UT_hash_bucket, ptr %635, i32 0, i32 0
  store ptr %634, ptr %636, align 8, !tbaa !21
  br label %637

637:                                              ; preds = %631, %612
  %638 = load ptr, ptr %14, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.UT_hash_handle, ptr %638, i32 0, i32 3
  %640 = load ptr, ptr %639, align 8, !tbaa !35
  %641 = icmp ne ptr %640, null
  br i1 %641, label %642, label %650

642:                                              ; preds = %637
  %643 = load ptr, ptr %14, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.UT_hash_handle, ptr %643, i32 0, i32 4
  %645 = load ptr, ptr %644, align 8, !tbaa !34
  %646 = load ptr, ptr %14, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.UT_hash_handle, ptr %646, i32 0, i32 3
  %648 = load ptr, ptr %647, align 8, !tbaa !35
  %649 = getelementptr inbounds %struct.UT_hash_handle, ptr %648, i32 0, i32 4
  store ptr %645, ptr %649, align 8, !tbaa !34
  br label %650

650:                                              ; preds = %642, %637
  %651 = load ptr, ptr %14, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.UT_hash_handle, ptr %651, i32 0, i32 4
  %653 = load ptr, ptr %652, align 8, !tbaa !34
  %654 = icmp ne ptr %653, null
  br i1 %654, label %655, label %663

655:                                              ; preds = %650
  %656 = load ptr, ptr %14, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.UT_hash_handle, ptr %656, i32 0, i32 3
  %658 = load ptr, ptr %657, align 8, !tbaa !35
  %659 = load ptr, ptr %14, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.UT_hash_handle, ptr %659, i32 0, i32 4
  %661 = load ptr, ptr %660, align 8, !tbaa !34
  %662 = getelementptr inbounds %struct.UT_hash_handle, ptr %661, i32 0, i32 3
  store ptr %658, ptr %662, align 8, !tbaa !35
  br label %663

663:                                              ; preds = %655, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  br label %664

664:                                              ; preds = %663
  br label %665

665:                                              ; preds = %664
  %666 = load ptr, ptr %4, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.bpf_map, ptr %666, i32 0, i32 2
  %668 = getelementptr inbounds %struct.UT_hash_handle, ptr %667, i32 0, i32 0
  %669 = load ptr, ptr %668, align 8, !tbaa !14
  %670 = getelementptr inbounds %struct.UT_hash_table, ptr %669, i32 0, i32 3
  %671 = load i32, ptr %670, align 8, !tbaa !36
  %672 = add i32 %671, -1
  store i32 %672, ptr %670, align 8, !tbaa !36
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %673

673:                                              ; preds = %665, %514
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  br label %674

674:                                              ; preds = %673
  br label %675

675:                                              ; preds = %674
  %676 = load ptr, ptr %7, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.bpf_map, ptr %676, i32 0, i32 1
  %678 = load ptr, ptr %677, align 8, !tbaa !37
  call void @free(ptr noundef %678) #4
  %679 = load ptr, ptr %7, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.bpf_map, ptr %679, i32 0, i32 0
  %681 = load ptr, ptr %680, align 8, !tbaa !38
  call void @free(ptr noundef %681) #4
  %682 = load ptr, ptr %7, align 8, !tbaa !5
  call void @free(ptr noundef %682) #4
  br label %683

683:                                              ; preds = %675, %498
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  ret i32 0
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !6, i64 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 = !{!16, !6, i64 8}
!30 = !{!16, !6, i64 16}
!31 = !{!18, !6, i64 24}
!32 = !{!16, !10, i64 52}
!33 = !{!22, !10, i64 8}
!34 = !{!16, !6, i64 32}
!35 = !{!16, !6, i64 24}
!36 = !{!18, !10, i64 16}
!37 = !{!15, !6, i64 8}
!38 = !{!15, !6, i64 0}


; 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: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #0

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

.lr.ph:                                           ; preds = %3, %.lr.ph
  %.0211290 = phi i32 [ %47, %.lr.ph ], [ -17973521, %3 ]
  %.0215289 = phi i32 [ %39, %.lr.ph ], [ -1640531527, %3 ]
  %.0220288 = phi ptr [ %48, %.lr.ph ], [ %1, %3 ]
  %.0221287 = phi i32 [ %49, %.lr.ph ], [ %2, %3 ]
  %.0222286 = phi i32 [ %43, %.lr.ph ], [ -1640531527, %3 ]
  %5 = load i32, ptr %.0220288, align 1
  %6 = getelementptr inbounds i8, ptr %.0220288, i64 4
  %7 = load i32, ptr %6, align 1
  %8 = add i32 %7, %.0222286
  %9 = getelementptr inbounds i8, ptr %.0220288, i64 8
  %10 = load i32, ptr %9, align 1
  %11 = add i32 %10, %.0211290
  %.neg268 = add i32 %5, %.0215289
  %12 = add i32 %8, %11
  %13 = sub i32 %.neg268, %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 %.0220288, i64 12
  %49 = add i32 %.0221287, -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
  %.0222.lcssa = phi i32 [ -1640531527, %3 ], [ %43, %.lr.ph ]
  %.0221.lcssa = phi i32 [ %2, %3 ], [ %49, %.lr.ph ]
  %.0220.lcssa = phi ptr [ %1, %3 ], [ %48, %.lr.ph ]
  %.0215.lcssa = phi i32 [ -1640531527, %3 ], [ %39, %.lr.ph ]
  %.0211.lcssa = phi i32 [ -17973521, %3 ], [ %47, %.lr.ph ]
  %51 = add i32 %.0211.lcssa, %2
  switch i32 %.0221.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 %.0220.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
  %.1212 = phi i32 [ %51, %._crit_edge ], [ %57, %52 ]
  %59 = getelementptr inbounds i8, ptr %.0220.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, %.1212
  br label %64

64:                                               ; preds = %58, %._crit_edge
  %.2213 = phi i32 [ %51, %._crit_edge ], [ %63, %58 ]
  %65 = getelementptr inbounds i8, ptr %.0220.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, %.2213
  br label %70

70:                                               ; preds = %64, %._crit_edge
  %.3214 = phi i32 [ %51, %._crit_edge ], [ %69, %64 ]
  %71 = getelementptr inbounds i8, ptr %.0220.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, %.0222.lcssa
  br label %76

76:                                               ; preds = %70, %._crit_edge
  %.1223 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %75, %70 ]
  %.4 = phi i32 [ %51, %._crit_edge ], [ %.3214, %70 ]
  %77 = getelementptr inbounds i8, ptr %.0220.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, %.1223
  br label %82

82:                                               ; preds = %76, %._crit_edge
  %.2224 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %81, %76 ]
  %.5 = phi i32 [ %51, %._crit_edge ], [ %.4, %76 ]
  %83 = getelementptr inbounds i8, ptr %.0220.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, %.2224
  br label %88

88:                                               ; preds = %82, %._crit_edge
  %.3225 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %87, %82 ]
  %.6 = phi i32 [ %51, %._crit_edge ], [ %.5, %82 ]
  %89 = getelementptr inbounds i8, ptr %.0220.lcssa, i64 4
  %90 = load i8, ptr %89, align 1, !tbaa !7
  %91 = zext i8 %90 to i32
  %92 = add i32 %.3225, %91
  br label %93

93:                                               ; preds = %88, %._crit_edge
  %.4226 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %92, %88 ]
  %.7 = phi i32 [ %51, %._crit_edge ], [ %.6, %88 ]
  %94 = getelementptr inbounds i8, ptr %.0220.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, %.0215.lcssa
  br label %99

99:                                               ; preds = %93, %._crit_edge
  %.5227 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %.4226, %93 ]
  %.1216 = phi i32 [ %.0215.lcssa, %._crit_edge ], [ %98, %93 ]
  %.8 = phi i32 [ %51, %._crit_edge ], [ %.7, %93 ]
  %100 = getelementptr inbounds i8, ptr %.0220.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, %.1216
  br label %105

105:                                              ; preds = %99, %._crit_edge
  %.6228 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %.5227, %99 ]
  %.2217 = phi i32 [ %.0215.lcssa, %._crit_edge ], [ %104, %99 ]
  %.9 = phi i32 [ %51, %._crit_edge ], [ %.8, %99 ]
  %106 = getelementptr inbounds i8, ptr %.0220.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, %.2217
  br label %111

111:                                              ; preds = %105, %._crit_edge
  %.7229 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %.6228, %105 ]
  %.3218 = phi i32 [ %.0215.lcssa, %._crit_edge ], [ %110, %105 ]
  %.10 = phi i32 [ %51, %._crit_edge ], [ %.9, %105 ]
  %112 = load i8, ptr %.0220.lcssa, align 1, !tbaa !7
  %113 = zext i8 %112 to i32
  %114 = add i32 %.3218, %113
  br label %115

115:                                              ; preds = %._crit_edge, %111
  %.8230 = phi i32 [ %.0222.lcssa, %._crit_edge ], [ %.7229, %111 ]
  %.4219 = phi i32 [ %.0215.lcssa, %._crit_edge ], [ %114, %111 ]
  %.11 = phi i32 [ %51, %._crit_edge ], [ %.10, %111 ]
  %116 = add i32 %.8230, %.11
  %117 = sub i32 %.4219, %116
  %118 = lshr i32 %.11, 13
  %119 = xor i32 %117, %118
  %120 = add i32 %.11, %119
  %121 = sub i32 %.8230, %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
  %.not240 = icmp eq ptr %162, null
  br i1 %.not240, label %.thread, label %.lr.ph298

.lr.ph298:                                        ; 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.ph298
  %.1296 = phi ptr [ %166, %.lr.ph298 ], [ %187, %184 ]
  %170 = getelementptr inbounds i8, ptr %.1296, 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 %.1296, 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 %.1296, 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 %.1296, i64 48
  %183 = load ptr, ptr %182, align 8, !tbaa !25
  %.not242 = icmp eq ptr %183, null
  br i1 %.not242, 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 %.1296, i64 16
  %190 = getelementptr inbounds i8, ptr %.1296, i64 24
  %191 = load ptr, ptr %190, align 8, !tbaa !27
  %192 = icmp eq ptr %191, null
  br i1 %192, label %193, label %199

193:                                              ; preds = %188
  %194 = getelementptr inbounds i8, ptr %.1296, i64 32
  %195 = load ptr, ptr %194, align 8, !tbaa !28
  %196 = icmp eq ptr %195, null
  br i1 %196, label %197, label %199

197:                                              ; preds = %193
  tail call void @free(ptr noundef %159) #3
  %198 = load ptr, ptr %153, align 8, !tbaa !10
  tail call void @free(ptr noundef %198) #3
  br label %245

199:                                              ; preds = %193, %188
  %200 = getelementptr inbounds i8, ptr %154, i64 24
  %201 = load ptr, ptr %200, align 8, !tbaa !29
  %202 = icmp eq ptr %189, %201
  br i1 %202, label %203, label %206

203:                                              ; preds = %199
  %204 = load i64, ptr %168, align 8, !tbaa !21
  %205 = getelementptr inbounds i8, ptr %191, i64 %204
  store ptr %205, ptr %200, align 8, !tbaa !29
  br label %206

206:                                              ; preds = %203, %199
  %207 = getelementptr inbounds i8, ptr %.1296, i64 32
  %208 = load ptr, ptr %207, align 8, !tbaa !28
  br i1 %192, label %213, label %209

209:                                              ; preds = %206
  %210 = load i64, ptr %168, align 8, !tbaa !21
  %211 = getelementptr inbounds i8, ptr %191, i64 %210
  %212 = getelementptr inbounds i8, ptr %211, i64 16
  store ptr %208, ptr %212, align 8, !tbaa !28
  br label %213

213:                                              ; preds = %206, %209
  %.0 = phi ptr [ %0, %209 ], [ %208, %206 ]
  %.not245 = icmp eq ptr %208, null
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.0, i64 16
  %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !10
  br i1 %.not245, label %._crit_edge304, label %214

214:                                              ; preds = %213
  %215 = getelementptr inbounds i8, ptr %.pre, i64 32
  %216 = load i64, ptr %215, align 8, !tbaa !21
  %217 = getelementptr inbounds i8, ptr %208, i64 %216
  %218 = getelementptr inbounds i8, ptr %217, i64 8
  store ptr %191, ptr %218, align 8, !tbaa !27
  br label %._crit_edge304

._crit_edge304:                                   ; preds = %213, %214
  %219 = getelementptr inbounds i8, ptr %.pre, i64 8
  %220 = load i32, ptr %219, align 8, !tbaa !15
  %221 = add i32 %220, -1
  %222 = and i32 %221, %151
  %223 = load ptr, ptr %.pre, align 8, !tbaa !18
  %224 = zext i32 %222 to i64
  %225 = getelementptr inbounds %struct.UT_hash_bucket, ptr %223, i64 %224
  %226 = getelementptr inbounds i8, ptr %225, i64 8
  %227 = load i32, ptr %226, align 8, !tbaa !30
  %228 = add i32 %227, -1
  store i32 %228, ptr %226, align 8, !tbaa !30
  %229 = load ptr, ptr %225, align 8, !tbaa !19
  %230 = icmp eq ptr %229, %189
  br i1 %230, label %231, label %234

231:                                              ; preds = %._crit_edge304
  %232 = getelementptr inbounds i8, ptr %.1296, i64 48
  %233 = load ptr, ptr %232, align 8, !tbaa !31
  store ptr %233, ptr %225, align 8, !tbaa !19
  br label %234

234:                                              ; preds = %231, %._crit_edge304
  %235 = getelementptr inbounds i8, ptr %.1296, i64 40
  %236 = load ptr, ptr %235, align 8, !tbaa !32
  %.not246 = icmp eq ptr %236, null
  %.phi.trans.insert306 = getelementptr inbounds i8, ptr %.1296, i64 48
  %.pre307 = load ptr, ptr %.phi.trans.insert306, align 8, !tbaa !31
  br i1 %.not246, label %._crit_edge305, label %237

237:                                              ; preds = %234
  %238 = getelementptr inbounds i8, ptr %236, i64 32
  store ptr %.pre307, ptr %238, align 8, !tbaa !31
  br label %._crit_edge305

._crit_edge305:                                   ; preds = %234, %237
  %.not247 = icmp eq ptr %.pre307, null
  br i1 %.not247, label %241, label %239

239:                                              ; preds = %._crit_edge305
  %240 = getelementptr inbounds i8, ptr %.pre307, i64 24
  store ptr %236, ptr %240, align 8, !tbaa !32
  br label %241

241:                                              ; preds = %239, %._crit_edge305
  %242 = getelementptr inbounds i8, ptr %.pre, i64 16
  %243 = load i32, ptr %242, align 8, !tbaa !33
  %244 = add i32 %243, -1
  store i32 %244, ptr %242, align 8, !tbaa !33
  br label %245

245:                                              ; preds = %241, %197
  %246 = getelementptr inbounds i8, ptr %.1296, i64 8
  %247 = load ptr, ptr %246, align 8, !tbaa !34
  tail call void @free(ptr noundef %247) #3
  %248 = load ptr, ptr %.1296, align 8, !tbaa !35
  tail call void @free(ptr noundef %248) #3
  tail call void @free(ptr noundef nonnull %.1296) #3
  br label %.thread

.thread:                                          ; preds = %181, %152, %115, %245
  ret i32 0
}

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

attributes #0 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind willreturn memory(argmem: read) }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = 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 = !{!13, !14, i64 52}
!23 = !{!11, !14, i64 64}
!24 = !{!11, !12, i64 56}
!25 = !{!11, !12, i64 48}
!26 = distinct !{!26, !6}
!27 = !{!13, !12, i64 8}
!28 = !{!13, !12, i64 16}
!29 = !{!16, !12, i64 24}
!30 = !{!20, !14, i64 8}
!31 = !{!13, !12, i64 32}
!32 = !{!13, !12, i64 24}
!33 = !{!16, !14, i64 16}
!34 = !{!11, !12, i64 8}
!35 = !{!11, !12, i64 0}


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