; LLVM IR from ARM-software/Arm-2D :: Library/Source/arm_2d_alpha_blending.ll_ (arm_2d_cccn888_sw_tile_fill_with_masks)

; 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_op_control = type { %struct.anon.10 }
%struct.anon.10 = type { ptr, %struct.anon.11, %struct.anon.12, i16, i16, i16, i16, ptr, %union.anon.13 }
%struct.anon.11 = type { ptr, ptr }
%struct.anon.12 = type { ptr, ptr }
%union.anon.13 = type { %struct.arm_2d_op_trans_msk_opa_t }
%struct.arm_2d_op_trans_msk_opa_t = type { %struct.arm_2d_op_core_t, %struct.anon.67, %struct.anon.68, %union.anon.69, %struct.anon.71, %struct.anon.72, %struct.__arm_2d_transform_info_t, i8 }
%struct.arm_2d_op_core_t = type { %struct.anon.14, i64 }
%struct.anon.14 = type { ptr, ptr, %struct.anon.15, i8, %union.arm_2d_op_status_t, %struct.arm_2d_op_evt_t }
%struct.anon.15 = type { i8 }
%union.arm_2d_op_status_t = type { %struct.anon.16 }
%struct.anon.16 = type { i16 }
%struct.arm_2d_op_evt_t = type { ptr, ptr }
%struct.anon.67 = type { ptr, ptr }
%struct.anon.68 = type { ptr }
%union.anon.69 = type { %struct.anon.70 }
%struct.anon.70 = type { i32 }
%struct.anon.71 = type { ptr, %struct.arm_2d_tile_t }
%struct.arm_2d_tile_t = type { %union.anon.48, %union.anon.57, %union.anon.58 }
%union.anon.48 = type { %struct.anon.49 }
%struct.anon.49 = type { i8, %union.arm_2d_color_info_t, %union.anon.50 }
%union.arm_2d_color_info_t = type { %struct.anon.1 }
%struct.anon.1 = type { i8 }
%union.anon.50 = type { i16 }
%union.anon.57 = type { %struct.arm_2d_region_t }
%struct.arm_2d_region_t = type { %union.anon.3, %union.anon.4 }
%union.anon.3 = type { %struct.arm_2d_location_t }
%struct.arm_2d_location_t = type { i16, i16 }
%union.anon.4 = type { %struct.arm_2d_size_t }
%struct.arm_2d_size_t = type { i16, i16 }
%union.anon.58 = type { ptr }
%struct.anon.72 = type { ptr, ptr }
%struct.__arm_2d_transform_info_t = type { float, float, float, %struct.arm_2d_point_float_t, %union.anon.59, %struct.anon.60 }
%struct.arm_2d_point_float_t = type { float, float }
%union.anon.59 = type { i32 }
%struct.anon.60 = type { %struct.arm_2d_location_t, %struct.anon.61 }
%struct.anon.61 = type { %struct.arm_2d_region_t, %struct.arm_2d_tile_t }
%struct.__arm_2d_sub_task_t = type { %struct.anon.0 }
%struct.anon.0 = type <{ ptr, ptr, i8, i32, [3 x i8], %union.anon }>
%union.anon = type { %struct.__arm_2d_param_copy_orig_msk_t }
%struct.__arm_2d_param_copy_orig_msk_t = type { %union.anon.7, %struct.__arm_2d_tile_param_t, %struct.__arm_2d_tile_param_t }
%union.anon.7 = type { %struct.__arm_2d_param_copy_orig_t }
%struct.__arm_2d_param_copy_orig_t = type { %union.anon.6, %struct.__arm_2d_tile_param_t }
%union.anon.6 = type { %struct.__arm_2d_param_copy_t }
%struct.__arm_2d_param_copy_t = type { %struct.__arm_2d_tile_param_t, %struct.__arm_2d_tile_param_t, %struct.arm_2d_size_t }
%struct.__arm_2d_tile_param_t = type { ptr, i32, i16, %union.arm_2d_color_info_t, i8, %struct.arm_2d_region_t, %struct.arm_2d_region_t, ptr }
%struct.arm_2d_op_src_msk_t = type { %struct.arm_2d_op_core_t, %struct.anon.36, %struct.anon.37, i32, %struct.anon.38 }
%struct.anon.36 = type { ptr, ptr }
%struct.anon.37 = type { ptr }
%struct.anon.38 = type { ptr, ptr }
%struct.anon.79 = type { %union.arm_2d_color_info_t, %union.anon.80, i8, i8, %union.anon.82, %union.anon.86 }
%union.anon.80 = type { %struct.anon.81 }
%struct.anon.81 = type { i8 }
%union.anon.82 = type { %struct.anon.83 }
%struct.anon.83 = type { i8, i8 }
%union.anon.86 = type { [2 x ptr] }
%struct.__arm_2d_param_fill_msk_t = type { %union.anon.8, %struct.__arm_2d_tile_param_t, %struct.__arm_2d_tile_param_t }
%union.anon.8 = type { %struct.__arm_2d_param_fill_t }
%struct.__arm_2d_param_fill_t = type { %struct.__arm_2d_tile_param_t, %struct.__arm_2d_tile_param_t }

@ARM_2D_CTRL = external global %struct.__arm_2d_op_control, align 8
@.str.5 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [154 x i8], align 1
@__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks = external hidden unnamed_addr constant [77 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_masks_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_masks_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
define dso_local i32 @__arm_2d_cccn888_sw_tile_fill_with_masks(ptr noundef %0) #2 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #3
  %7 = load ptr, ptr %3, align 8, !tbaa !5
  %8 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %7, i32 0, i32 0
  %9 = getelementptr inbounds %struct.anon.0, ptr %8, i32 0, i32 1
  %10 = load ptr, ptr %9, align 8, !tbaa !9
  store ptr %10, ptr %4, align 8, !tbaa !5
  %11 = load ptr, ptr %4, align 8, !tbaa !5
  %12 = icmp eq ptr null, %11
  br i1 %12, label %13, label %14

13:                                               ; preds = %1
  store ptr getelementptr inbounds (%struct.anon.10, ptr @ARM_2D_CTRL, i32 0, i32 8), ptr %4, align 8, !tbaa !5
  br label %14

14:                                               ; preds = %13, %1
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  %16 = getelementptr inbounds %struct.arm_2d_op_src_msk_t, ptr %15, i32 0, i32 0
  %17 = getelementptr inbounds %struct.arm_2d_op_core_t, ptr %16, i32 0, i32 0
  %18 = getelementptr inbounds %struct.anon.14, ptr %17, i32 0, i32 1
  %19 = load ptr, ptr %18, align 8, !tbaa !12
  %20 = getelementptr inbounds %struct.anon.79, ptr %19, i32 0, i32 0
  %21 = load i8, ptr %20, align 8
  %22 = lshr i8 %21, 1
  %23 = and i8 %22, 7
  %24 = zext i8 %23 to i32
  %25 = icmp eq i32 5, %24
  br i1 %25, label %26, label %27

26:                                               ; preds = %14
  br label %28

27:                                               ; preds = %14
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.6, i32 noundef 1180, ptr noundef @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #4
  unreachable

28:                                               ; preds = %26
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.arm_2d_op_src_msk_t, ptr %29, i32 0, i32 4
  %31 = getelementptr inbounds %struct.anon.38, ptr %30, i32 0, i32 0
  %32 = load ptr, ptr %31, align 8, !tbaa !22
  %33 = icmp eq ptr null, %32
  br i1 %33, label %34, label %40

34:                                               ; preds = %28
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.arm_2d_op_src_msk_t, ptr %35, i32 0, i32 4
  %37 = getelementptr inbounds %struct.anon.38, ptr %36, i32 0, i32 1
  %38 = load ptr, ptr %37, align 8, !tbaa !23
  %39 = icmp eq ptr null, %38
  br i1 %39, label %41, label %40

40:                                               ; preds = %34, %28
  br label %42

41:                                               ; preds = %34
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str.6, i32 noundef 1184, ptr noundef @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #4
  unreachable

42:                                               ; preds = %40
  %43 = load ptr, ptr %3, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %43, i32 0, i32 0
  %45 = getelementptr inbounds %struct.anon.0, ptr %44, i32 0, i32 5
  %46 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %45, i32 0, i32 1
  %47 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %46, i32 0, i32 4
  %48 = load i8, ptr %47, align 1
  %49 = and i8 %48, 1
  %50 = zext i8 %49 to i32
  %51 = icmp ne i32 %50, 0
  br i1 %51, label %62, label %52

52:                                               ; preds = %42
  %53 = load ptr, ptr %3, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %53, i32 0, i32 0
  %55 = getelementptr inbounds %struct.anon.0, ptr %54, i32 0, i32 5
  %56 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %55, i32 0, i32 2
  %57 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %56, i32 0, i32 4
  %58 = load i8, ptr %57, align 1
  %59 = and i8 %58, 1
  %60 = zext i8 %59 to i32
  %61 = icmp ne i32 %60, 0
  br i1 %61, label %62, label %63

62:                                               ; preds = %52, %42
  store i32 -2, ptr %2, align 4
  store i32 1, ptr %5, align 4
  br label %1191

63:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.arm_2d_op_src_msk_t, ptr %64, i32 0, i32 3
  %66 = load i32, ptr %65, align 8, !tbaa !24
  store i32 %66, ptr %6, align 4, !tbaa !25
  %67 = load ptr, ptr %3, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %67, i32 0, i32 0
  %69 = getelementptr inbounds %struct.anon.0, ptr %68, i32 0, i32 5
  %70 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %69, i32 0, i32 1
  %71 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %70, i32 0, i32 3
  %72 = load i8, ptr %71, align 2, !tbaa !26
  %73 = zext i8 %72 to i32
  %74 = icmp eq i32 107, %73
  br i1 %74, label %75, label %271

75:                                               ; preds = %63
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %76, i32 0, i32 0
  %78 = getelementptr inbounds %struct.anon.0, ptr %77, i32 0, i32 5
  %79 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %78, i32 0, i32 2
  %80 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %79, i32 0, i32 3
  %81 = load i8, ptr %80, align 2, !tbaa !26
  %82 = zext i8 %81 to i32
  %83 = icmp eq i32 107, %82
  br i1 %83, label %84, label %271

84:                                               ; preds = %75
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %85, i32 0, i32 0
  %87 = getelementptr inbounds %struct.anon.0, ptr %86, i32 0, i32 5
  %88 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %87, i32 0, i32 2
  %89 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %88, i32 0, i32 5
  %90 = getelementptr inbounds %struct.arm_2d_region_t, ptr %89, i32 0, i32 1
  %91 = getelementptr inbounds %struct.arm_2d_size_t, ptr %90, i32 0, i32 1
  %92 = load i16, ptr %91, align 2, !tbaa !26
  %93 = sext i16 %92 to i32
  %94 = load ptr, ptr %3, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %94, i32 0, i32 0
  %96 = getelementptr inbounds %struct.anon.0, ptr %95, i32 0, i32 5
  %97 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %97, i32 0, i32 1
  %99 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %98, i32 0, i32 5
  %100 = getelementptr inbounds %struct.arm_2d_region_t, ptr %99, i32 0, i32 1
  %101 = getelementptr inbounds %struct.arm_2d_size_t, ptr %100, i32 0, i32 1
  %102 = load i16, ptr %101, align 2, !tbaa !26
  %103 = sext i16 %102 to i32
  %104 = icmp sge i32 %93, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %84
  br label %107

106:                                              ; preds = %84
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.6, i32 noundef 1213, ptr noundef @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #4
  unreachable

107:                                              ; preds = %105
  %108 = load i32, ptr %6, align 4, !tbaa !25
  %109 = and i32 %108, 12
  %110 = icmp ne i32 %109, 0
  br i1 %110, label %111, label %191

111:                                              ; preds = %107
  %112 = load ptr, ptr %3, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %112, i32 0, i32 0
  %114 = getelementptr inbounds %struct.anon.0, ptr %113, i32 0, i32 5
  %115 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %114, i32 0, i32 0
  %116 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %115, i32 0, i32 0
  %117 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %116, i32 0, i32 0
  %118 = load ptr, ptr %117, align 8, !tbaa !26
  %119 = load ptr, ptr %3, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %119, i32 0, i32 0
  %121 = getelementptr inbounds %struct.anon.0, ptr %120, i32 0, i32 5
  %122 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %121, i32 0, i32 0
  %123 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %122, i32 0, i32 0
  %124 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %123, i32 0, i32 2
  %125 = load i16, ptr %124, align 4, !tbaa !26
  %126 = load ptr, ptr %3, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %126, i32 0, i32 0
  %128 = getelementptr inbounds %struct.anon.0, ptr %127, i32 0, i32 5
  %129 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %128, i32 0, i32 0
  %130 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %129, i32 0, i32 0
  %131 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %130, i32 0, i32 5
  %132 = getelementptr inbounds %struct.arm_2d_region_t, ptr %131, i32 0, i32 1
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %133, i32 0, i32 0
  %135 = getelementptr inbounds %struct.anon.0, ptr %134, i32 0, i32 5
  %136 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %135, i32 0, i32 1
  %137 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %136, i32 0, i32 0
  %138 = load ptr, ptr %137, align 8, !tbaa !26
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %139, i32 0, i32 0
  %141 = getelementptr inbounds %struct.anon.0, ptr %140, i32 0, i32 5
  %142 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %141, i32 0, i32 1
  %143 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %142, i32 0, i32 2
  %144 = load i16, ptr %143, align 4, !tbaa !26
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %145, i32 0, i32 0
  %147 = getelementptr inbounds %struct.anon.0, ptr %146, i32 0, i32 5
  %148 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %147, i32 0, i32 1
  %149 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %148, i32 0, i32 5
  %150 = getelementptr inbounds %struct.arm_2d_region_t, ptr %149, i32 0, i32 1
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %151, i32 0, i32 0
  %153 = getelementptr inbounds %struct.anon.0, ptr %152, i32 0, i32 5
  %154 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %153, i32 0, i32 0
  %155 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %154, i32 0, i32 1
  %156 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %155, i32 0, i32 0
  %157 = load ptr, ptr %156, align 8, !tbaa !26
  %158 = load ptr, ptr %3, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %158, i32 0, i32 0
  %160 = getelementptr inbounds %struct.anon.0, ptr %159, i32 0, i32 5
  %161 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %160, i32 0, i32 0
  %162 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %161, i32 0, i32 1
  %163 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %162, i32 0, i32 2
  %164 = load i16, ptr %163, align 4, !tbaa !26
  %165 = load ptr, ptr %3, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %165, i32 0, i32 0
  %167 = getelementptr inbounds %struct.anon.0, ptr %166, i32 0, i32 5
  %168 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %167, i32 0, i32 0
  %169 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %168, i32 0, i32 1
  %170 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %169, i32 0, i32 5
  %171 = getelementptr inbounds %struct.arm_2d_region_t, ptr %170, i32 0, i32 1
  %172 = load ptr, ptr %3, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %172, i32 0, i32 0
  %174 = getelementptr inbounds %struct.anon.0, ptr %173, i32 0, i32 5
  %175 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %174, i32 0, i32 2
  %176 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %175, i32 0, i32 0
  %177 = load ptr, ptr %176, align 8, !tbaa !26
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %178, i32 0, i32 0
  %180 = getelementptr inbounds %struct.anon.0, ptr %179, i32 0, i32 5
  %181 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %180, i32 0, i32 2
  %182 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %181, i32 0, i32 2
  %183 = load i16, ptr %182, align 4, !tbaa !26
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %184, i32 0, i32 0
  %186 = getelementptr inbounds %struct.anon.0, ptr %185, i32 0, i32 5
  %187 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %186, i32 0, i32 2
  %188 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %187, i32 0, i32 5
  %189 = getelementptr inbounds %struct.arm_2d_region_t, ptr %188, i32 0, i32 1
  %190 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill_mirror(ptr noundef %118, i16 noundef signext %125, ptr noundef %132, ptr noundef %138, i16 noundef signext %144, ptr noundef %150, ptr noundef %157, i16 noundef signext %164, ptr noundef %171, ptr noundef %177, i16 noundef signext %183, ptr noundef %189, i32 noundef %190)
  br label %270

191:                                              ; preds = %107
  %192 = load ptr, ptr %3, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %192, i32 0, i32 0
  %194 = getelementptr inbounds %struct.anon.0, ptr %193, i32 0, i32 5
  %195 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %195, i32 0, i32 0
  %197 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %196, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8, !tbaa !26
  %199 = load ptr, ptr %3, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %199, i32 0, i32 0
  %201 = getelementptr inbounds %struct.anon.0, ptr %200, i32 0, i32 5
  %202 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %201, i32 0, i32 0
  %203 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %202, i32 0, i32 0
  %204 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %203, i32 0, i32 2
  %205 = load i16, ptr %204, align 4, !tbaa !26
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %struct.anon.0, ptr %207, i32 0, i32 5
  %209 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %208, i32 0, i32 0
  %210 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %209, i32 0, i32 0
  %211 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %210, i32 0, i32 5
  %212 = getelementptr inbounds %struct.arm_2d_region_t, ptr %211, i32 0, i32 1
  %213 = load ptr, ptr %3, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %213, i32 0, i32 0
  %215 = getelementptr inbounds %struct.anon.0, ptr %214, i32 0, i32 5
  %216 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %215, i32 0, i32 1
  %217 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %216, i32 0, i32 0
  %218 = load ptr, ptr %217, align 8, !tbaa !26
  %219 = load ptr, ptr %3, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %219, i32 0, i32 0
  %221 = getelementptr inbounds %struct.anon.0, ptr %220, i32 0, i32 5
  %222 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %221, i32 0, i32 1
  %223 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %222, i32 0, i32 2
  %224 = load i16, ptr %223, align 4, !tbaa !26
  %225 = load ptr, ptr %3, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %225, i32 0, i32 0
  %227 = getelementptr inbounds %struct.anon.0, ptr %226, i32 0, i32 5
  %228 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %227, i32 0, i32 1
  %229 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %228, i32 0, i32 5
  %230 = getelementptr inbounds %struct.arm_2d_region_t, ptr %229, i32 0, i32 1
  %231 = load ptr, ptr %3, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %231, i32 0, i32 0
  %233 = getelementptr inbounds %struct.anon.0, ptr %232, i32 0, i32 5
  %234 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %233, i32 0, i32 0
  %235 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %234, i32 0, i32 1
  %236 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %235, i32 0, i32 0
  %237 = load ptr, ptr %236, align 8, !tbaa !26
  %238 = load ptr, ptr %3, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %238, i32 0, i32 0
  %240 = getelementptr inbounds %struct.anon.0, ptr %239, i32 0, i32 5
  %241 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %240, i32 0, i32 0
  %242 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %241, i32 0, i32 1
  %243 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %242, i32 0, i32 2
  %244 = load i16, ptr %243, align 4, !tbaa !26
  %245 = load ptr, ptr %3, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %245, i32 0, i32 0
  %247 = getelementptr inbounds %struct.anon.0, ptr %246, i32 0, i32 5
  %248 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %247, i32 0, i32 0
  %249 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %248, i32 0, i32 1
  %250 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %249, i32 0, i32 5
  %251 = getelementptr inbounds %struct.arm_2d_region_t, ptr %250, i32 0, i32 1
  %252 = load ptr, ptr %3, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %252, i32 0, i32 0
  %254 = getelementptr inbounds %struct.anon.0, ptr %253, i32 0, i32 5
  %255 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %254, i32 0, i32 2
  %256 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %255, i32 0, i32 0
  %257 = load ptr, ptr %256, align 8, !tbaa !26
  %258 = load ptr, ptr %3, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %258, i32 0, i32 0
  %260 = getelementptr inbounds %struct.anon.0, ptr %259, i32 0, i32 5
  %261 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %260, i32 0, i32 2
  %262 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %261, i32 0, i32 2
  %263 = load i16, ptr %262, align 4, !tbaa !26
  %264 = load ptr, ptr %3, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %264, i32 0, i32 0
  %266 = getelementptr inbounds %struct.anon.0, ptr %265, i32 0, i32 5
  %267 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %266, i32 0, i32 2
  %268 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %267, i32 0, i32 5
  %269 = getelementptr inbounds %struct.arm_2d_region_t, ptr %268, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill(ptr noundef %198, i16 noundef signext %205, ptr noundef %212, ptr noundef %218, i16 noundef signext %224, ptr noundef %230, ptr noundef %237, i16 noundef signext %244, ptr noundef %251, ptr noundef %257, i16 noundef signext %263, ptr noundef %269)
  br label %270

270:                                              ; preds = %191, %111
  br label %1190

271:                                              ; preds = %75, %63
  %272 = load ptr, ptr %3, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %272, i32 0, i32 0
  %274 = getelementptr inbounds %struct.anon.0, ptr %273, i32 0, i32 5
  %275 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %274, i32 0, i32 1
  %276 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %275, i32 0, i32 3
  %277 = load i8, ptr %276, align 2, !tbaa !26
  %278 = zext i8 %277 to i32
  %279 = icmp eq i32 107, %278
  br i1 %279, label %280, label %636

280:                                              ; preds = %271
  %281 = load ptr, ptr %3, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %281, i32 0, i32 0
  %283 = getelementptr inbounds %struct.anon.0, ptr %282, i32 0, i32 5
  %284 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %283, i32 0, i32 2
  %285 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %284, i32 0, i32 3
  %286 = load i8, ptr %285, align 2, !tbaa !26
  %287 = zext i8 %286 to i32
  %288 = icmp ne i32 107, %287
  br i1 %288, label %289, label %636

289:                                              ; preds = %280
  %290 = load i32, ptr %6, align 4, !tbaa !25
  %291 = and i32 %290, 12
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %465

293:                                              ; preds = %289
  %294 = load ptr, ptr %3, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %294, i32 0, i32 0
  %296 = getelementptr inbounds %struct.anon.0, ptr %295, i32 0, i32 5
  %297 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %296, i32 0, i32 2
  %298 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %297, i32 0, i32 5
  %299 = getelementptr inbounds %struct.arm_2d_region_t, ptr %298, i32 0, i32 1
  %300 = getelementptr inbounds %struct.arm_2d_size_t, ptr %299, i32 0, i32 1
  %301 = load i16, ptr %300, align 2, !tbaa !26
  %302 = sext i16 %301 to i32
  %303 = icmp sgt i32 %302, 1
  br i1 %303, label %304, label %384

304:                                              ; preds = %293
  %305 = load ptr, ptr %3, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %305, i32 0, i32 0
  %307 = getelementptr inbounds %struct.anon.0, ptr %306, i32 0, i32 5
  %308 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %307, i32 0, i32 0
  %309 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %308, i32 0, i32 0
  %310 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %309, i32 0, i32 0
  %311 = load ptr, ptr %310, align 8, !tbaa !26
  %312 = load ptr, ptr %3, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %312, i32 0, i32 0
  %314 = getelementptr inbounds %struct.anon.0, ptr %313, i32 0, i32 5
  %315 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %314, i32 0, i32 0
  %316 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %315, i32 0, i32 0
  %317 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %316, i32 0, i32 2
  %318 = load i16, ptr %317, align 4, !tbaa !26
  %319 = load ptr, ptr %3, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %319, i32 0, i32 0
  %321 = getelementptr inbounds %struct.anon.0, ptr %320, i32 0, i32 5
  %322 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %321, i32 0, i32 0
  %323 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %322, i32 0, i32 0
  %324 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %323, i32 0, i32 5
  %325 = getelementptr inbounds %struct.arm_2d_region_t, ptr %324, i32 0, i32 1
  %326 = load ptr, ptr %3, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %326, i32 0, i32 0
  %328 = getelementptr inbounds %struct.anon.0, ptr %327, i32 0, i32 5
  %329 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %328, i32 0, i32 1
  %330 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %329, i32 0, i32 0
  %331 = load ptr, ptr %330, align 8, !tbaa !26
  %332 = load ptr, ptr %3, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %332, i32 0, i32 0
  %334 = getelementptr inbounds %struct.anon.0, ptr %333, i32 0, i32 5
  %335 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %334, i32 0, i32 1
  %336 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %335, i32 0, i32 2
  %337 = load i16, ptr %336, align 4, !tbaa !26
  %338 = load ptr, ptr %3, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %338, i32 0, i32 0
  %340 = getelementptr inbounds %struct.anon.0, ptr %339, i32 0, i32 5
  %341 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %340, i32 0, i32 1
  %342 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %341, i32 0, i32 5
  %343 = getelementptr inbounds %struct.arm_2d_region_t, ptr %342, i32 0, i32 1
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %344, i32 0, i32 0
  %346 = getelementptr inbounds %struct.anon.0, ptr %345, i32 0, i32 5
  %347 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %346, i32 0, i32 0
  %348 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %347, i32 0, i32 1
  %349 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %348, i32 0, i32 0
  %350 = load ptr, ptr %349, align 8, !tbaa !26
  %351 = load ptr, ptr %3, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %351, i32 0, i32 0
  %353 = getelementptr inbounds %struct.anon.0, ptr %352, i32 0, i32 5
  %354 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %353, i32 0, i32 0
  %355 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %354, i32 0, i32 1
  %356 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %355, i32 0, i32 2
  %357 = load i16, ptr %356, align 4, !tbaa !26
  %358 = load ptr, ptr %3, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %358, i32 0, i32 0
  %360 = getelementptr inbounds %struct.anon.0, ptr %359, i32 0, i32 5
  %361 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %360, i32 0, i32 0
  %362 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %361, i32 0, i32 1
  %363 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %362, i32 0, i32 5
  %364 = getelementptr inbounds %struct.arm_2d_region_t, ptr %363, i32 0, i32 1
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %365, i32 0, i32 0
  %367 = getelementptr inbounds %struct.anon.0, ptr %366, i32 0, i32 5
  %368 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %367, i32 0, i32 2
  %369 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %368, i32 0, i32 0
  %370 = load ptr, ptr %369, align 8, !tbaa !26
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %371, i32 0, i32 0
  %373 = getelementptr inbounds %struct.anon.0, ptr %372, i32 0, i32 5
  %374 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %373, i32 0, i32 2
  %375 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %374, i32 0, i32 2
  %376 = load i16, ptr %375, align 4, !tbaa !26
  %377 = load ptr, ptr %3, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %377, i32 0, i32 0
  %379 = getelementptr inbounds %struct.anon.0, ptr %378, i32 0, i32 5
  %380 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %379, i32 0, i32 2
  %381 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %380, i32 0, i32 5
  %382 = getelementptr inbounds %struct.arm_2d_region_t, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill_mirror(ptr noundef %311, i16 noundef signext %318, ptr noundef %325, ptr noundef %331, i16 noundef signext %337, ptr noundef %343, ptr noundef %350, i16 noundef signext %357, ptr noundef %364, ptr noundef %370, i16 noundef signext %376, ptr noundef %382, i32 noundef %383)
  br label %464

384:                                              ; preds = %293
  %385 = load ptr, ptr %3, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %385, i32 0, i32 0
  %387 = getelementptr inbounds %struct.anon.0, ptr %386, i32 0, i32 5
  %388 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %387, i32 0, i32 0
  %389 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %388, i32 0, i32 0
  %390 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %389, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8, !tbaa !26
  %392 = load ptr, ptr %3, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %392, i32 0, i32 0
  %394 = getelementptr inbounds %struct.anon.0, ptr %393, i32 0, i32 5
  %395 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %394, i32 0, i32 0
  %396 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %395, i32 0, i32 0
  %397 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %396, i32 0, i32 2
  %398 = load i16, ptr %397, align 4, !tbaa !26
  %399 = load ptr, ptr %3, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %399, i32 0, i32 0
  %401 = getelementptr inbounds %struct.anon.0, ptr %400, i32 0, i32 5
  %402 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %401, i32 0, i32 0
  %403 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %402, i32 0, i32 0
  %404 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %403, i32 0, i32 5
  %405 = getelementptr inbounds %struct.arm_2d_region_t, ptr %404, i32 0, i32 1
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %406, i32 0, i32 0
  %408 = getelementptr inbounds %struct.anon.0, ptr %407, i32 0, i32 5
  %409 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %408, i32 0, i32 1
  %410 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %409, i32 0, i32 0
  %411 = load ptr, ptr %410, align 8, !tbaa !26
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %412, i32 0, i32 0
  %414 = getelementptr inbounds %struct.anon.0, ptr %413, i32 0, i32 5
  %415 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %414, i32 0, i32 1
  %416 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %415, i32 0, i32 2
  %417 = load i16, ptr %416, align 4, !tbaa !26
  %418 = load ptr, ptr %3, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %418, i32 0, i32 0
  %420 = getelementptr inbounds %struct.anon.0, ptr %419, i32 0, i32 5
  %421 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %420, i32 0, i32 1
  %422 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %421, i32 0, i32 5
  %423 = getelementptr inbounds %struct.arm_2d_region_t, ptr %422, i32 0, i32 1
  %424 = load ptr, ptr %3, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %424, i32 0, i32 0
  %426 = getelementptr inbounds %struct.anon.0, ptr %425, i32 0, i32 5
  %427 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %426, i32 0, i32 0
  %428 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %427, i32 0, i32 1
  %429 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %428, i32 0, i32 0
  %430 = load ptr, ptr %429, align 8, !tbaa !26
  %431 = load ptr, ptr %3, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %431, i32 0, i32 0
  %433 = getelementptr inbounds %struct.anon.0, ptr %432, i32 0, i32 5
  %434 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %433, i32 0, i32 0
  %435 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %434, i32 0, i32 1
  %436 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %435, i32 0, i32 2
  %437 = load i16, ptr %436, align 4, !tbaa !26
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %438, i32 0, i32 0
  %440 = getelementptr inbounds %struct.anon.0, ptr %439, i32 0, i32 5
  %441 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %440, i32 0, i32 0
  %442 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %441, i32 0, i32 1
  %443 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %442, i32 0, i32 5
  %444 = getelementptr inbounds %struct.arm_2d_region_t, ptr %443, i32 0, i32 1
  %445 = load ptr, ptr %3, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %445, i32 0, i32 0
  %447 = getelementptr inbounds %struct.anon.0, ptr %446, i32 0, i32 5
  %448 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %447, i32 0, i32 2
  %449 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %448, i32 0, i32 0
  %450 = load ptr, ptr %449, align 8, !tbaa !26
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %451, i32 0, i32 0
  %453 = getelementptr inbounds %struct.anon.0, ptr %452, i32 0, i32 5
  %454 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %453, i32 0, i32 2
  %455 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %454, i32 0, i32 2
  %456 = load i16, ptr %455, align 4, !tbaa !26
  %457 = load ptr, ptr %3, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %457, i32 0, i32 0
  %459 = getelementptr inbounds %struct.anon.0, ptr %458, i32 0, i32 5
  %460 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %459, i32 0, i32 2
  %461 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %460, i32 0, i32 5
  %462 = getelementptr inbounds %struct.arm_2d_region_t, ptr %461, i32 0, i32 1
  %463 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill_mirror(ptr noundef %391, i16 noundef signext %398, ptr noundef %405, ptr noundef %411, i16 noundef signext %417, ptr noundef %423, ptr noundef %430, i16 noundef signext %437, ptr noundef %444, ptr noundef %450, i16 noundef signext %456, ptr noundef %462, i32 noundef %463)
  br label %464

464:                                              ; preds = %384, %304
  br label %635

465:                                              ; preds = %289
  %466 = load ptr, ptr %3, align 8, !tbaa !5
  %467 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %466, i32 0, i32 0
  %468 = getelementptr inbounds %struct.anon.0, ptr %467, i32 0, i32 5
  %469 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %468, i32 0, i32 2
  %470 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %469, i32 0, i32 5
  %471 = getelementptr inbounds %struct.arm_2d_region_t, ptr %470, i32 0, i32 1
  %472 = getelementptr inbounds %struct.arm_2d_size_t, ptr %471, i32 0, i32 1
  %473 = load i16, ptr %472, align 2, !tbaa !26
  %474 = sext i16 %473 to i32
  %475 = icmp sgt i32 %474, 1
  br i1 %475, label %476, label %555

476:                                              ; preds = %465
  %477 = load ptr, ptr %3, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %477, i32 0, i32 0
  %479 = getelementptr inbounds %struct.anon.0, ptr %478, i32 0, i32 5
  %480 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %479, i32 0, i32 0
  %481 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %480, i32 0, i32 0
  %482 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %481, i32 0, i32 0
  %483 = load ptr, ptr %482, align 8, !tbaa !26
  %484 = load ptr, ptr %3, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %484, i32 0, i32 0
  %486 = getelementptr inbounds %struct.anon.0, ptr %485, i32 0, i32 5
  %487 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %486, i32 0, i32 0
  %488 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %487, i32 0, i32 0
  %489 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %488, i32 0, i32 2
  %490 = load i16, ptr %489, align 4, !tbaa !26
  %491 = load ptr, ptr %3, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %491, i32 0, i32 0
  %493 = getelementptr inbounds %struct.anon.0, ptr %492, i32 0, i32 5
  %494 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %493, i32 0, i32 0
  %495 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %494, i32 0, i32 0
  %496 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %495, i32 0, i32 5
  %497 = getelementptr inbounds %struct.arm_2d_region_t, ptr %496, i32 0, i32 1
  %498 = load ptr, ptr %3, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %498, i32 0, i32 0
  %500 = getelementptr inbounds %struct.anon.0, ptr %499, i32 0, i32 5
  %501 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %500, i32 0, i32 1
  %502 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %501, i32 0, i32 0
  %503 = load ptr, ptr %502, align 8, !tbaa !26
  %504 = load ptr, ptr %3, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %504, i32 0, i32 0
  %506 = getelementptr inbounds %struct.anon.0, ptr %505, i32 0, i32 5
  %507 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %506, i32 0, i32 1
  %508 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %507, i32 0, i32 2
  %509 = load i16, ptr %508, align 4, !tbaa !26
  %510 = load ptr, ptr %3, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %510, i32 0, i32 0
  %512 = getelementptr inbounds %struct.anon.0, ptr %511, i32 0, i32 5
  %513 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %512, i32 0, i32 1
  %514 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %513, i32 0, i32 5
  %515 = getelementptr inbounds %struct.arm_2d_region_t, ptr %514, i32 0, i32 1
  %516 = load ptr, ptr %3, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %516, i32 0, i32 0
  %518 = getelementptr inbounds %struct.anon.0, ptr %517, i32 0, i32 5
  %519 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %518, i32 0, i32 0
  %520 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %519, i32 0, i32 1
  %521 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %520, i32 0, i32 0
  %522 = load ptr, ptr %521, align 8, !tbaa !26
  %523 = load ptr, ptr %3, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %523, i32 0, i32 0
  %525 = getelementptr inbounds %struct.anon.0, ptr %524, i32 0, i32 5
  %526 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %525, i32 0, i32 0
  %527 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %526, i32 0, i32 1
  %528 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %527, i32 0, i32 2
  %529 = load i16, ptr %528, align 4, !tbaa !26
  %530 = load ptr, ptr %3, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %530, i32 0, i32 0
  %532 = getelementptr inbounds %struct.anon.0, ptr %531, i32 0, i32 5
  %533 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %532, i32 0, i32 0
  %534 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %533, i32 0, i32 1
  %535 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %534, i32 0, i32 5
  %536 = getelementptr inbounds %struct.arm_2d_region_t, ptr %535, i32 0, i32 1
  %537 = load ptr, ptr %3, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %537, i32 0, i32 0
  %539 = getelementptr inbounds %struct.anon.0, ptr %538, i32 0, i32 5
  %540 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %539, i32 0, i32 2
  %541 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %540, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !26
  %543 = load ptr, ptr %3, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %543, i32 0, i32 0
  %545 = getelementptr inbounds %struct.anon.0, ptr %544, i32 0, i32 5
  %546 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %545, i32 0, i32 2
  %547 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %546, i32 0, i32 2
  %548 = load i16, ptr %547, align 4, !tbaa !26
  %549 = load ptr, ptr %3, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %549, i32 0, i32 0
  %551 = getelementptr inbounds %struct.anon.0, ptr %550, i32 0, i32 5
  %552 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %551, i32 0, i32 2
  %553 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %552, i32 0, i32 5
  %554 = getelementptr inbounds %struct.arm_2d_region_t, ptr %553, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill(ptr noundef %483, i16 noundef signext %490, ptr noundef %497, ptr noundef %503, i16 noundef signext %509, ptr noundef %515, ptr noundef %522, i16 noundef signext %529, ptr noundef %536, ptr noundef %542, i16 noundef signext %548, ptr noundef %554)
  br label %634

555:                                              ; preds = %465
  %556 = load ptr, ptr %3, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %556, i32 0, i32 0
  %558 = getelementptr inbounds %struct.anon.0, ptr %557, i32 0, i32 5
  %559 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %558, i32 0, i32 0
  %560 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %559, i32 0, i32 0
  %561 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %560, i32 0, i32 0
  %562 = load ptr, ptr %561, align 8, !tbaa !26
  %563 = load ptr, ptr %3, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %563, i32 0, i32 0
  %565 = getelementptr inbounds %struct.anon.0, ptr %564, i32 0, i32 5
  %566 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %565, i32 0, i32 0
  %567 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %566, i32 0, i32 0
  %568 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %567, i32 0, i32 2
  %569 = load i16, ptr %568, align 4, !tbaa !26
  %570 = load ptr, ptr %3, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %570, i32 0, i32 0
  %572 = getelementptr inbounds %struct.anon.0, ptr %571, i32 0, i32 5
  %573 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %572, i32 0, i32 0
  %574 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %573, i32 0, i32 0
  %575 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %574, i32 0, i32 5
  %576 = getelementptr inbounds %struct.arm_2d_region_t, ptr %575, i32 0, i32 1
  %577 = load ptr, ptr %3, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %577, i32 0, i32 0
  %579 = getelementptr inbounds %struct.anon.0, ptr %578, i32 0, i32 5
  %580 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %579, i32 0, i32 1
  %581 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %581, align 8, !tbaa !26
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %583, i32 0, i32 0
  %585 = getelementptr inbounds %struct.anon.0, ptr %584, i32 0, i32 5
  %586 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %585, i32 0, i32 1
  %587 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %586, i32 0, i32 2
  %588 = load i16, ptr %587, align 4, !tbaa !26
  %589 = load ptr, ptr %3, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %589, i32 0, i32 0
  %591 = getelementptr inbounds %struct.anon.0, ptr %590, i32 0, i32 5
  %592 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %591, i32 0, i32 1
  %593 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %592, i32 0, i32 5
  %594 = getelementptr inbounds %struct.arm_2d_region_t, ptr %593, i32 0, i32 1
  %595 = load ptr, ptr %3, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %595, i32 0, i32 0
  %597 = getelementptr inbounds %struct.anon.0, ptr %596, i32 0, i32 5
  %598 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %597, i32 0, i32 0
  %599 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %598, i32 0, i32 1
  %600 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %599, i32 0, i32 0
  %601 = load ptr, ptr %600, align 8, !tbaa !26
  %602 = load ptr, ptr %3, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %602, i32 0, i32 0
  %604 = getelementptr inbounds %struct.anon.0, ptr %603, i32 0, i32 5
  %605 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %604, i32 0, i32 0
  %606 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %605, i32 0, i32 1
  %607 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %606, i32 0, i32 2
  %608 = load i16, ptr %607, align 4, !tbaa !26
  %609 = load ptr, ptr %3, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %609, i32 0, i32 0
  %611 = getelementptr inbounds %struct.anon.0, ptr %610, i32 0, i32 5
  %612 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %611, i32 0, i32 0
  %613 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %612, i32 0, i32 1
  %614 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %613, i32 0, i32 5
  %615 = getelementptr inbounds %struct.arm_2d_region_t, ptr %614, i32 0, i32 1
  %616 = load ptr, ptr %3, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %616, i32 0, i32 0
  %618 = getelementptr inbounds %struct.anon.0, ptr %617, i32 0, i32 5
  %619 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %618, i32 0, i32 2
  %620 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %619, i32 0, i32 0
  %621 = load ptr, ptr %620, align 8, !tbaa !26
  %622 = load ptr, ptr %3, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %622, i32 0, i32 0
  %624 = getelementptr inbounds %struct.anon.0, ptr %623, i32 0, i32 5
  %625 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %624, i32 0, i32 2
  %626 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %625, i32 0, i32 2
  %627 = load i16, ptr %626, align 4, !tbaa !26
  %628 = load ptr, ptr %3, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %628, i32 0, i32 0
  %630 = getelementptr inbounds %struct.anon.0, ptr %629, i32 0, i32 5
  %631 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %630, i32 0, i32 2
  %632 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %631, i32 0, i32 5
  %633 = getelementptr inbounds %struct.arm_2d_region_t, ptr %632, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill(ptr noundef %562, i16 noundef signext %569, ptr noundef %576, ptr noundef %582, i16 noundef signext %588, ptr noundef %594, ptr noundef %601, i16 noundef signext %608, ptr noundef %615, ptr noundef %621, i16 noundef signext %627, ptr noundef %633)
  br label %634

634:                                              ; preds = %555, %476
  br label %635

635:                                              ; preds = %634, %464
  br label %1189

636:                                              ; preds = %280, %271
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %637, i32 0, i32 0
  %639 = getelementptr inbounds %struct.anon.0, ptr %638, i32 0, i32 5
  %640 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %639, i32 0, i32 1
  %641 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %640, i32 0, i32 3
  %642 = load i8, ptr %641, align 2, !tbaa !26
  %643 = zext i8 %642 to i32
  %644 = icmp ne i32 107, %643
  br i1 %644, label %645, label %841

645:                                              ; preds = %636
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %646, i32 0, i32 0
  %648 = getelementptr inbounds %struct.anon.0, ptr %647, i32 0, i32 5
  %649 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %648, i32 0, i32 2
  %650 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %649, i32 0, i32 3
  %651 = load i8, ptr %650, align 2, !tbaa !26
  %652 = zext i8 %651 to i32
  %653 = icmp eq i32 107, %652
  br i1 %653, label %654, label %841

654:                                              ; preds = %645
  %655 = load ptr, ptr %3, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %655, i32 0, i32 0
  %657 = getelementptr inbounds %struct.anon.0, ptr %656, i32 0, i32 5
  %658 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %657, i32 0, i32 2
  %659 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %658, i32 0, i32 5
  %660 = getelementptr inbounds %struct.arm_2d_region_t, ptr %659, i32 0, i32 1
  %661 = getelementptr inbounds %struct.arm_2d_size_t, ptr %660, i32 0, i32 1
  %662 = load i16, ptr %661, align 2, !tbaa !26
  %663 = sext i16 %662 to i32
  %664 = load ptr, ptr %3, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %664, i32 0, i32 0
  %666 = getelementptr inbounds %struct.anon.0, ptr %665, i32 0, i32 5
  %667 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %666, i32 0, i32 0
  %668 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %667, i32 0, i32 1
  %669 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %668, i32 0, i32 5
  %670 = getelementptr inbounds %struct.arm_2d_region_t, ptr %669, i32 0, i32 1
  %671 = getelementptr inbounds %struct.arm_2d_size_t, ptr %670, i32 0, i32 1
  %672 = load i16, ptr %671, align 2, !tbaa !26
  %673 = sext i16 %672 to i32
  %674 = icmp sge i32 %663, %673
  br i1 %674, label %675, label %676

675:                                              ; preds = %654
  br label %677

676:                                              ; preds = %654
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.6, i32 noundef 1407, ptr noundef @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #4
  unreachable

677:                                              ; preds = %675
  %678 = load i32, ptr %6, align 4, !tbaa !25
  %679 = and i32 %678, 12
  %680 = icmp ne i32 %679, 0
  br i1 %680, label %681, label %761

681:                                              ; preds = %677
  %682 = load ptr, ptr %3, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %682, i32 0, i32 0
  %684 = getelementptr inbounds %struct.anon.0, ptr %683, i32 0, i32 5
  %685 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %684, i32 0, i32 0
  %686 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %685, i32 0, i32 0
  %687 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %686, i32 0, i32 0
  %688 = load ptr, ptr %687, align 8, !tbaa !26
  %689 = load ptr, ptr %3, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %689, i32 0, i32 0
  %691 = getelementptr inbounds %struct.anon.0, ptr %690, i32 0, i32 5
  %692 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %691, i32 0, i32 0
  %693 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %692, i32 0, i32 0
  %694 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %693, i32 0, i32 2
  %695 = load i16, ptr %694, align 4, !tbaa !26
  %696 = load ptr, ptr %3, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %696, i32 0, i32 0
  %698 = getelementptr inbounds %struct.anon.0, ptr %697, i32 0, i32 5
  %699 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %698, i32 0, i32 0
  %700 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %699, i32 0, i32 0
  %701 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %700, i32 0, i32 5
  %702 = getelementptr inbounds %struct.arm_2d_region_t, ptr %701, i32 0, i32 1
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %703, i32 0, i32 0
  %705 = getelementptr inbounds %struct.anon.0, ptr %704, i32 0, i32 5
  %706 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %705, i32 0, i32 1
  %707 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %706, i32 0, i32 0
  %708 = load ptr, ptr %707, align 8, !tbaa !26
  %709 = load ptr, ptr %3, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %709, i32 0, i32 0
  %711 = getelementptr inbounds %struct.anon.0, ptr %710, i32 0, i32 5
  %712 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %711, i32 0, i32 1
  %713 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %712, i32 0, i32 2
  %714 = load i16, ptr %713, align 4, !tbaa !26
  %715 = load ptr, ptr %3, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %715, i32 0, i32 0
  %717 = getelementptr inbounds %struct.anon.0, ptr %716, i32 0, i32 5
  %718 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %717, i32 0, i32 1
  %719 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %718, i32 0, i32 5
  %720 = getelementptr inbounds %struct.arm_2d_region_t, ptr %719, i32 0, i32 1
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %721, i32 0, i32 0
  %723 = getelementptr inbounds %struct.anon.0, ptr %722, i32 0, i32 5
  %724 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %723, i32 0, i32 0
  %725 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %724, i32 0, i32 1
  %726 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %725, i32 0, i32 0
  %727 = load ptr, ptr %726, align 8, !tbaa !26
  %728 = load ptr, ptr %3, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %728, i32 0, i32 0
  %730 = getelementptr inbounds %struct.anon.0, ptr %729, i32 0, i32 5
  %731 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %730, i32 0, i32 0
  %732 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %731, i32 0, i32 1
  %733 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %732, i32 0, i32 2
  %734 = load i16, ptr %733, align 4, !tbaa !26
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %735, i32 0, i32 0
  %737 = getelementptr inbounds %struct.anon.0, ptr %736, i32 0, i32 5
  %738 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %737, i32 0, i32 0
  %739 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %738, i32 0, i32 1
  %740 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %739, i32 0, i32 5
  %741 = getelementptr inbounds %struct.arm_2d_region_t, ptr %740, i32 0, i32 1
  %742 = load ptr, ptr %3, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds %struct.anon.0, ptr %743, i32 0, i32 5
  %745 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %744, i32 0, i32 2
  %746 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %745, i32 0, i32 0
  %747 = load ptr, ptr %746, align 8, !tbaa !26
  %748 = load ptr, ptr %3, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %748, i32 0, i32 0
  %750 = getelementptr inbounds %struct.anon.0, ptr %749, i32 0, i32 5
  %751 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %750, i32 0, i32 2
  %752 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %751, i32 0, i32 2
  %753 = load i16, ptr %752, align 4, !tbaa !26
  %754 = load ptr, ptr %3, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %754, i32 0, i32 0
  %756 = getelementptr inbounds %struct.anon.0, ptr %755, i32 0, i32 5
  %757 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %756, i32 0, i32 2
  %758 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %757, i32 0, i32 5
  %759 = getelementptr inbounds %struct.arm_2d_region_t, ptr %758, i32 0, i32 1
  %760 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill_mirror(ptr noundef %688, i16 noundef signext %695, ptr noundef %702, ptr noundef %708, i16 noundef signext %714, ptr noundef %720, ptr noundef %727, i16 noundef signext %734, ptr noundef %741, ptr noundef %747, i16 noundef signext %753, ptr noundef %759, i32 noundef %760)
  br label %840

761:                                              ; preds = %677
  %762 = load ptr, ptr %3, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %762, i32 0, i32 0
  %764 = getelementptr inbounds %struct.anon.0, ptr %763, i32 0, i32 5
  %765 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %764, i32 0, i32 0
  %766 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %765, i32 0, i32 0
  %767 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %766, i32 0, i32 0
  %768 = load ptr, ptr %767, align 8, !tbaa !26
  %769 = load ptr, ptr %3, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %769, i32 0, i32 0
  %771 = getelementptr inbounds %struct.anon.0, ptr %770, i32 0, i32 5
  %772 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %771, i32 0, i32 0
  %773 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %772, i32 0, i32 0
  %774 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %773, i32 0, i32 2
  %775 = load i16, ptr %774, align 4, !tbaa !26
  %776 = load ptr, ptr %3, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %776, i32 0, i32 0
  %778 = getelementptr inbounds %struct.anon.0, ptr %777, i32 0, i32 5
  %779 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %778, i32 0, i32 0
  %780 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %779, i32 0, i32 0
  %781 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %780, i32 0, i32 5
  %782 = getelementptr inbounds %struct.arm_2d_region_t, ptr %781, i32 0, i32 1
  %783 = load ptr, ptr %3, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %783, i32 0, i32 0
  %785 = getelementptr inbounds %struct.anon.0, ptr %784, i32 0, i32 5
  %786 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %785, i32 0, i32 1
  %787 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %786, i32 0, i32 0
  %788 = load ptr, ptr %787, align 8, !tbaa !26
  %789 = load ptr, ptr %3, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %789, i32 0, i32 0
  %791 = getelementptr inbounds %struct.anon.0, ptr %790, i32 0, i32 5
  %792 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %791, i32 0, i32 1
  %793 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %792, i32 0, i32 2
  %794 = load i16, ptr %793, align 4, !tbaa !26
  %795 = load ptr, ptr %3, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %795, i32 0, i32 0
  %797 = getelementptr inbounds %struct.anon.0, ptr %796, i32 0, i32 5
  %798 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %797, i32 0, i32 1
  %799 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %798, i32 0, i32 5
  %800 = getelementptr inbounds %struct.arm_2d_region_t, ptr %799, i32 0, i32 1
  %801 = load ptr, ptr %3, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %801, i32 0, i32 0
  %803 = getelementptr inbounds %struct.anon.0, ptr %802, i32 0, i32 5
  %804 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %803, i32 0, i32 0
  %805 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %804, i32 0, i32 1
  %806 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %805, i32 0, i32 0
  %807 = load ptr, ptr %806, align 8, !tbaa !26
  %808 = load ptr, ptr %3, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %808, i32 0, i32 0
  %810 = getelementptr inbounds %struct.anon.0, ptr %809, i32 0, i32 5
  %811 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %810, i32 0, i32 0
  %812 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %811, i32 0, i32 1
  %813 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %812, i32 0, i32 2
  %814 = load i16, ptr %813, align 4, !tbaa !26
  %815 = load ptr, ptr %3, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %815, i32 0, i32 0
  %817 = getelementptr inbounds %struct.anon.0, ptr %816, i32 0, i32 5
  %818 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %817, i32 0, i32 0
  %819 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %818, i32 0, i32 1
  %820 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %819, i32 0, i32 5
  %821 = getelementptr inbounds %struct.arm_2d_region_t, ptr %820, i32 0, i32 1
  %822 = load ptr, ptr %3, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %822, i32 0, i32 0
  %824 = getelementptr inbounds %struct.anon.0, ptr %823, i32 0, i32 5
  %825 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %824, i32 0, i32 2
  %826 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %825, i32 0, i32 0
  %827 = load ptr, ptr %826, align 8, !tbaa !26
  %828 = load ptr, ptr %3, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %828, i32 0, i32 0
  %830 = getelementptr inbounds %struct.anon.0, ptr %829, i32 0, i32 5
  %831 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %830, i32 0, i32 2
  %832 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %831, i32 0, i32 2
  %833 = load i16, ptr %832, align 4, !tbaa !26
  %834 = load ptr, ptr %3, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %834, i32 0, i32 0
  %836 = getelementptr inbounds %struct.anon.0, ptr %835, i32 0, i32 5
  %837 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %836, i32 0, i32 2
  %838 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %837, i32 0, i32 5
  %839 = getelementptr inbounds %struct.arm_2d_region_t, ptr %838, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill(ptr noundef %768, i16 noundef signext %775, ptr noundef %782, ptr noundef %788, i16 noundef signext %794, ptr noundef %800, ptr noundef %807, i16 noundef signext %814, ptr noundef %821, ptr noundef %827, i16 noundef signext %833, ptr noundef %839)
  br label %840

840:                                              ; preds = %761, %681
  br label %1188

841:                                              ; preds = %645, %636
  %842 = load i32, ptr %6, align 4, !tbaa !25
  %843 = and i32 %842, 12
  %844 = icmp ne i32 %843, 0
  br i1 %844, label %845, label %1017

845:                                              ; preds = %841
  %846 = load ptr, ptr %3, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds %struct.anon.0, ptr %847, i32 0, i32 5
  %849 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %848, i32 0, i32 2
  %850 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %849, i32 0, i32 5
  %851 = getelementptr inbounds %struct.arm_2d_region_t, ptr %850, i32 0, i32 1
  %852 = getelementptr inbounds %struct.arm_2d_size_t, ptr %851, i32 0, i32 1
  %853 = load i16, ptr %852, align 2, !tbaa !26
  %854 = sext i16 %853 to i32
  %855 = icmp sgt i32 %854, 1
  br i1 %855, label %856, label %936

856:                                              ; preds = %845
  %857 = load ptr, ptr %3, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %857, i32 0, i32 0
  %859 = getelementptr inbounds %struct.anon.0, ptr %858, i32 0, i32 5
  %860 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %859, i32 0, i32 0
  %861 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %860, i32 0, i32 0
  %862 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %861, i32 0, i32 0
  %863 = load ptr, ptr %862, align 8, !tbaa !26
  %864 = load ptr, ptr %3, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %864, i32 0, i32 0
  %866 = getelementptr inbounds %struct.anon.0, ptr %865, i32 0, i32 5
  %867 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %866, i32 0, i32 0
  %868 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %867, i32 0, i32 0
  %869 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %868, i32 0, i32 2
  %870 = load i16, ptr %869, align 4, !tbaa !26
  %871 = load ptr, ptr %3, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %871, i32 0, i32 0
  %873 = getelementptr inbounds %struct.anon.0, ptr %872, i32 0, i32 5
  %874 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %873, i32 0, i32 0
  %875 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %874, i32 0, i32 0
  %876 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %875, i32 0, i32 5
  %877 = getelementptr inbounds %struct.arm_2d_region_t, ptr %876, i32 0, i32 1
  %878 = load ptr, ptr %3, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %878, i32 0, i32 0
  %880 = getelementptr inbounds %struct.anon.0, ptr %879, i32 0, i32 5
  %881 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %880, i32 0, i32 1
  %882 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %881, i32 0, i32 0
  %883 = load ptr, ptr %882, align 8, !tbaa !26
  %884 = load ptr, ptr %3, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %884, i32 0, i32 0
  %886 = getelementptr inbounds %struct.anon.0, ptr %885, i32 0, i32 5
  %887 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %886, i32 0, i32 1
  %888 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %887, i32 0, i32 2
  %889 = load i16, ptr %888, align 4, !tbaa !26
  %890 = load ptr, ptr %3, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %890, i32 0, i32 0
  %892 = getelementptr inbounds %struct.anon.0, ptr %891, i32 0, i32 5
  %893 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %892, i32 0, i32 1
  %894 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %893, i32 0, i32 5
  %895 = getelementptr inbounds %struct.arm_2d_region_t, ptr %894, i32 0, i32 1
  %896 = load ptr, ptr %3, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %896, i32 0, i32 0
  %898 = getelementptr inbounds %struct.anon.0, ptr %897, i32 0, i32 5
  %899 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %898, i32 0, i32 0
  %900 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %899, i32 0, i32 1
  %901 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %900, i32 0, i32 0
  %902 = load ptr, ptr %901, align 8, !tbaa !26
  %903 = load ptr, ptr %3, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %903, i32 0, i32 0
  %905 = getelementptr inbounds %struct.anon.0, ptr %904, i32 0, i32 5
  %906 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %905, i32 0, i32 0
  %907 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %906, i32 0, i32 1
  %908 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %907, i32 0, i32 2
  %909 = load i16, ptr %908, align 4, !tbaa !26
  %910 = load ptr, ptr %3, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %910, i32 0, i32 0
  %912 = getelementptr inbounds %struct.anon.0, ptr %911, i32 0, i32 5
  %913 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %912, i32 0, i32 0
  %914 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %913, i32 0, i32 1
  %915 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %914, i32 0, i32 5
  %916 = getelementptr inbounds %struct.arm_2d_region_t, ptr %915, i32 0, i32 1
  %917 = load ptr, ptr %3, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %917, i32 0, i32 0
  %919 = getelementptr inbounds %struct.anon.0, ptr %918, i32 0, i32 5
  %920 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %919, i32 0, i32 2
  %921 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %920, i32 0, i32 0
  %922 = load ptr, ptr %921, align 8, !tbaa !26
  %923 = load ptr, ptr %3, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %923, i32 0, i32 0
  %925 = getelementptr inbounds %struct.anon.0, ptr %924, i32 0, i32 5
  %926 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %925, i32 0, i32 2
  %927 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %926, i32 0, i32 2
  %928 = load i16, ptr %927, align 4, !tbaa !26
  %929 = load ptr, ptr %3, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %929, i32 0, i32 0
  %931 = getelementptr inbounds %struct.anon.0, ptr %930, i32 0, i32 5
  %932 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %931, i32 0, i32 2
  %933 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %932, i32 0, i32 5
  %934 = getelementptr inbounds %struct.arm_2d_region_t, ptr %933, i32 0, i32 1
  %935 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_masks_fill_mirror(ptr noundef %863, i16 noundef signext %870, ptr noundef %877, ptr noundef %883, i16 noundef signext %889, ptr noundef %895, ptr noundef %902, i16 noundef signext %909, ptr noundef %916, ptr noundef %922, i16 noundef signext %928, ptr noundef %934, i32 noundef %935)
  br label %1016

936:                                              ; preds = %845
  %937 = load ptr, ptr %3, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %937, i32 0, i32 0
  %939 = getelementptr inbounds %struct.anon.0, ptr %938, i32 0, i32 5
  %940 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %939, i32 0, i32 0
  %941 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %940, i32 0, i32 0
  %942 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %941, i32 0, i32 0
  %943 = load ptr, ptr %942, align 8, !tbaa !26
  %944 = load ptr, ptr %3, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %944, i32 0, i32 0
  %946 = getelementptr inbounds %struct.anon.0, ptr %945, i32 0, i32 5
  %947 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %946, i32 0, i32 0
  %948 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %947, i32 0, i32 0
  %949 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %948, i32 0, i32 2
  %950 = load i16, ptr %949, align 4, !tbaa !26
  %951 = load ptr, ptr %3, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %951, i32 0, i32 0
  %953 = getelementptr inbounds %struct.anon.0, ptr %952, i32 0, i32 5
  %954 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %953, i32 0, i32 0
  %955 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %954, i32 0, i32 0
  %956 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %955, i32 0, i32 5
  %957 = getelementptr inbounds %struct.arm_2d_region_t, ptr %956, i32 0, i32 1
  %958 = load ptr, ptr %3, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %958, i32 0, i32 0
  %960 = getelementptr inbounds %struct.anon.0, ptr %959, i32 0, i32 5
  %961 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %960, i32 0, i32 1
  %962 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %961, i32 0, i32 0
  %963 = load ptr, ptr %962, align 8, !tbaa !26
  %964 = load ptr, ptr %3, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %964, i32 0, i32 0
  %966 = getelementptr inbounds %struct.anon.0, ptr %965, i32 0, i32 5
  %967 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %966, i32 0, i32 1
  %968 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %967, i32 0, i32 2
  %969 = load i16, ptr %968, align 4, !tbaa !26
  %970 = load ptr, ptr %3, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %970, i32 0, i32 0
  %972 = getelementptr inbounds %struct.anon.0, ptr %971, i32 0, i32 5
  %973 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %972, i32 0, i32 1
  %974 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %973, i32 0, i32 5
  %975 = getelementptr inbounds %struct.arm_2d_region_t, ptr %974, i32 0, i32 1
  %976 = load ptr, ptr %3, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %976, i32 0, i32 0
  %978 = getelementptr inbounds %struct.anon.0, ptr %977, i32 0, i32 5
  %979 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %978, i32 0, i32 0
  %980 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %979, i32 0, i32 1
  %981 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %980, i32 0, i32 0
  %982 = load ptr, ptr %981, align 8, !tbaa !26
  %983 = load ptr, ptr %3, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %983, i32 0, i32 0
  %985 = getelementptr inbounds %struct.anon.0, ptr %984, i32 0, i32 5
  %986 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %985, i32 0, i32 0
  %987 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %986, i32 0, i32 1
  %988 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %987, i32 0, i32 2
  %989 = load i16, ptr %988, align 4, !tbaa !26
  %990 = load ptr, ptr %3, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %990, i32 0, i32 0
  %992 = getelementptr inbounds %struct.anon.0, ptr %991, i32 0, i32 5
  %993 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %992, i32 0, i32 0
  %994 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %993, i32 0, i32 1
  %995 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %994, i32 0, i32 5
  %996 = getelementptr inbounds %struct.arm_2d_region_t, ptr %995, i32 0, i32 1
  %997 = load ptr, ptr %3, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %997, i32 0, i32 0
  %999 = getelementptr inbounds %struct.anon.0, ptr %998, i32 0, i32 5
  %1000 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %999, i32 0, i32 2
  %1001 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1000, i32 0, i32 0
  %1002 = load ptr, ptr %1001, align 8, !tbaa !26
  %1003 = load ptr, ptr %3, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1003, i32 0, i32 0
  %1005 = getelementptr inbounds %struct.anon.0, ptr %1004, i32 0, i32 5
  %1006 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1005, i32 0, i32 2
  %1007 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1006, i32 0, i32 2
  %1008 = load i16, ptr %1007, align 4, !tbaa !26
  %1009 = load ptr, ptr %3, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1009, i32 0, i32 0
  %1011 = getelementptr inbounds %struct.anon.0, ptr %1010, i32 0, i32 5
  %1012 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1011, i32 0, i32 2
  %1013 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1012, i32 0, i32 5
  %1014 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1013, i32 0, i32 1
  %1015 = load i32, ptr %6, align 4, !tbaa !25
  call void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill_mirror(ptr noundef %943, i16 noundef signext %950, ptr noundef %957, ptr noundef %963, i16 noundef signext %969, ptr noundef %975, ptr noundef %982, i16 noundef signext %989, ptr noundef %996, ptr noundef %1002, i16 noundef signext %1008, ptr noundef %1014, i32 noundef %1015)
  br label %1016

1016:                                             ; preds = %936, %856
  br label %1187

1017:                                             ; preds = %841
  %1018 = load ptr, ptr %3, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1018, i32 0, i32 0
  %1020 = getelementptr inbounds %struct.anon.0, ptr %1019, i32 0, i32 5
  %1021 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1020, i32 0, i32 2
  %1022 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1021, i32 0, i32 5
  %1023 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1022, i32 0, i32 1
  %1024 = getelementptr inbounds %struct.arm_2d_size_t, ptr %1023, i32 0, i32 1
  %1025 = load i16, ptr %1024, align 2, !tbaa !26
  %1026 = sext i16 %1025 to i32
  %1027 = icmp sgt i32 %1026, 1
  br i1 %1027, label %1028, label %1107

1028:                                             ; preds = %1017
  %1029 = load ptr, ptr %3, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1029, i32 0, i32 0
  %1031 = getelementptr inbounds %struct.anon.0, ptr %1030, i32 0, i32 5
  %1032 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1031, i32 0, i32 0
  %1033 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1032, i32 0, i32 0
  %1034 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1033, i32 0, i32 0
  %1035 = load ptr, ptr %1034, align 8, !tbaa !26
  %1036 = load ptr, ptr %3, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1036, i32 0, i32 0
  %1038 = getelementptr inbounds %struct.anon.0, ptr %1037, i32 0, i32 5
  %1039 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1038, i32 0, i32 0
  %1040 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1039, i32 0, i32 0
  %1041 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1040, i32 0, i32 2
  %1042 = load i16, ptr %1041, align 4, !tbaa !26
  %1043 = load ptr, ptr %3, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1043, i32 0, i32 0
  %1045 = getelementptr inbounds %struct.anon.0, ptr %1044, i32 0, i32 5
  %1046 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1045, i32 0, i32 0
  %1047 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1046, i32 0, i32 0
  %1048 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1047, i32 0, i32 5
  %1049 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1048, i32 0, i32 1
  %1050 = load ptr, ptr %3, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1050, i32 0, i32 0
  %1052 = getelementptr inbounds %struct.anon.0, ptr %1051, i32 0, i32 5
  %1053 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1052, i32 0, i32 1
  %1054 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1053, i32 0, i32 0
  %1055 = load ptr, ptr %1054, align 8, !tbaa !26
  %1056 = load ptr, ptr %3, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1056, i32 0, i32 0
  %1058 = getelementptr inbounds %struct.anon.0, ptr %1057, i32 0, i32 5
  %1059 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1058, i32 0, i32 1
  %1060 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1059, i32 0, i32 2
  %1061 = load i16, ptr %1060, align 4, !tbaa !26
  %1062 = load ptr, ptr %3, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1062, i32 0, i32 0
  %1064 = getelementptr inbounds %struct.anon.0, ptr %1063, i32 0, i32 5
  %1065 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1064, i32 0, i32 1
  %1066 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1065, i32 0, i32 5
  %1067 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1066, i32 0, i32 1
  %1068 = load ptr, ptr %3, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1068, i32 0, i32 0
  %1070 = getelementptr inbounds %struct.anon.0, ptr %1069, i32 0, i32 5
  %1071 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1070, i32 0, i32 0
  %1072 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1071, i32 0, i32 1
  %1073 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1072, i32 0, i32 0
  %1074 = load ptr, ptr %1073, align 8, !tbaa !26
  %1075 = load ptr, ptr %3, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1075, i32 0, i32 0
  %1077 = getelementptr inbounds %struct.anon.0, ptr %1076, i32 0, i32 5
  %1078 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1077, i32 0, i32 0
  %1079 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1078, i32 0, i32 1
  %1080 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1079, i32 0, i32 2
  %1081 = load i16, ptr %1080, align 4, !tbaa !26
  %1082 = load ptr, ptr %3, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1082, i32 0, i32 0
  %1084 = getelementptr inbounds %struct.anon.0, ptr %1083, i32 0, i32 5
  %1085 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1084, i32 0, i32 0
  %1086 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1085, i32 0, i32 1
  %1087 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1086, i32 0, i32 5
  %1088 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1087, i32 0, i32 1
  %1089 = load ptr, ptr %3, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1089, i32 0, i32 0
  %1091 = getelementptr inbounds %struct.anon.0, ptr %1090, i32 0, i32 5
  %1092 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1091, i32 0, i32 2
  %1093 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1092, i32 0, i32 0
  %1094 = load ptr, ptr %1093, align 8, !tbaa !26
  %1095 = load ptr, ptr %3, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1095, i32 0, i32 0
  %1097 = getelementptr inbounds %struct.anon.0, ptr %1096, i32 0, i32 5
  %1098 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1097, i32 0, i32 2
  %1099 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1098, i32 0, i32 2
  %1100 = load i16, ptr %1099, align 4, !tbaa !26
  %1101 = load ptr, ptr %3, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1101, i32 0, i32 0
  %1103 = getelementptr inbounds %struct.anon.0, ptr %1102, i32 0, i32 5
  %1104 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1103, i32 0, i32 2
  %1105 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1104, i32 0, i32 5
  %1106 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1105, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_masks_fill(ptr noundef %1035, i16 noundef signext %1042, ptr noundef %1049, ptr noundef %1055, i16 noundef signext %1061, ptr noundef %1067, ptr noundef %1074, i16 noundef signext %1081, ptr noundef %1088, ptr noundef %1094, i16 noundef signext %1100, ptr noundef %1106)
  br label %1186

1107:                                             ; preds = %1017
  %1108 = load ptr, ptr %3, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1108, i32 0, i32 0
  %1110 = getelementptr inbounds %struct.anon.0, ptr %1109, i32 0, i32 5
  %1111 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1110, i32 0, i32 0
  %1112 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1111, i32 0, i32 0
  %1113 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1112, i32 0, i32 0
  %1114 = load ptr, ptr %1113, align 8, !tbaa !26
  %1115 = load ptr, ptr %3, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1115, i32 0, i32 0
  %1117 = getelementptr inbounds %struct.anon.0, ptr %1116, i32 0, i32 5
  %1118 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1117, i32 0, i32 0
  %1119 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1118, i32 0, i32 0
  %1120 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1119, i32 0, i32 2
  %1121 = load i16, ptr %1120, align 4, !tbaa !26
  %1122 = load ptr, ptr %3, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1122, i32 0, i32 0
  %1124 = getelementptr inbounds %struct.anon.0, ptr %1123, i32 0, i32 5
  %1125 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1124, i32 0, i32 0
  %1126 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1125, i32 0, i32 0
  %1127 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1126, i32 0, i32 5
  %1128 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1127, i32 0, i32 1
  %1129 = load ptr, ptr %3, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1129, i32 0, i32 0
  %1131 = getelementptr inbounds %struct.anon.0, ptr %1130, i32 0, i32 5
  %1132 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1131, i32 0, i32 1
  %1133 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1132, i32 0, i32 0
  %1134 = load ptr, ptr %1133, align 8, !tbaa !26
  %1135 = load ptr, ptr %3, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1135, i32 0, i32 0
  %1137 = getelementptr inbounds %struct.anon.0, ptr %1136, i32 0, i32 5
  %1138 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1137, i32 0, i32 1
  %1139 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1138, i32 0, i32 2
  %1140 = load i16, ptr %1139, align 4, !tbaa !26
  %1141 = load ptr, ptr %3, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1141, i32 0, i32 0
  %1143 = getelementptr inbounds %struct.anon.0, ptr %1142, i32 0, i32 5
  %1144 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1143, i32 0, i32 1
  %1145 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1144, i32 0, i32 5
  %1146 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1145, i32 0, i32 1
  %1147 = load ptr, ptr %3, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1147, i32 0, i32 0
  %1149 = getelementptr inbounds %struct.anon.0, ptr %1148, i32 0, i32 5
  %1150 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1149, i32 0, i32 0
  %1151 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1150, i32 0, i32 1
  %1152 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1151, i32 0, i32 0
  %1153 = load ptr, ptr %1152, align 8, !tbaa !26
  %1154 = load ptr, ptr %3, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1154, i32 0, i32 0
  %1156 = getelementptr inbounds %struct.anon.0, ptr %1155, i32 0, i32 5
  %1157 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1156, i32 0, i32 0
  %1158 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1157, i32 0, i32 1
  %1159 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1158, i32 0, i32 2
  %1160 = load i16, ptr %1159, align 4, !tbaa !26
  %1161 = load ptr, ptr %3, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1161, i32 0, i32 0
  %1163 = getelementptr inbounds %struct.anon.0, ptr %1162, i32 0, i32 5
  %1164 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1163, i32 0, i32 0
  %1165 = getelementptr inbounds %struct.__arm_2d_param_fill_t, ptr %1164, i32 0, i32 1
  %1166 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1165, i32 0, i32 5
  %1167 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1166, i32 0, i32 1
  %1168 = load ptr, ptr %3, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1168, i32 0, i32 0
  %1170 = getelementptr inbounds %struct.anon.0, ptr %1169, i32 0, i32 5
  %1171 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1170, i32 0, i32 2
  %1172 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1171, i32 0, i32 0
  %1173 = load ptr, ptr %1172, align 8, !tbaa !26
  %1174 = load ptr, ptr %3, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1174, i32 0, i32 0
  %1176 = getelementptr inbounds %struct.anon.0, ptr %1175, i32 0, i32 5
  %1177 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1176, i32 0, i32 2
  %1178 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1177, i32 0, i32 2
  %1179 = load i16, ptr %1178, align 4, !tbaa !26
  %1180 = load ptr, ptr %3, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.__arm_2d_sub_task_t, ptr %1180, i32 0, i32 0
  %1182 = getelementptr inbounds %struct.anon.0, ptr %1181, i32 0, i32 5
  %1183 = getelementptr inbounds %struct.__arm_2d_param_fill_msk_t, ptr %1182, i32 0, i32 2
  %1184 = getelementptr inbounds %struct.__arm_2d_tile_param_t, ptr %1183, i32 0, i32 5
  %1185 = getelementptr inbounds %struct.arm_2d_region_t, ptr %1184, i32 0, i32 1
  call void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill(ptr noundef %1114, i16 noundef signext %1121, ptr noundef %1128, ptr noundef %1134, i16 noundef signext %1140, ptr noundef %1146, ptr noundef %1153, i16 noundef signext %1160, ptr noundef %1167, ptr noundef %1173, i16 noundef signext %1179, ptr noundef %1185)
  br label %1186

1186:                                             ; preds = %1107, %1028
  br label %1187

1187:                                             ; preds = %1186, %1016
  br label %1188

1188:                                             ; preds = %1187, %840
  br label %1189

1189:                                             ; preds = %1188, %635
  br label %1190

1190:                                             ; preds = %1189, %270
  store i32 0, ptr %2, align 4
  store i32 1, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  br label %1191

1191:                                             ; preds = %1190, %62
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #3
  %1192 = load i32, ptr %2, align 4
  ret i32 %1192
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn 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 #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }
attributes #4 = { noreturn 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, !6, i64 8}
!10 = !{!"__arm_2d_sub_task_t", !11, i64 0}
!11 = !{!"", !6, i64 0, !6, i64 8, !7, i64 16, !7, i64 17, !7, i64 24}
!12 = !{!13, !6, i64 8}
!13 = !{!"arm_2d_op_src_msk_t", !14, i64 0, !19, i64 48, !20, i64 64, !21, i64 72, !19, i64 80}
!14 = !{!"arm_2d_op_core_t", !15, i64 0, !18, i64 40}
!15 = !{!"", !6, i64 0, !6, i64 8, !16, i64 16, !7, i64 17, !7, i64 18, !17, i64 24}
!16 = !{!"", !7, i64 0}
!17 = !{!"arm_2d_op_evt_t", !6, i64 0, !6, i64 8}
!18 = !{!"long", !7, i64 0}
!19 = !{!"", !6, i64 0, !6, i64 8}
!20 = !{!"", !6, i64 0}
!21 = !{!"int", !7, i64 0}
!22 = !{!13, !6, i64 80}
!23 = !{!13, !6, i64 88}
!24 = !{!13, !21, i64 72}
!25 = !{!21, !21, i64 0}
!26 = !{!7, !7, 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.__arm_2d_op_control = type { %struct.anon.10 }
%struct.anon.10 = type { ptr, %struct.anon.11, %struct.anon.12, i16, i16, i16, i16, ptr, %union.anon.13 }
%struct.anon.11 = type { ptr, ptr }
%struct.anon.12 = type { ptr, ptr }
%union.anon.13 = type { %struct.arm_2d_op_trans_msk_opa_t }
%struct.arm_2d_op_trans_msk_opa_t = type { %struct.arm_2d_op_core_t, %struct.anon.67, %struct.anon.68, %union.anon.69, %struct.anon.71, %struct.anon.72, %struct.__arm_2d_transform_info_t, i8 }
%struct.arm_2d_op_core_t = type { %struct.anon.14, i64 }
%struct.anon.14 = type { ptr, ptr, %struct.anon.15, i8, %union.arm_2d_op_status_t, %struct.arm_2d_op_evt_t }
%struct.anon.15 = type { i8 }
%union.arm_2d_op_status_t = type { %struct.anon.16 }
%struct.anon.16 = type { i16 }
%struct.arm_2d_op_evt_t = type { ptr, ptr }
%struct.anon.67 = type { ptr, ptr }
%struct.anon.68 = type { ptr }
%union.anon.69 = type { %struct.anon.70 }
%struct.anon.70 = type { i32 }
%struct.anon.71 = type { ptr, %struct.arm_2d_tile_t }
%struct.arm_2d_tile_t = type { %union.anon.48, %union.anon.57, %union.anon.58 }
%union.anon.48 = type { %struct.anon.49 }
%struct.anon.49 = type { i8, %union.arm_2d_color_info_t, %union.anon.50 }
%union.arm_2d_color_info_t = type { %struct.anon.1 }
%struct.anon.1 = type { i8 }
%union.anon.50 = type { i16 }
%union.anon.57 = type { %struct.arm_2d_region_t }
%struct.arm_2d_region_t = type { %union.anon.3, %union.anon.4 }
%union.anon.3 = type { %struct.arm_2d_location_t }
%struct.arm_2d_location_t = type { i16, i16 }
%union.anon.4 = type { %struct.arm_2d_size_t }
%struct.arm_2d_size_t = type { i16, i16 }
%union.anon.58 = type { ptr }
%struct.anon.72 = type { ptr, ptr }
%struct.__arm_2d_transform_info_t = type { float, float, float, %struct.arm_2d_point_float_t, %union.anon.59, %struct.anon.60 }
%struct.arm_2d_point_float_t = type { float, float }
%union.anon.59 = type { i32 }
%struct.anon.60 = type { %struct.arm_2d_location_t, %struct.anon.61 }
%struct.anon.61 = type { %struct.arm_2d_region_t, %struct.arm_2d_tile_t }

@ARM_2D_CTRL = external local_unnamed_addr global %struct.__arm_2d_op_control, align 8
@.str.5 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [154 x i8], align 1
@__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks = external hidden unnamed_addr constant [77 x i8], align 1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_masks_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_masks_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill_mirror(ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, ptr noalias noundef, i16 noundef signext, ptr noalias noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local range(i32 -2, 1) i32 @__arm_2d_cccn888_sw_tile_fill_with_masks(ptr noundef %0) local_unnamed_addr #1 {
  %2 = getelementptr inbounds i8, ptr %0, i64 8
  %3 = load ptr, ptr %2, align 8, !tbaa !5
  %4 = icmp eq ptr %3, null
  %spec.store.select = select i1 %4, ptr getelementptr inbounds (i8, ptr @ARM_2D_CTRL, i64 56), ptr %3
  %5 = getelementptr inbounds i8, ptr %spec.store.select, i64 8
  %6 = load ptr, ptr %5, align 8, !tbaa !11
  %7 = load i8, ptr %6, align 8
  %8 = and i8 %7, 14
  %9 = icmp eq i8 %8, 10
  br i1 %9, label %11, label %10

10:                                               ; preds = %1
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef 1180, ptr noundef nonnull @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #2
  unreachable

11:                                               ; preds = %1
  %12 = getelementptr inbounds i8, ptr %spec.store.select, i64 80
  %13 = load ptr, ptr %12, align 8, !tbaa !21
  %14 = icmp eq ptr %13, null
  br i1 %14, label %15, label %20

15:                                               ; preds = %11
  %16 = getelementptr inbounds i8, ptr %spec.store.select, i64 88
  %17 = load ptr, ptr %16, align 8, !tbaa !22
  %18 = icmp eq ptr %17, null
  br i1 %18, label %19, label %20

19:                                               ; preds = %15
  tail call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.6, i32 noundef 1184, ptr noundef nonnull @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #2
  unreachable

20:                                               ; preds = %11, %15
  %21 = getelementptr inbounds i8, ptr %0, i64 24
  %22 = getelementptr inbounds i8, ptr %0, i64 104
  %23 = getelementptr inbounds i8, ptr %0, i64 119
  %24 = load i8, ptr %23, align 1
  %25 = and i8 %24, 1
  %.not = icmp eq i8 %25, 0
  br i1 %.not, label %26, label %151

26:                                               ; preds = %20
  %27 = getelementptr inbounds i8, ptr %0, i64 144
  %28 = getelementptr inbounds i8, ptr %0, i64 159
  %29 = load i8, ptr %28, align 1
  %30 = and i8 %29, 1
  %.not176 = icmp eq i8 %30, 0
  br i1 %.not176, label %31, label %151

31:                                               ; preds = %26
  %32 = getelementptr inbounds i8, ptr %spec.store.select, i64 72
  %33 = load i32, ptr %32, align 8, !tbaa !23
  %34 = getelementptr inbounds i8, ptr %0, i64 118
  %35 = load i8, ptr %34, align 2, !tbaa !24
  %36 = icmp eq i8 %35, 107
  %37 = getelementptr inbounds i8, ptr %0, i64 158
  %38 = load i8, ptr %37, align 2, !tbaa !24
  %39 = icmp eq i8 %38, 107
  br i1 %36, label %40, label %96

40:                                               ; preds = %31
  br i1 %39, label %41, label %68

41:                                               ; preds = %40
  %42 = getelementptr inbounds i8, ptr %0, i64 164
  %43 = getelementptr inbounds i8, ptr %0, i64 166
  %44 = load i16, ptr %43, align 2, !tbaa !24
  %45 = getelementptr inbounds i8, ptr %0, i64 84
  %46 = getelementptr inbounds i8, ptr %0, i64 86
  %47 = load i16, ptr %46, align 2, !tbaa !24
  %.not183 = icmp slt i16 %44, %47
  br i1 %.not183, label %48, label %49

48:                                               ; preds = %41
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.6, i32 noundef 1213, ptr noundef nonnull @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #2
  unreachable

49:                                               ; preds = %41
  %50 = getelementptr inbounds i8, ptr %0, i64 64
  %51 = and i32 %33, 12
  %.not184 = icmp eq i32 %51, 0
  %52 = load ptr, ptr %21, align 8, !tbaa !24
  %53 = getelementptr inbounds i8, ptr %0, i64 36
  %54 = load i16, ptr %53, align 4, !tbaa !24
  %55 = getelementptr inbounds i8, ptr %0, i64 44
  %56 = load ptr, ptr %22, align 8, !tbaa !24
  %57 = getelementptr inbounds i8, ptr %0, i64 116
  %58 = load i16, ptr %57, align 4, !tbaa !24
  %59 = getelementptr inbounds i8, ptr %0, i64 124
  %60 = load ptr, ptr %50, align 8, !tbaa !24
  %61 = getelementptr inbounds i8, ptr %0, i64 76
  %62 = load i16, ptr %61, align 4, !tbaa !24
  %63 = load ptr, ptr %27, align 8, !tbaa !24
  %64 = getelementptr inbounds i8, ptr %0, i64 156
  %65 = load i16, ptr %64, align 4, !tbaa !24
  br i1 %.not184, label %67, label %66

66:                                               ; preds = %49
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill_mirror(ptr noundef %52, i16 noundef signext %54, ptr noundef nonnull %55, ptr noundef %56, i16 noundef signext %58, ptr noundef nonnull %59, ptr noundef %60, i16 noundef signext %62, ptr noundef nonnull %45, ptr noundef %63, i16 noundef signext %65, ptr noundef nonnull %42, i32 noundef %33)
  br label %151

67:                                               ; preds = %49
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_des_chn_msk_fill(ptr noundef %52, i16 noundef signext %54, ptr noundef nonnull %55, ptr noundef %56, i16 noundef signext %58, ptr noundef nonnull %59, ptr noundef %60, i16 noundef signext %62, ptr noundef nonnull %45, ptr noundef %63, i16 noundef signext %65, ptr noundef nonnull %42)
  br label %151

68:                                               ; preds = %40
  %69 = and i32 %33, 12
  %.not182 = icmp eq i32 %69, 0
  %70 = getelementptr inbounds i8, ptr %0, i64 164
  %71 = getelementptr inbounds i8, ptr %0, i64 166
  %72 = load i16, ptr %71, align 2, !tbaa !24
  %73 = icmp sgt i16 %72, 1
  %74 = load ptr, ptr %21, align 8, !tbaa !24
  %75 = getelementptr inbounds i8, ptr %0, i64 36
  %76 = load i16, ptr %75, align 4, !tbaa !24
  %77 = getelementptr inbounds i8, ptr %0, i64 44
  %78 = load ptr, ptr %22, align 8, !tbaa !24
  %79 = getelementptr inbounds i8, ptr %0, i64 116
  %80 = load i16, ptr %79, align 4, !tbaa !24
  %81 = getelementptr inbounds i8, ptr %0, i64 124
  %82 = getelementptr inbounds i8, ptr %0, i64 64
  %83 = load ptr, ptr %82, align 8, !tbaa !24
  %84 = getelementptr inbounds i8, ptr %0, i64 76
  %85 = load i16, ptr %84, align 4, !tbaa !24
  %86 = getelementptr inbounds i8, ptr %0, i64 84
  %87 = load ptr, ptr %27, align 8, !tbaa !24
  %88 = getelementptr inbounds i8, ptr %0, i64 156
  %89 = load i16, ptr %88, align 4, !tbaa !24
  br i1 %.not182, label %93, label %90

90:                                               ; preds = %68
  br i1 %73, label %91, label %92

91:                                               ; preds = %90
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill_mirror(ptr noundef %74, i16 noundef signext %76, ptr noundef nonnull %77, ptr noundef %78, i16 noundef signext %80, ptr noundef nonnull %81, ptr noundef %83, i16 noundef signext %85, ptr noundef nonnull %86, ptr noundef %87, i16 noundef signext %89, ptr noundef nonnull %70, i32 noundef %33)
  br label %151

92:                                               ; preds = %90
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill_mirror(ptr noundef %74, i16 noundef signext %76, ptr noundef nonnull %77, ptr noundef %78, i16 noundef signext %80, ptr noundef nonnull %81, ptr noundef %83, i16 noundef signext %85, ptr noundef nonnull %86, ptr noundef %87, i16 noundef signext %89, ptr noundef nonnull %70, i32 noundef %33)
  br label %151

93:                                               ; preds = %68
  br i1 %73, label %94, label %95

94:                                               ; preds = %93
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_des_msk_fill(ptr noundef %74, i16 noundef signext %76, ptr noundef nonnull %77, ptr noundef %78, i16 noundef signext %80, ptr noundef nonnull %81, ptr noundef %83, i16 noundef signext %85, ptr noundef nonnull %86, ptr noundef %87, i16 noundef signext %89, ptr noundef nonnull %70)
  br label %151

95:                                               ; preds = %93
  tail call void @__arm_2d_impl_cccn888_src_chn_msk_1h_des_msk_fill(ptr noundef %74, i16 noundef signext %76, ptr noundef nonnull %77, ptr noundef %78, i16 noundef signext %80, ptr noundef nonnull %81, ptr noundef %83, i16 noundef signext %85, ptr noundef nonnull %86, ptr noundef %87, i16 noundef signext %89, ptr noundef nonnull %70)
  br label %151

96:                                               ; preds = %31
  br i1 %39, label %97, label %.thread185

97:                                               ; preds = %96
  %98 = getelementptr inbounds i8, ptr %0, i64 164
  %99 = getelementptr inbounds i8, ptr %0, i64 166
  %100 = load i16, ptr %99, align 2, !tbaa !24
  %101 = getelementptr inbounds i8, ptr %0, i64 84
  %102 = getelementptr inbounds i8, ptr %0, i64 86
  %103 = load i16, ptr %102, align 2, !tbaa !24
  %.not180 = icmp slt i16 %100, %103
  br i1 %.not180, label %104, label %105

104:                                              ; preds = %97
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.6, i32 noundef 1407, ptr noundef nonnull @__PRETTY_FUNCTION__.__arm_2d_cccn888_sw_tile_fill_with_masks) #2
  unreachable

105:                                              ; preds = %97
  %106 = getelementptr inbounds i8, ptr %0, i64 64
  %107 = and i32 %33, 12
  %.not181 = icmp eq i32 %107, 0
  %108 = load ptr, ptr %21, align 8, !tbaa !24
  %109 = getelementptr inbounds i8, ptr %0, i64 36
  %110 = load i16, ptr %109, align 4, !tbaa !24
  %111 = getelementptr inbounds i8, ptr %0, i64 44
  %112 = load ptr, ptr %22, align 8, !tbaa !24
  %113 = getelementptr inbounds i8, ptr %0, i64 116
  %114 = load i16, ptr %113, align 4, !tbaa !24
  %115 = getelementptr inbounds i8, ptr %0, i64 124
  %116 = load ptr, ptr %106, align 8, !tbaa !24
  %117 = getelementptr inbounds i8, ptr %0, i64 76
  %118 = load i16, ptr %117, align 4, !tbaa !24
  %119 = load ptr, ptr %27, align 8, !tbaa !24
  %120 = getelementptr inbounds i8, ptr %0, i64 156
  %121 = load i16, ptr %120, align 4, !tbaa !24
  br i1 %.not181, label %123, label %122

122:                                              ; preds = %105
  tail call void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill_mirror(ptr noundef %108, i16 noundef signext %110, ptr noundef nonnull %111, ptr noundef %112, i16 noundef signext %114, ptr noundef nonnull %115, ptr noundef %116, i16 noundef signext %118, ptr noundef nonnull %101, ptr noundef %119, i16 noundef signext %121, ptr noundef nonnull %98, i32 noundef %33)
  br label %151

123:                                              ; preds = %105
  tail call void @__arm_2d_impl_cccn888_src_msk_des_chn_msk_fill(ptr noundef %108, i16 noundef signext %110, ptr noundef nonnull %111, ptr noundef %112, i16 noundef signext %114, ptr noundef nonnull %115, ptr noundef %116, i16 noundef signext %118, ptr noundef nonnull %101, ptr noundef %119, i16 noundef signext %121, ptr noundef nonnull %98)
  br label %151

.thread185:                                       ; preds = %96
  %124 = and i32 %33, 12
  %.not179 = icmp eq i32 %124, 0
  %125 = getelementptr inbounds i8, ptr %0, i64 164
  %126 = getelementptr inbounds i8, ptr %0, i64 166
  %127 = load i16, ptr %126, align 2, !tbaa !24
  %128 = icmp sgt i16 %127, 1
  %129 = load ptr, ptr %21, align 8, !tbaa !24
  %130 = getelementptr inbounds i8, ptr %0, i64 36
  %131 = load i16, ptr %130, align 4, !tbaa !24
  %132 = getelementptr inbounds i8, ptr %0, i64 44
  %133 = load ptr, ptr %22, align 8, !tbaa !24
  %134 = getelementptr inbounds i8, ptr %0, i64 116
  %135 = load i16, ptr %134, align 4, !tbaa !24
  %136 = getelementptr inbounds i8, ptr %0, i64 124
  %137 = getelementptr inbounds i8, ptr %0, i64 64
  %138 = load ptr, ptr %137, align 8, !tbaa !24
  %139 = getelementptr inbounds i8, ptr %0, i64 76
  %140 = load i16, ptr %139, align 4, !tbaa !24
  %141 = getelementptr inbounds i8, ptr %0, i64 84
  %142 = load ptr, ptr %27, align 8, !tbaa !24
  %143 = getelementptr inbounds i8, ptr %0, i64 156
  %144 = load i16, ptr %143, align 4, !tbaa !24
  br i1 %.not179, label %148, label %145

145:                                              ; preds = %.thread185
  br i1 %128, label %146, label %147

146:                                              ; preds = %145
  tail call void @__arm_2d_impl_cccn888_masks_fill_mirror(ptr noundef %129, i16 noundef signext %131, ptr noundef nonnull %132, ptr noundef %133, i16 noundef signext %135, ptr noundef nonnull %136, ptr noundef %138, i16 noundef signext %140, ptr noundef nonnull %141, ptr noundef %142, i16 noundef signext %144, ptr noundef nonnull %125, i32 noundef %33)
  br label %151

147:                                              ; preds = %145
  tail call void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill_mirror(ptr noundef %129, i16 noundef signext %131, ptr noundef nonnull %132, ptr noundef %133, i16 noundef signext %135, ptr noundef nonnull %136, ptr noundef %138, i16 noundef signext %140, ptr noundef nonnull %141, ptr noundef %142, i16 noundef signext %144, ptr noundef nonnull %125, i32 noundef %33)
  br label %151

148:                                              ; preds = %.thread185
  br i1 %128, label %149, label %150

149:                                              ; preds = %148
  tail call void @__arm_2d_impl_cccn888_masks_fill(ptr noundef %129, i16 noundef signext %131, ptr noundef nonnull %132, ptr noundef %133, i16 noundef signext %135, ptr noundef nonnull %136, ptr noundef %138, i16 noundef signext %140, ptr noundef nonnull %141, ptr noundef %142, i16 noundef signext %144, ptr noundef nonnull %125)
  br label %151

150:                                              ; preds = %148
  tail call void @__arm_2d_impl_cccn888_src_msk_1h_des_msk_fill(ptr noundef %129, i16 noundef signext %131, ptr noundef nonnull %132, ptr noundef %133, i16 noundef signext %135, ptr noundef nonnull %136, ptr noundef %138, i16 noundef signext %140, ptr noundef nonnull %141, ptr noundef %142, i16 noundef signext %144, ptr noundef nonnull %125)
  br label %151

151:                                              ; preds = %67, %66, %123, %122, %149, %150, %146, %147, %92, %91, %95, %94, %20, %26
  %.0 = phi i32 [ -2, %26 ], [ -2, %20 ], [ 0, %94 ], [ 0, %95 ], [ 0, %91 ], [ 0, %92 ], [ 0, %147 ], [ 0, %146 ], [ 0, %150 ], [ 0, %149 ], [ 0, %122 ], [ 0, %123 ], [ 0, %66 ], [ 0, %67 ]
  ret i32 %.0
}

attributes #0 = { noreturn 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 #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 = { noreturn 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, !8, i64 8}
!6 = !{!"__arm_2d_sub_task_t", !7, i64 0}
!7 = !{!"", !8, i64 0, !8, i64 8, !9, i64 16, !9, i64 17, !9, i64 24}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C/C++ TBAA"}
!11 = !{!12, !8, i64 8}
!12 = !{!"arm_2d_op_src_msk_t", !13, i64 0, !18, i64 48, !19, i64 64, !20, i64 72, !18, i64 80}
!13 = !{!"arm_2d_op_core_t", !14, i64 0, !17, i64 40}
!14 = !{!"", !8, i64 0, !8, i64 8, !15, i64 16, !9, i64 17, !9, i64 18, !16, i64 24}
!15 = !{!"", !9, i64 0}
!16 = !{!"arm_2d_op_evt_t", !8, i64 0, !8, i64 8}
!17 = !{!"long", !9, i64 0}
!18 = !{!"", !8, i64 0, !8, i64 8}
!19 = !{!"", !8, i64 0}
!20 = !{!"int", !9, i64 0}
!21 = !{!12, !8, i64 80}
!22 = !{!12, !8, i64 88}
!23 = !{!12, !20, i64 72}
!24 = !{!9, !9, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass