; LLVM IR from ARM-software/Arm-2D :: Helper/Source (arm_2d_helper_list)

; 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.__arm_2d_list_core_t = type { %struct.anon, %struct.anon.0, %struct.anon.22 }
%struct.anon = type { %struct.__arm_2d_list_core_cfg_t }
%struct.__arm_2d_list_core_cfg_t = type { %struct.arm_2d_size_t, ptr, %union.anon, ptr, ptr, ptr, i32, ptr, i16, i16, i16, i16, ptr }
%struct.arm_2d_size_t = type { i16, i16 }
%union.anon = type { ptr }
%struct.anon.0 = type { %struct.anon.1, %struct.anon.19 }
%struct.anon.1 = type { %struct.arm_2d_tile_t, %struct.arm_2d_tile_t, %struct.__arm_2d_list_work_area_t, i8, %union.anon.17 }
%struct.arm_2d_tile_t = type { %union.anon.2, %union.anon.13, %union.anon.16 }
%union.anon.2 = type { %struct.anon.3 }
%struct.anon.3 = type { i8, %union.arm_2d_color_info_t, %union.anon.6 }
%union.arm_2d_color_info_t = type { %struct.anon.4 }
%struct.anon.4 = type { i8 }
%union.anon.6 = type { i16 }
%union.anon.13 = type { %struct.arm_2d_region_t }
%struct.arm_2d_region_t = type { %union.anon.14, %union.anon.15 }
%union.anon.14 = type { %struct.arm_2d_location_t }
%struct.arm_2d_location_t = type { i16, i16 }
%union.anon.15 = type { %struct.arm_2d_size_t }
%union.anon.16 = type { ptr }
%struct.__arm_2d_list_work_area_t = type { ptr, %struct.arm_2d_region_t, %struct.arm_2d_list_item_param_t, i32 }
%struct.arm_2d_list_item_param_t = type { i8, i8, i16 }
%union.anon.17 = type { %struct.anon.18 }
%struct.anon.18 = type { i16 }
%struct.anon.19 = type { %struct.arm_2d_tile_t, i64, i64, %struct.arm_2d_helper_pi_slider_t, %struct.anon.20, i16, i8, i8, %struct.anon.21 }
%struct.arm_2d_helper_pi_slider_t = type { [40 x i8] }
%struct.anon.20 = type { i32, i32, i32, %struct.arm_2d_region_t }
%struct.anon.21 = type { i16, i32 }
%struct.anon.22 = type { i8, i8, i16, i32, %union.anon.23 }
%union.anon.23 = type { %struct.anon.24 }
%struct.anon.24 = type { i16, i16, i16, i16 }
%struct.arm_2d_list_item_t = type { %struct.anon.25, i16, %union.anon.26, ptr, ptr, %struct.anon.28, %struct.arm_2d_margin_t, %struct.arm_2d_size_t, i64 }
%struct.anon.25 = type { ptr }
%union.anon.26 = type { i16 }
%struct.anon.28 = type { i8, i8 }
%struct.arm_2d_margin_t = type { i8, i8, i8, i8 }

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

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

; Function Attrs: nounwind uwtable
define dso_local ptr @ARM_2D_LIST_ITERATOR_ARRAY(ptr noundef %0, i32 noundef %1, i64 noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i64, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i64 %2, ptr %7, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #2
  %11 = load ptr, ptr %5, align 8, !tbaa !5
  %12 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %11, i32 0, i32 0
  %13 = getelementptr inbounds %struct.anon, ptr %12, i32 0, i32 0
  %14 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %13, i32 0, i32 11
  %15 = load i16, ptr %14, align 2
  %16 = and i16 %15, 1
  %17 = icmp ne i16 %16, 0
  br i1 %17, label %18, label %168

18:                                               ; preds = %3
  %19 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %19, label %20 [
    i32 0, label %21
    i32 1, label %34
    i32 2, label %59
    i32 3, label %84
    i32 4, label %116
    i32 5, label %117
    i32 6, label %130
    i32 7, label %138
    i32 8, label %146
  ]

20:                                               ; preds = %18
  br label %21

21:                                               ; preds = %20, %18
  %22 = load i64, ptr %7, align 8, !tbaa !11
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %23, i32 0, i32 0
  %25 = getelementptr inbounds %struct.anon, ptr %24, i32 0, i32 0
  %26 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %25, i32 0, i32 9
  %27 = load i16, ptr %26, align 2, !tbaa !13
  %28 = zext i16 %27 to i64
  %29 = icmp uge i64 %22, %28
  br i1 %29, label %30, label %31

30:                                               ; preds = %21
  store ptr null, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %371

31:                                               ; preds = %21
  %32 = load i64, ptr %7, align 8, !tbaa !11
  %33 = trunc i64 %32 to i32
  store i32 %33, ptr %8, align 4, !tbaa !9
  br label %167

34:                                               ; preds = %18
  %35 = load i64, ptr %7, align 8, !tbaa !11
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %36, i32 0, i32 0
  %38 = getelementptr inbounds %struct.anon, ptr %37, i32 0, i32 0
  %39 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %38, i32 0, i32 9
  %40 = load i16, ptr %39, align 2, !tbaa !13
  %41 = zext i16 %40 to i64
  %42 = icmp uge i64 %35, %41
  br i1 %42, label %43, label %44

43:                                               ; preds = %34
  store ptr null, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %371

44:                                               ; preds = %34
  %45 = load i64, ptr %7, align 8, !tbaa !11
  %46 = trunc i64 %45 to i16
  %47 = load ptr, ptr %5, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %47, i32 0, i32 1
  %49 = getelementptr inbounds %struct.anon.0, ptr %48, i32 0, i32 0
  %50 = getelementptr inbounds %struct.anon.1, ptr %49, i32 0, i32 4
  %51 = getelementptr inbounds %struct.anon.18, ptr %50, i32 0, i32 0
  store i16 %46, ptr %51, align 2, !tbaa !31
  %52 = load ptr, ptr %5, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %52, i32 0, i32 1
  %54 = getelementptr inbounds %struct.anon.0, ptr %53, i32 0, i32 0
  %55 = getelementptr inbounds %struct.anon.1, ptr %54, i32 0, i32 4
  %56 = getelementptr inbounds %struct.anon.18, ptr %55, i32 0, i32 0
  %57 = load i16, ptr %56, align 2, !tbaa !31
  %58 = zext i16 %57 to i32
  store i32 %58, ptr %8, align 4, !tbaa !9
  br label %167

59:                                               ; preds = %18
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %60, i32 0, i32 1
  %62 = getelementptr inbounds %struct.anon.0, ptr %61, i32 0, i32 0
  %63 = getelementptr inbounds %struct.anon.1, ptr %62, i32 0, i32 4
  %64 = getelementptr inbounds %struct.anon.18, ptr %63, i32 0, i32 0
  %65 = load i16, ptr %64, align 2, !tbaa !31
  %66 = icmp ne i16 %65, 0
  br i1 %66, label %67, label %75

67:                                               ; preds = %59
  %68 = load ptr, ptr %5, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %68, i32 0, i32 1
  %70 = getelementptr inbounds %struct.anon.0, ptr %69, i32 0, i32 0
  %71 = getelementptr inbounds %struct.anon.1, ptr %70, i32 0, i32 4
  %72 = getelementptr inbounds %struct.anon.18, ptr %71, i32 0, i32 0
  %73 = load i16, ptr %72, align 2, !tbaa !31
  %74 = add i16 %73, -1
  store i16 %74, ptr %72, align 2, !tbaa !31
  br label %76

75:                                               ; preds = %59
  store ptr null, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %371

76:                                               ; preds = %67
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %77, i32 0, i32 1
  %79 = getelementptr inbounds %struct.anon.0, ptr %78, i32 0, i32 0
  %80 = getelementptr inbounds %struct.anon.1, ptr %79, i32 0, i32 4
  %81 = getelementptr inbounds %struct.anon.18, ptr %80, i32 0, i32 0
  %82 = load i16, ptr %81, align 2, !tbaa !31
  %83 = zext i16 %82 to i32
  store i32 %83, ptr %8, align 4, !tbaa !9
  br label %167

84:                                               ; preds = %18
  %85 = load ptr, ptr %5, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %85, i32 0, i32 1
  %87 = getelementptr inbounds %struct.anon.0, ptr %86, i32 0, i32 0
  %88 = getelementptr inbounds %struct.anon.1, ptr %87, i32 0, i32 4
  %89 = getelementptr inbounds %struct.anon.18, ptr %88, i32 0, i32 0
  %90 = load i16, ptr %89, align 2, !tbaa !31
  %91 = zext i16 %90 to i32
  %92 = add nsw i32 %91, 1
  %93 = load ptr, ptr %5, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %93, i32 0, i32 0
  %95 = getelementptr inbounds %struct.anon, ptr %94, i32 0, i32 0
  %96 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %95, i32 0, i32 9
  %97 = load i16, ptr %96, align 2, !tbaa !13
  %98 = zext i16 %97 to i32
  %99 = icmp sge i32 %92, %98
  br i1 %99, label %100, label %101

100:                                              ; preds = %84
  store ptr null, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %371

101:                                              ; preds = %84
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %102, i32 0, i32 1
  %104 = getelementptr inbounds %struct.anon.0, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds %struct.anon.1, ptr %104, i32 0, i32 4
  %106 = getelementptr inbounds %struct.anon.18, ptr %105, i32 0, i32 0
  %107 = load i16, ptr %106, align 2, !tbaa !31
  %108 = add i16 %107, 1
  store i16 %108, ptr %106, align 2, !tbaa !31
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %109, i32 0, i32 1
  %111 = getelementptr inbounds %struct.anon.0, ptr %110, i32 0, i32 0
  %112 = getelementptr inbounds %struct.anon.1, ptr %111, i32 0, i32 4
  %113 = getelementptr inbounds %struct.anon.18, ptr %112, i32 0, i32 0
  %114 = load i16, ptr %113, align 2, !tbaa !31
  %115 = zext i16 %114 to i32
  store i32 %115, ptr %8, align 4, !tbaa !9
  br label %167

116:                                              ; preds = %18
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %167

117:                                              ; preds = %18
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %118, i32 0, i32 1
  %120 = getelementptr inbounds %struct.anon.0, ptr %119, i32 0, i32 0
  %121 = getelementptr inbounds %struct.anon.1, ptr %120, i32 0, i32 4
  %122 = getelementptr inbounds %struct.anon.18, ptr %121, i32 0, i32 0
  store i16 0, ptr %122, align 2, !tbaa !31
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %123, i32 0, i32 1
  %125 = getelementptr inbounds %struct.anon.0, ptr %124, i32 0, i32 0
  %126 = getelementptr inbounds %struct.anon.1, ptr %125, i32 0, i32 4
  %127 = getelementptr inbounds %struct.anon.18, ptr %126, i32 0, i32 0
  %128 = load i16, ptr %127, align 2, !tbaa !31
  %129 = zext i16 %128 to i32
  store i32 %129, ptr %8, align 4, !tbaa !9
  br label %167

130:                                              ; preds = %18
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %131, i32 0, i32 1
  %133 = getelementptr inbounds %struct.anon.0, ptr %132, i32 0, i32 0
  %134 = getelementptr inbounds %struct.anon.1, ptr %133, i32 0, i32 4
  %135 = getelementptr inbounds %struct.anon.18, ptr %134, i32 0, i32 0
  %136 = load i16, ptr %135, align 2, !tbaa !31
  %137 = zext i16 %136 to i32
  store i32 %137, ptr %8, align 4, !tbaa !9
  br label %167

138:                                              ; preds = %18
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %139, i32 0, i32 0
  %141 = getelementptr inbounds %struct.anon, ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %141, i32 0, i32 9
  %143 = load i16, ptr %142, align 2, !tbaa !13
  %144 = zext i16 %143 to i32
  %145 = sub nsw i32 %144, 1
  store i32 %145, ptr %8, align 4, !tbaa !9
  br label %167

146:                                              ; preds = %18
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %147, i32 0, i32 0
  %149 = getelementptr inbounds %struct.anon, ptr %148, i32 0, i32 0
  %150 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %149, i32 0, i32 9
  %151 = load i16, ptr %150, align 2, !tbaa !13
  %152 = zext i16 %151 to i32
  %153 = sub nsw i32 %152, 1
  %154 = trunc i32 %153 to i16
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %155, i32 0, i32 1
  %157 = getelementptr inbounds %struct.anon.0, ptr %156, i32 0, i32 0
  %158 = getelementptr inbounds %struct.anon.1, ptr %157, i32 0, i32 4
  %159 = getelementptr inbounds %struct.anon.18, ptr %158, i32 0, i32 0
  store i16 %154, ptr %159, align 2, !tbaa !31
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %160, i32 0, i32 1
  %162 = getelementptr inbounds %struct.anon.0, ptr %161, i32 0, i32 0
  %163 = getelementptr inbounds %struct.anon.1, ptr %162, i32 0, i32 4
  %164 = getelementptr inbounds %struct.anon.18, ptr %163, i32 0, i32 0
  %165 = load i16, ptr %164, align 2, !tbaa !31
  %166 = zext i16 %165 to i32
  store i32 %166, ptr %8, align 4, !tbaa !9
  br label %167

167:                                              ; preds = %146, %138, %130, %117, %116, %101, %76, %44, %31
  br label %332

168:                                              ; preds = %3
  %169 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %169, label %170 [
    i32 0, label %171
    i32 1, label %182
    i32 2, label %212
    i32 3, label %250
    i32 4, label %280
    i32 5, label %281
    i32 6, label %294
    i32 7, label %302
    i32 8, label %310
  ]

170:                                              ; preds = %168
  br label %171

171:                                              ; preds = %170, %168
  %172 = load i64, ptr %7, align 8, !tbaa !11
  %173 = trunc i64 %172 to i32
  store i32 %173, ptr %8, align 4, !tbaa !9
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %174, i32 0, i32 0
  %176 = getelementptr inbounds %struct.anon, ptr %175, i32 0, i32 0
  %177 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %176, i32 0, i32 9
  %178 = load i16, ptr %177, align 2, !tbaa !13
  %179 = zext i16 %178 to i32
  %180 = load i32, ptr %8, align 4, !tbaa !9
  %181 = srem i32 %180, %179
  store i32 %181, ptr %8, align 4, !tbaa !9
  br label %331

182:                                              ; preds = %168
  %183 = load i64, ptr %7, align 8, !tbaa !11
  %184 = trunc i64 %183 to i16
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %185, i32 0, i32 1
  %187 = getelementptr inbounds %struct.anon.0, ptr %186, i32 0, i32 0
  %188 = getelementptr inbounds %struct.anon.1, ptr %187, i32 0, i32 4
  %189 = getelementptr inbounds %struct.anon.18, ptr %188, i32 0, i32 0
  store i16 %184, ptr %189, align 2, !tbaa !31
  %190 = load ptr, ptr %5, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %190, i32 0, i32 0
  %192 = getelementptr inbounds %struct.anon, ptr %191, i32 0, i32 0
  %193 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %192, i32 0, i32 9
  %194 = load i16, ptr %193, align 2, !tbaa !13
  %195 = zext i16 %194 to i32
  %196 = load ptr, ptr %5, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %196, i32 0, i32 1
  %198 = getelementptr inbounds %struct.anon.0, ptr %197, i32 0, i32 0
  %199 = getelementptr inbounds %struct.anon.1, ptr %198, i32 0, i32 4
  %200 = getelementptr inbounds %struct.anon.18, ptr %199, i32 0, i32 0
  %201 = load i16, ptr %200, align 2, !tbaa !31
  %202 = zext i16 %201 to i32
  %203 = srem i32 %202, %195
  %204 = trunc i32 %203 to i16
  store i16 %204, ptr %200, align 2, !tbaa !31
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %205, i32 0, i32 1
  %207 = getelementptr inbounds %struct.anon.0, ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %struct.anon.1, ptr %207, i32 0, i32 4
  %209 = getelementptr inbounds %struct.anon.18, ptr %208, i32 0, i32 0
  %210 = load i16, ptr %209, align 2, !tbaa !31
  %211 = zext i16 %210 to i32
  store i32 %211, ptr %8, align 4, !tbaa !9
  br label %331

212:                                              ; preds = %168
  %213 = load ptr, ptr %5, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %213, i32 0, i32 1
  %215 = getelementptr inbounds %struct.anon.0, ptr %214, i32 0, i32 0
  %216 = getelementptr inbounds %struct.anon.1, ptr %215, i32 0, i32 4
  %217 = getelementptr inbounds %struct.anon.18, ptr %216, i32 0, i32 0
  %218 = load i16, ptr %217, align 2, !tbaa !31
  %219 = icmp ne i16 %218, 0
  br i1 %219, label %220, label %228

220:                                              ; preds = %212
  %221 = load ptr, ptr %5, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %221, i32 0, i32 1
  %223 = getelementptr inbounds %struct.anon.0, ptr %222, i32 0, i32 0
  %224 = getelementptr inbounds %struct.anon.1, ptr %223, i32 0, i32 4
  %225 = getelementptr inbounds %struct.anon.18, ptr %224, i32 0, i32 0
  %226 = load i16, ptr %225, align 2, !tbaa !31
  %227 = add i16 %226, -1
  store i16 %227, ptr %225, align 2, !tbaa !31
  br label %242

228:                                              ; preds = %212
  %229 = load ptr, ptr %5, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %229, i32 0, i32 0
  %231 = getelementptr inbounds %struct.anon, ptr %230, i32 0, i32 0
  %232 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %231, i32 0, i32 9
  %233 = load i16, ptr %232, align 2, !tbaa !13
  %234 = zext i16 %233 to i32
  %235 = sub nsw i32 %234, 1
  %236 = trunc i32 %235 to i16
  %237 = load ptr, ptr %5, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %237, i32 0, i32 1
  %239 = getelementptr inbounds %struct.anon.0, ptr %238, i32 0, i32 0
  %240 = getelementptr inbounds %struct.anon.1, ptr %239, i32 0, i32 4
  %241 = getelementptr inbounds %struct.anon.18, ptr %240, i32 0, i32 0
  store i16 %236, ptr %241, align 2, !tbaa !31
  br label %242

242:                                              ; preds = %228, %220
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %243, i32 0, i32 1
  %245 = getelementptr inbounds %struct.anon.0, ptr %244, i32 0, i32 0
  %246 = getelementptr inbounds %struct.anon.1, ptr %245, i32 0, i32 4
  %247 = getelementptr inbounds %struct.anon.18, ptr %246, i32 0, i32 0
  %248 = load i16, ptr %247, align 2, !tbaa !31
  %249 = zext i16 %248 to i32
  store i32 %249, ptr %8, align 4, !tbaa !9
  br label %331

250:                                              ; preds = %168
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %251, i32 0, i32 1
  %253 = getelementptr inbounds %struct.anon.0, ptr %252, i32 0, i32 0
  %254 = getelementptr inbounds %struct.anon.1, ptr %253, i32 0, i32 4
  %255 = getelementptr inbounds %struct.anon.18, ptr %254, i32 0, i32 0
  %256 = load i16, ptr %255, align 2, !tbaa !31
  %257 = add i16 %256, 1
  store i16 %257, ptr %255, align 2, !tbaa !31
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %258, i32 0, i32 0
  %260 = getelementptr inbounds %struct.anon, ptr %259, i32 0, i32 0
  %261 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %260, i32 0, i32 9
  %262 = load i16, ptr %261, align 2, !tbaa !13
  %263 = zext i16 %262 to i32
  %264 = load ptr, ptr %5, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %264, i32 0, i32 1
  %266 = getelementptr inbounds %struct.anon.0, ptr %265, i32 0, i32 0
  %267 = getelementptr inbounds %struct.anon.1, ptr %266, i32 0, i32 4
  %268 = getelementptr inbounds %struct.anon.18, ptr %267, i32 0, i32 0
  %269 = load i16, ptr %268, align 2, !tbaa !31
  %270 = zext i16 %269 to i32
  %271 = srem i32 %270, %263
  %272 = trunc i32 %271 to i16
  store i16 %272, ptr %268, align 2, !tbaa !31
  %273 = load ptr, ptr %5, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %273, i32 0, i32 1
  %275 = getelementptr inbounds %struct.anon.0, ptr %274, i32 0, i32 0
  %276 = getelementptr inbounds %struct.anon.1, ptr %275, i32 0, i32 4
  %277 = getelementptr inbounds %struct.anon.18, ptr %276, i32 0, i32 0
  %278 = load i16, ptr %277, align 2, !tbaa !31
  %279 = zext i16 %278 to i32
  store i32 %279, ptr %8, align 4, !tbaa !9
  br label %331

280:                                              ; preds = %168
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %331

281:                                              ; preds = %168
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %282, i32 0, i32 1
  %284 = getelementptr inbounds %struct.anon.0, ptr %283, i32 0, i32 0
  %285 = getelementptr inbounds %struct.anon.1, ptr %284, i32 0, i32 4
  %286 = getelementptr inbounds %struct.anon.18, ptr %285, i32 0, i32 0
  store i16 0, ptr %286, align 2, !tbaa !31
  %287 = load ptr, ptr %5, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %287, i32 0, i32 1
  %289 = getelementptr inbounds %struct.anon.0, ptr %288, i32 0, i32 0
  %290 = getelementptr inbounds %struct.anon.1, ptr %289, i32 0, i32 4
  %291 = getelementptr inbounds %struct.anon.18, ptr %290, i32 0, i32 0
  %292 = load i16, ptr %291, align 2, !tbaa !31
  %293 = zext i16 %292 to i32
  store i32 %293, ptr %8, align 4, !tbaa !9
  br label %331

294:                                              ; preds = %168
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %295, i32 0, i32 1
  %297 = getelementptr inbounds %struct.anon.0, ptr %296, i32 0, i32 0
  %298 = getelementptr inbounds %struct.anon.1, ptr %297, i32 0, i32 4
  %299 = getelementptr inbounds %struct.anon.18, ptr %298, i32 0, i32 0
  %300 = load i16, ptr %299, align 2, !tbaa !31
  %301 = zext i16 %300 to i32
  store i32 %301, ptr %8, align 4, !tbaa !9
  br label %331

302:                                              ; preds = %168
  %303 = load ptr, ptr %5, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %303, i32 0, i32 0
  %305 = getelementptr inbounds %struct.anon, ptr %304, i32 0, i32 0
  %306 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %305, i32 0, i32 9
  %307 = load i16, ptr %306, align 2, !tbaa !13
  %308 = zext i16 %307 to i32
  %309 = sub nsw i32 %308, 1
  store i32 %309, ptr %8, align 4, !tbaa !9
  br label %331

310:                                              ; preds = %168
  %311 = load ptr, ptr %5, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %311, i32 0, i32 0
  %313 = getelementptr inbounds %struct.anon, ptr %312, i32 0, i32 0
  %314 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %313, i32 0, i32 9
  %315 = load i16, ptr %314, align 2, !tbaa !13
  %316 = zext i16 %315 to i32
  %317 = sub nsw i32 %316, 1
  %318 = trunc i32 %317 to i16
  %319 = load ptr, ptr %5, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %319, i32 0, i32 1
  %321 = getelementptr inbounds %struct.anon.0, ptr %320, i32 0, i32 0
  %322 = getelementptr inbounds %struct.anon.1, ptr %321, i32 0, i32 4
  %323 = getelementptr inbounds %struct.anon.18, ptr %322, i32 0, i32 0
  store i16 %318, ptr %323, align 2, !tbaa !31
  %324 = load ptr, ptr %5, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %324, i32 0, i32 1
  %326 = getelementptr inbounds %struct.anon.0, ptr %325, i32 0, i32 0
  %327 = getelementptr inbounds %struct.anon.1, ptr %326, i32 0, i32 4
  %328 = getelementptr inbounds %struct.anon.18, ptr %327, i32 0, i32 0
  %329 = load i16, ptr %328, align 2, !tbaa !31
  %330 = zext i16 %329 to i32
  store i32 %330, ptr %8, align 4, !tbaa !9
  br label %331

331:                                              ; preds = %310, %302, %294, %281, %280, %250, %242, %182, %171
  br label %332

332:                                              ; preds = %331, %167
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %333, i32 0, i32 0
  %335 = getelementptr inbounds %struct.anon, ptr %334, i32 0, i32 0
  %336 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %335, i32 0, i32 9
  %337 = load i16, ptr %336, align 2, !tbaa !13
  %338 = zext i16 %337 to i32
  %339 = load i32, ptr %8, align 4, !tbaa !9
  %340 = srem i32 %339, %338
  store i32 %340, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #2
  %341 = load ptr, ptr %5, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %341, i32 0, i32 0
  %343 = getelementptr inbounds %struct.anon, ptr %342, i32 0, i32 0
  %344 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %343, i32 0, i32 7
  %345 = load ptr, ptr %344, align 8, !tbaa !32
  %346 = ptrtoint ptr %345 to i64
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.__arm_2d_list_core_t, ptr %347, i32 0, i32 0
  %349 = getelementptr inbounds %struct.anon, ptr %348, i32 0, i32 0
  %350 = getelementptr inbounds %struct.__arm_2d_list_core_cfg_t, ptr %349, i32 0, i32 8
  %351 = load i16, ptr %350, align 8, !tbaa !33
  %352 = zext i16 %351 to i32
  %353 = load i32, ptr %8, align 4, !tbaa !9
  %354 = mul nsw i32 %352, %353
  %355 = sext i32 %354 to i64
  %356 = add i64 %346, %355
  %357 = inttoptr i64 %356 to ptr
  store ptr %357, ptr %10, align 8, !tbaa !5
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.arm_2d_list_item_t, ptr %358, i32 0, i32 2
  %360 = load i16, ptr %359, align 2
  %361 = lshr i16 %360, 2
  %362 = and i16 %361, 1
  %363 = icmp ne i16 %362, 0
  br i1 %363, label %369, label %364

364:                                              ; preds = %332
  %365 = load i32, ptr %8, align 4, !tbaa !9
  %366 = trunc i32 %365 to i16
  %367 = load ptr, ptr %10, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.arm_2d_list_item_t, ptr %367, i32 0, i32 1
  store i16 %366, ptr %368, align 8, !tbaa !34
  br label %369

369:                                              ; preds = %364, %332
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %370, ptr %4, align 8
  store i32 1, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #2
  br label %371

371:                                              ; preds = %369, %100, %75, %43, %30
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #2
  %372 = load ptr, ptr %4, align 8
  ret ptr %372
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !18, i64 66}
!14 = !{!"__arm_2d_list_core_t", !15, i64 0, !19, i64 80, !29, i64 272}
!15 = !{!"", !16, i64 0}
!16 = !{!"__arm_2d_list_core_cfg_t", !17, i64 0, !6, i64 8, !7, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !18, i64 64, !18, i64 66, !18, i64 68, !18, i64 70, !18, i64 70, !18, i64 70, !6, i64 72}
!17 = !{!"arm_2d_size_t", !18, i64 0, !18, i64 2}
!18 = !{!"short", !7, i64 0}
!19 = !{!"", !20, i64 0, !25, i64 80}
!20 = !{!"", !21, i64 0, !21, i64 24, !22, i64 48, !7, i64 72, !7, i64 74}
!21 = !{!"arm_2d_tile_t", !7, i64 0, !7, i64 4, !7, i64 16}
!22 = !{!"__arm_2d_list_work_area_t", !6, i64 0, !23, i64 8, !24, i64 16, !10, i64 20}
!23 = !{!"arm_2d_region_t", !7, i64 0, !7, i64 4}
!24 = !{!"arm_2d_list_item_param_t", !7, i64 0, !7, i64 0, !7, i64 1, !18, i64 2}
!25 = !{!"", !21, i64 0, !12, i64 24, !12, i64 32, !26, i64 40, !27, i64 80, !18, i64 100, !7, i64 102, !7, i64 103, !7, i64 103, !7, i64 103, !28, i64 104}
!26 = !{!"arm_2d_helper_pi_slider_t", !7, i64 0}
!27 = !{!"", !10, i64 0, !10, i64 4, !10, i64 8, !23, i64 12}
!28 = !{!"", !18, i64 0, !10, i64 4}
!29 = !{!"", !7, i64 0, !30, i64 1, !18, i64 2, !10, i64 4, !7, i64 8}
!30 = !{!"_Bool", !7, i64 0}
!31 = !{!7, !7, i64 0}
!32 = !{!14, !6, i64 56}
!33 = !{!14, !18, i64 64}
!34 = !{!35, !18, i64 8}
!35 = !{!"arm_2d_list_item_t", !36, i64 0, !18, i64 8, !7, i64 10, !6, i64 16, !6, i64 24, !37, i64 32, !38, i64 34, !17, i64 38, !12, i64 48}
!36 = !{!"", !6, i64 0}
!37 = !{!"", !7, i64 0, !7, i64 1}
!38 = !{!"arm_2d_margin_t", !7, i64 0, !7, i64 1, !7, i64 2, !7, i64 3}


; 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"

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, inaccessiblemem: none) uwtable
define dso_local ptr @ARM_2D_LIST_ITERATOR_ARRAY(ptr nocapture noundef %0, i32 noundef %1, i64 noundef %2) local_unnamed_addr #0 {
  %4 = getelementptr inbounds i8, ptr %0, i64 70
  %5 = load i16, ptr %4, align 2
  %6 = and i16 %5, 1
  %.not = icmp eq i16 %6, 0
  br i1 %.not, label %56, label %7

7:                                                ; preds = %3
  switch i32 %1, label %8 [
    i32 8, label %50
    i32 1, label %14
    i32 2, label %22
    i32 3, label %28
    i32 4, label %103
    i32 5, label %39
    i32 6, label %41
    i32 7, label %45
  ]

8:                                                ; preds = %7
  %9 = getelementptr inbounds i8, ptr %0, i64 66
  %10 = load i16, ptr %9, align 2, !tbaa !5
  %11 = zext i16 %10 to i64
  %.not66 = icmp ugt i64 %11, %2
  br i1 %.not66, label %12, label %124

12:                                               ; preds = %8
  %13 = trunc nuw nsw i64 %2 to i32
  br label %103

14:                                               ; preds = %7
  %15 = getelementptr inbounds i8, ptr %0, i64 66
  %16 = load i16, ptr %15, align 2, !tbaa !5
  %17 = zext i16 %16 to i64
  %.not65 = icmp ugt i64 %17, %2
  br i1 %.not65, label %18, label %124

18:                                               ; preds = %14
  %19 = trunc nuw i64 %2 to i16
  %20 = getelementptr inbounds i8, ptr %0, i64 154
  store i16 %19, ptr %20, align 2, !tbaa !28
  %21 = trunc i64 %2 to i32
  br label %103

22:                                               ; preds = %7
  %23 = getelementptr inbounds i8, ptr %0, i64 154
  %24 = load i16, ptr %23, align 2, !tbaa !28
  %.not64 = icmp eq i16 %24, 0
  br i1 %.not64, label %124, label %25

25:                                               ; preds = %22
  %26 = add i16 %24, -1
  store i16 %26, ptr %23, align 2, !tbaa !28
  %27 = zext i16 %26 to i32
  br label %103

28:                                               ; preds = %7
  %29 = getelementptr inbounds i8, ptr %0, i64 154
  %30 = load i16, ptr %29, align 2, !tbaa !28
  %31 = zext i16 %30 to i32
  %32 = add nuw nsw i32 %31, 1
  %33 = getelementptr inbounds i8, ptr %0, i64 66
  %34 = load i16, ptr %33, align 2, !tbaa !5
  %35 = zext i16 %34 to i32
  %.not63 = icmp ult i32 %32, %35
  br i1 %.not63, label %36, label %124

36:                                               ; preds = %28
  %37 = add i16 %30, 1
  store i16 %37, ptr %29, align 2, !tbaa !28
  %38 = zext i16 %37 to i32
  br label %103

39:                                               ; preds = %7
  %40 = getelementptr inbounds i8, ptr %0, i64 154
  store i16 0, ptr %40, align 2, !tbaa !28
  br label %103

41:                                               ; preds = %7
  %42 = getelementptr inbounds i8, ptr %0, i64 154
  %43 = load i16, ptr %42, align 2, !tbaa !28
  %44 = zext i16 %43 to i32
  br label %103

45:                                               ; preds = %7
  %46 = getelementptr inbounds i8, ptr %0, i64 66
  %47 = load i16, ptr %46, align 2, !tbaa !5
  %48 = zext i16 %47 to i32
  %49 = add nsw i32 %48, -1
  br label %103

50:                                               ; preds = %7
  %51 = getelementptr inbounds i8, ptr %0, i64 66
  %52 = load i16, ptr %51, align 2, !tbaa !5
  %53 = add i16 %52, -1
  %54 = getelementptr inbounds i8, ptr %0, i64 154
  store i16 %53, ptr %54, align 2, !tbaa !28
  %55 = zext i16 %53 to i32
  br label %103

56:                                               ; preds = %3
  switch i32 %1, label %57 [
    i32 8, label %97
    i32 1, label %63
    i32 2, label %70
    i32 3, label %78
    i32 4, label %103
    i32 5, label %86
    i32 6, label %88
    i32 7, label %92
  ]

57:                                               ; preds = %56
  %58 = trunc i64 %2 to i32
  %59 = getelementptr inbounds i8, ptr %0, i64 66
  %60 = load i16, ptr %59, align 2, !tbaa !5
  %61 = zext i16 %60 to i32
  %62 = srem i32 %58, %61
  br label %103

63:                                               ; preds = %56
  %64 = trunc i64 %2 to i16
  %65 = getelementptr inbounds i8, ptr %0, i64 154
  %66 = getelementptr inbounds i8, ptr %0, i64 66
  %67 = load i16, ptr %66, align 2, !tbaa !5
  %68 = urem i16 %64, %67
  store i16 %68, ptr %65, align 2, !tbaa !28
  %69 = zext i16 %68 to i32
  br label %103

70:                                               ; preds = %56
  %71 = getelementptr inbounds i8, ptr %0, i64 154
  %72 = load i16, ptr %71, align 2, !tbaa !28
  %.not62 = icmp eq i16 %72, 0
  br i1 %.not62, label %73, label %76

73:                                               ; preds = %70
  %74 = getelementptr inbounds i8, ptr %0, i64 66
  %75 = load i16, ptr %74, align 2, !tbaa !5
  br label %76

76:                                               ; preds = %70, %73
  %storemerge.in = phi i16 [ %75, %73 ], [ %72, %70 ]
  %storemerge = add i16 %storemerge.in, -1
  store i16 %storemerge, ptr %71, align 2, !tbaa !28
  %77 = zext i16 %storemerge to i32
  br label %103

78:                                               ; preds = %56
  %79 = getelementptr inbounds i8, ptr %0, i64 154
  %80 = load i16, ptr %79, align 2, !tbaa !28
  %81 = add i16 %80, 1
  %82 = getelementptr inbounds i8, ptr %0, i64 66
  %83 = load i16, ptr %82, align 2, !tbaa !5
  %84 = urem i16 %81, %83
  store i16 %84, ptr %79, align 2, !tbaa !28
  %85 = zext i16 %84 to i32
  br label %103

86:                                               ; preds = %56
  %87 = getelementptr inbounds i8, ptr %0, i64 154
  store i16 0, ptr %87, align 2, !tbaa !28
  br label %103

88:                                               ; preds = %56
  %89 = getelementptr inbounds i8, ptr %0, i64 154
  %90 = load i16, ptr %89, align 2, !tbaa !28
  %91 = zext i16 %90 to i32
  br label %103

92:                                               ; preds = %56
  %93 = getelementptr inbounds i8, ptr %0, i64 66
  %94 = load i16, ptr %93, align 2, !tbaa !5
  %95 = zext i16 %94 to i32
  %96 = add nsw i32 %95, -1
  br label %103

97:                                               ; preds = %56
  %98 = getelementptr inbounds i8, ptr %0, i64 66
  %99 = load i16, ptr %98, align 2, !tbaa !5
  %100 = add i16 %99, -1
  %101 = getelementptr inbounds i8, ptr %0, i64 154
  store i16 %100, ptr %101, align 2, !tbaa !28
  %102 = zext i16 %100 to i32
  br label %103

103:                                              ; preds = %56, %7, %57, %63, %76, %78, %86, %88, %92, %97, %12, %18, %25, %36, %39, %41, %45, %50
  %.058 = phi i32 [ %13, %12 ], [ %49, %45 ], [ %44, %41 ], [ 0, %39 ], [ %38, %36 ], [ %27, %25 ], [ %21, %18 ], [ %55, %50 ], [ %62, %57 ], [ %96, %92 ], [ %91, %88 ], [ 0, %86 ], [ %85, %78 ], [ %77, %76 ], [ %69, %63 ], [ %102, %97 ], [ 0, %7 ], [ 0, %56 ]
  %104 = getelementptr inbounds i8, ptr %0, i64 66
  %105 = load i16, ptr %104, align 2, !tbaa !5
  %106 = zext i16 %105 to i32
  %107 = srem i32 %.058, %106
  %108 = getelementptr inbounds i8, ptr %0, i64 56
  %109 = load ptr, ptr %108, align 8, !tbaa !29
  %110 = ptrtoint ptr %109 to i64
  %111 = getelementptr inbounds i8, ptr %0, i64 64
  %112 = load i16, ptr %111, align 8, !tbaa !30
  %113 = zext i16 %112 to i32
  %114 = mul nsw i32 %107, %113
  %115 = sext i32 %114 to i64
  %116 = add i64 %115, %110
  %117 = inttoptr i64 %116 to ptr
  %118 = getelementptr inbounds i8, ptr %117, i64 10
  %119 = load i16, ptr %118, align 2
  %120 = and i16 %119, 4
  %.not67 = icmp eq i16 %120, 0
  br i1 %.not67, label %121, label %124

121:                                              ; preds = %103
  %122 = trunc i32 %107 to i16
  %123 = getelementptr inbounds i8, ptr %117, i64 8
  store i16 %122, ptr %123, align 8, !tbaa !31
  br label %124

124:                                              ; preds = %103, %121, %28, %22, %14, %8
  %.0 = phi ptr [ null, %8 ], [ null, %14 ], [ null, %22 ], [ null, %28 ], [ %117, %121 ], [ %117, %103 ]
  ret ptr %.0
}

attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, 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" }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 66}
!6 = !{!"__arm_2d_list_core_t", !7, i64 0, !15, i64 80, !26, i64 272}
!7 = !{!"", !8, i64 0}
!8 = !{!"__arm_2d_list_core_cfg_t", !9, i64 0, !13, i64 8, !11, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !14, i64 48, !13, i64 56, !10, i64 64, !10, i64 66, !10, i64 68, !10, i64 70, !10, i64 70, !10, i64 70, !13, i64 72}
!9 = !{!"arm_2d_size_t", !10, i64 0, !10, i64 2}
!10 = !{!"short", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C/C++ TBAA"}
!13 = !{!"any pointer", !11, i64 0}
!14 = !{!"int", !11, i64 0}
!15 = !{!"", !16, i64 0, !21, i64 80}
!16 = !{!"", !17, i64 0, !17, i64 24, !18, i64 48, !11, i64 72, !11, i64 74}
!17 = !{!"arm_2d_tile_t", !11, i64 0, !11, i64 4, !11, i64 16}
!18 = !{!"__arm_2d_list_work_area_t", !13, i64 0, !19, i64 8, !20, i64 16, !14, i64 20}
!19 = !{!"arm_2d_region_t", !11, i64 0, !11, i64 4}
!20 = !{!"arm_2d_list_item_param_t", !11, i64 0, !11, i64 0, !11, i64 1, !10, i64 2}
!21 = !{!"", !17, i64 0, !22, i64 24, !22, i64 32, !23, i64 40, !24, i64 80, !10, i64 100, !11, i64 102, !11, i64 103, !11, i64 103, !11, i64 103, !25, i64 104}
!22 = !{!"long", !11, i64 0}
!23 = !{!"arm_2d_helper_pi_slider_t", !11, i64 0}
!24 = !{!"", !14, i64 0, !14, i64 4, !14, i64 8, !19, i64 12}
!25 = !{!"", !10, i64 0, !14, i64 4}
!26 = !{!"", !11, i64 0, !27, i64 1, !10, i64 2, !14, i64 4, !11, i64 8}
!27 = !{!"_Bool", !11, i64 0}
!28 = !{!11, !11, i64 0}
!29 = !{!6, !13, i64 56}
!30 = !{!6, !10, i64 64}
!31 = !{!32, !10, i64 8}
!32 = !{!"arm_2d_list_item_t", !33, i64 0, !10, i64 8, !11, i64 10, !13, i64 16, !13, i64 24, !34, i64 32, !35, i64 34, !9, i64 38, !22, i64 48}
!33 = !{!"", !13, i64 0}
!34 = !{!"", !11, i64 0, !11, i64 1}
!35 = !{!"arm_2d_margin_t", !11, i64 0, !11, i64 1, !11, i64 2, !11, i64 3}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass