; LLVM IR from ermig1979/Simd :: src/Simd/SimdBaseWarpAffine.ll (ZN4Simd4Base22WarpAffineByteBilinear4InitEv)

; 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.Simd::Point" = type { float, float }
%"class.Simd::WarpAffine" = type { %"struct.Simd::Deletable", %"struct.Simd::WarpAffParam", i8, i64, i64, %"struct.Simd::Array" }
%"struct.Simd::Deletable" = type { ptr }
%"struct.Simd::WarpAffParam" = type { i32, [6 x float], [6 x float], [4 x i8], i64, i64, i64, i64, i64, i64, i64, i64 }
%"struct.Simd::Array" = type { ptr, i64 }
%"class.Simd::Base::WarpAffineByteBilinear" = type { %"class.Simd::WarpAffine", %"struct.Simd::Array.0", ptr, ptr, ptr, ptr, ptr }
%"struct.Simd::Array.0" = type { ptr, i64 }

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIiE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef, i64 noundef) #3

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIhE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 4, float noundef, float noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd4Base22WarpAffineByteBilinear4InitEv(ptr noundef nonnull align 8 dereferenceable(224) %0) #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca [4 x %"struct.Simd::Point"], align 16
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"struct.Simd::Point", align 4
  %14 = alloca %"struct.Simd::Point", align 4
  %15 = alloca %"struct.Simd::Point", align 4
  %16 = alloca %"struct.Simd::Point", align 4
  %17 = alloca %"struct.Simd::Point", align 4
  %18 = alloca %"struct.Simd::Point", align 4
  %19 = alloca %"struct.Simd::Point", align 4
  %20 = alloca %"struct.Simd::Point", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %21 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  %22 = getelementptr inbounds %"class.Simd::WarpAffine", ptr %21, i32 0, i32 1
  store ptr %22, ptr %3, align 8, !tbaa !5
  %23 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 1
  %24 = load ptr, ptr %3, align 8, !tbaa !5
  %25 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %24, i32 0, i32 8
  %26 = load i64, ptr %25, align 8, !tbaa !9
  %27 = mul i64 %26, 4
  call void @_ZN4Simd5ArrayIiE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %23, i64 noundef %27, i1 noundef zeroext false, i64 noundef 8)
  %28 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 1
  %29 = getelementptr inbounds %"struct.Simd::Array.0", ptr %28, i32 0, i32 0
  %30 = load ptr, ptr %29, align 8, !tbaa !13
  %31 = load ptr, ptr %3, align 8, !tbaa !5
  %32 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %31, i32 0, i32 8
  %33 = load i64, ptr %32, align 8, !tbaa !9
  %34 = mul i64 0, %33
  %35 = getelementptr inbounds i32, ptr %30, i64 %34
  %36 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 2
  store ptr %35, ptr %36, align 8, !tbaa !20
  %37 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 1
  %38 = getelementptr inbounds %"struct.Simd::Array.0", ptr %37, i32 0, i32 0
  %39 = load ptr, ptr %38, align 8, !tbaa !13
  %40 = load ptr, ptr %3, align 8, !tbaa !5
  %41 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %40, i32 0, i32 8
  %42 = load i64, ptr %41, align 8, !tbaa !9
  %43 = mul i64 1, %42
  %44 = getelementptr inbounds i32, ptr %39, i64 %43
  %45 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 3
  store ptr %44, ptr %45, align 8, !tbaa !21
  %46 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 1
  %47 = getelementptr inbounds %"struct.Simd::Array.0", ptr %46, i32 0, i32 0
  %48 = load ptr, ptr %47, align 8, !tbaa !13
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %49, i32 0, i32 8
  %51 = load i64, ptr %50, align 8, !tbaa !9
  %52 = mul i64 2, %51
  %53 = getelementptr inbounds i32, ptr %48, i64 %52
  %54 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 4
  store ptr %53, ptr %54, align 8, !tbaa !22
  %55 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 1
  %56 = getelementptr inbounds %"struct.Simd::Array.0", ptr %55, i32 0, i32 0
  %57 = load ptr, ptr %56, align 8, !tbaa !13
  %58 = load ptr, ptr %3, align 8, !tbaa !5
  %59 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %58, i32 0, i32 8
  %60 = load i64, ptr %59, align 8, !tbaa !9
  %61 = mul i64 3, %60
  %62 = getelementptr inbounds i32, ptr %57, i64 %61
  %63 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 5
  store ptr %62, ptr %63, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  %64 = load ptr, ptr %3, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %64, i32 0, i32 10
  %66 = load i64, ptr %65, align 8, !tbaa !24
  %67 = icmp eq i64 %66, 3
  br i1 %67, label %68, label %69

68:                                               ; preds = %1
  br label %73

69:                                               ; preds = %1
  %70 = load ptr, ptr %3, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %70, i32 0, i32 10
  %72 = load i64, ptr %71, align 8, !tbaa !24
  br label %73

73:                                               ; preds = %69, %68
  %74 = phi i64 [ 4, %68 ], [ %72, %69 ]
  store i64 %74, ptr %4, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %75, i32 0, i32 7
  %77 = load i64, ptr %76, align 8, !tbaa !26
  %78 = load ptr, ptr %3, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %78, i32 0, i32 11
  %80 = load i64, ptr %79, align 8, !tbaa !27
  %81 = call noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef %77, i64 noundef %80)
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %82, i32 0, i32 11
  %84 = load i64, ptr %83, align 8, !tbaa !27
  %85 = add i64 %81, %84
  store i64 %85, ptr %5, align 8, !tbaa !25
  %86 = load i64, ptr %5, align 8, !tbaa !25
  %87 = mul i64 %86, 10
  %88 = load i64, ptr %5, align 8, !tbaa !25
  %89 = load i64, ptr %4, align 8, !tbaa !25
  %90 = mul i64 %88, %89
  %91 = mul i64 %90, 4
  %92 = add i64 %87, %91
  %93 = load ptr, ptr %3, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %93, i32 0, i32 8
  %95 = load i64, ptr %94, align 8, !tbaa !9
  %96 = mul i64 %95, 8
  %97 = call noundef i64 @_ZN4Simd3MaxImEET_S1_S1_(i64 noundef %92, i64 noundef %96)
  %98 = getelementptr inbounds %"class.Simd::WarpAffine", ptr %21, i32 0, i32 3
  store i64 %97, ptr %98, align 8, !tbaa !28
  %99 = getelementptr inbounds %"class.Simd::WarpAffine", ptr %21, i32 0, i32 5
  %100 = getelementptr inbounds %"class.Simd::WarpAffine", ptr %21, i32 0, i32 3
  %101 = load i64, ptr %100, align 8, !tbaa !28
  %102 = getelementptr inbounds %"class.Simd::WarpAffine", ptr %21, i32 0, i32 4
  %103 = load i64, ptr %102, align 8, !tbaa !29
  %104 = mul i64 %101, %103
  call void @_ZN4Simd5ArrayIhE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %99, i64 noundef %104, i1 noundef zeroext false, i64 noundef 8)
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store float 0x3F1A36E2E0000000, ptr %9, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #5
  %105 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i32 0, i32 0
  %106 = getelementptr inbounds %"struct.Simd::Point", ptr %105, i64 4
  br label %107

107:                                              ; preds = %109, %73
  %108 = phi ptr [ %105, %73 ], [ %110, %109 ]
  invoke void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %108)
          to label %109 unwind label %230

109:                                              ; preds = %107
  %110 = getelementptr inbounds %"struct.Simd::Point", ptr %108, i64 1
  %111 = icmp eq ptr %110, %106
  br i1 %111, label %112, label %107

112:                                              ; preds = %109
  %113 = load float, ptr %9, align 4, !tbaa !30
  %114 = fadd float -1.000000e+00, %113
  store float %114, ptr %6, align 4, !tbaa !30
  %115 = load ptr, ptr %3, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %115, i32 0, i32 4
  %117 = load i64, ptr %116, align 8, !tbaa !32
  %118 = add i64 %117, 0
  %119 = uitofp i64 %118 to float
  %120 = load float, ptr %9, align 4, !tbaa !30
  %121 = fsub float %119, %120
  store float %121, ptr %8, align 4, !tbaa !30
  %122 = load ptr, ptr %3, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %122, i32 0, i32 5
  %124 = load i64, ptr %123, align 8, !tbaa !33
  %125 = add i64 %124, 0
  %126 = uitofp i64 %125 to float
  %127 = load float, ptr %9, align 4, !tbaa !30
  %128 = fsub float %126, %127
  store float %128, ptr %7, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %129 = load float, ptr %6, align 4, !tbaa !30
  %130 = load float, ptr %6, align 4, !tbaa !30
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %131, i32 0, i32 1
  %133 = getelementptr inbounds [6 x float], ptr %132, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %13, float noundef %129, float noundef %130, ptr noundef %133)
          to label %134 unwind label %240

134:                                              ; preds = %112
  %135 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %135, ptr align 4 %13, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %136 = load float, ptr %8, align 4, !tbaa !30
  %137 = load float, ptr %6, align 4, !tbaa !30
  %138 = load ptr, ptr %3, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %138, i32 0, i32 1
  %140 = getelementptr inbounds [6 x float], ptr %139, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %14, float noundef %136, float noundef %137, ptr noundef %140)
          to label %141 unwind label %244

141:                                              ; preds = %134
  %142 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %142, ptr align 4 %14, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %143 = load float, ptr %8, align 4, !tbaa !30
  %144 = load float, ptr %7, align 4, !tbaa !30
  %145 = load ptr, ptr %3, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %145, i32 0, i32 1
  %147 = getelementptr inbounds [6 x float], ptr %146, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %15, float noundef %143, float noundef %144, ptr noundef %147)
          to label %148 unwind label %248

148:                                              ; preds = %141
  %149 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %149, ptr align 4 %15, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %150 = load float, ptr %6, align 4, !tbaa !30
  %151 = load float, ptr %7, align 4, !tbaa !30
  %152 = load ptr, ptr %3, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %152, i32 0, i32 1
  %154 = getelementptr inbounds [6 x float], ptr %153, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %16, float noundef %150, float noundef %151, ptr noundef %154)
          to label %155 unwind label %252

155:                                              ; preds = %148
  %156 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %156, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  %157 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 0
  %158 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 4
  %159 = load ptr, ptr %158, align 8, !tbaa !22
  %160 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 5
  %161 = load ptr, ptr %160, align 8, !tbaa !23
  %162 = load ptr, ptr %21, align 8, !tbaa !35
  %163 = getelementptr inbounds ptr, ptr %162, i64 3
  %164 = load ptr, ptr %163, align 8
  invoke void %164(ptr noundef nonnull align 8 dereferenceable(224) %21, ptr noundef %157, ptr noundef %159, ptr noundef %161, ptr noundef null, ptr noundef null)
          to label %165 unwind label %256

165:                                              ; preds = %155
  %166 = load float, ptr %9, align 4, !tbaa !30
  %167 = fadd float 0.000000e+00, %166
  store float %167, ptr %6, align 4, !tbaa !30
  %168 = load ptr, ptr %3, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %168, i32 0, i32 4
  %170 = load i64, ptr %169, align 8, !tbaa !32
  %171 = sub i64 %170, 1
  %172 = uitofp i64 %171 to float
  %173 = load float, ptr %9, align 4, !tbaa !30
  %174 = fsub float %172, %173
  store float %174, ptr %8, align 4, !tbaa !30
  %175 = load ptr, ptr %3, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %175, i32 0, i32 5
  %177 = load i64, ptr %176, align 8, !tbaa !33
  %178 = sub i64 %177, 1
  %179 = uitofp i64 %178 to float
  %180 = load float, ptr %9, align 4, !tbaa !30
  %181 = fsub float %179, %180
  store float %181, ptr %7, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %182 = load float, ptr %6, align 4, !tbaa !30
  %183 = load float, ptr %6, align 4, !tbaa !30
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %184, i32 0, i32 1
  %186 = getelementptr inbounds [6 x float], ptr %185, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %17, float noundef %182, float noundef %183, ptr noundef %186)
          to label %187 unwind label %260

187:                                              ; preds = %165
  %188 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %188, ptr align 4 %17, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %189 = load float, ptr %8, align 4, !tbaa !30
  %190 = load float, ptr %6, align 4, !tbaa !30
  %191 = load ptr, ptr %3, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %191, i32 0, i32 1
  %193 = getelementptr inbounds [6 x float], ptr %192, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %18, float noundef %189, float noundef %190, ptr noundef %193)
          to label %194 unwind label %264

194:                                              ; preds = %187
  %195 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %195, ptr align 4 %18, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %196 = load float, ptr %8, align 4, !tbaa !30
  %197 = load float, ptr %7, align 4, !tbaa !30
  %198 = load ptr, ptr %3, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %198, i32 0, i32 1
  %200 = getelementptr inbounds [6 x float], ptr %199, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %19, float noundef %196, float noundef %197, ptr noundef %200)
          to label %201 unwind label %268

201:                                              ; preds = %194
  %202 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %202, ptr align 4 %19, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %203 = load float, ptr %6, align 4, !tbaa !30
  %204 = load float, ptr %7, align 4, !tbaa !30
  %205 = load ptr, ptr %3, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.Simd::WarpAffParam", ptr %205, i32 0, i32 1
  %207 = getelementptr inbounds [6 x float], ptr %206, i64 0, i64 0
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind writable sret(%"struct.Simd::Point") align 4 %20, float noundef %203, float noundef %204, ptr noundef %207)
          to label %208 unwind label %272

208:                                              ; preds = %201
  %209 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %209, ptr align 4 %20, i64 8, i1 false), !tbaa.struct !34
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  %210 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i64 0, i64 0
  %211 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 2
  %212 = load ptr, ptr %211, align 8, !tbaa !20
  %213 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 3
  %214 = load ptr, ptr %213, align 8, !tbaa !21
  %215 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 4
  %216 = load ptr, ptr %215, align 8, !tbaa !22
  %217 = getelementptr inbounds %"class.Simd::Base::WarpAffineByteBilinear", ptr %21, i32 0, i32 5
  %218 = load ptr, ptr %217, align 8, !tbaa !23
  %219 = load ptr, ptr %21, align 8, !tbaa !35
  %220 = getelementptr inbounds ptr, ptr %219, i64 3
  %221 = load ptr, ptr %220, align 8
  invoke void %221(ptr noundef nonnull align 8 dereferenceable(224) %21, ptr noundef %210, ptr noundef %212, ptr noundef %214, ptr noundef %216, ptr noundef %218)
          to label %222 unwind label %256

222:                                              ; preds = %208
  %223 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i32 0, i32 0
  %224 = getelementptr inbounds %"struct.Simd::Point", ptr %223, i64 4
  br label %225

225:                                              ; preds = %225, %222
  %226 = phi ptr [ %224, %222 ], [ %227, %225 ]
  %227 = getelementptr inbounds %"struct.Simd::Point", ptr %226, i64 -1
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %227) #5
  %228 = icmp eq ptr %227, %223
  br i1 %228, label %229, label %225

229:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  ret void

230:                                              ; preds = %107
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %11, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %12, align 4
  %234 = icmp eq ptr %105, %108
  br i1 %234, label %239, label %235

235:                                              ; preds = %235, %230
  %236 = phi ptr [ %108, %230 ], [ %237, %235 ]
  %237 = getelementptr inbounds %"struct.Simd::Point", ptr %236, i64 -1
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %237) #5
  %238 = icmp eq ptr %237, %105
  br i1 %238, label %239, label %235

239:                                              ; preds = %235, %230
  br label %284

240:                                              ; preds = %112
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %11, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  br label %276

244:                                              ; preds = %134
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %11, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  br label %276

248:                                              ; preds = %141
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %11, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  br label %276

252:                                              ; preds = %148
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %11, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  br label %276

256:                                              ; preds = %208, %155
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %11, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %12, align 4
  br label %276

260:                                              ; preds = %165
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %11, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  br label %276

264:                                              ; preds = %187
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %11, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  br label %276

268:                                              ; preds = %194
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %11, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  br label %276

272:                                              ; preds = %201
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %11, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %276

276:                                              ; preds = %272, %268, %264, %260, %256, %252, %248, %244, %240
  %277 = getelementptr inbounds [4 x %"struct.Simd::Point"], ptr %10, i32 0, i32 0
  %278 = getelementptr inbounds %"struct.Simd::Point", ptr %277, i64 4
  br label %279

279:                                              ; preds = %279, %276
  %280 = phi ptr [ %278, %276 ], [ %281, %279 ]
  %281 = getelementptr inbounds %"struct.Simd::Point", ptr %280, i64 -1
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %281) #5
  %282 = icmp eq ptr %281, %277
  br i1 %282, label %283, label %279

283:                                              ; preds = %279
  br label %284

284:                                              ; preds = %283, %239
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  br label %285

285:                                              ; preds = %284
  %286 = load ptr, ptr %11, align 8
  %287 = load i32, ptr %12, align 4
  %288 = insertvalue { ptr, i32 } poison, ptr %286, 0
  %289 = insertvalue { ptr, i32 } %288, i32 %287, 1
  resume { ptr, i32 } %289
}

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd3MaxImEET_S1_S1_(i64 noundef, i64 noundef) #3

attributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline mustprogress 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 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 #5 = { 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++ TBAA"}
!9 = !{!10, !12, i64 88}
!10 = !{!"_ZTSN4Simd12WarpAffParamE", !11, i64 0, !7, i64 4, !7, i64 28, !7, i64 52, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112}
!11 = !{!"_ZTS19SimdWarpAffineFlags", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !6, i64 168}
!14 = !{!"_ZTSN4Simd4Base22WarpAffineByteBilinearE", !15, i64 0, !19, i64 168, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216}
!15 = !{!"_ZTSN4Simd10WarpAffineE", !16, i64 0, !10, i64 8, !17, i64 128, !12, i64 136, !12, i64 144, !18, i64 152}
!16 = !{!"_ZTSN4Simd9DeletableE"}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSN4Simd5ArrayIhEE", !6, i64 0, !12, i64 8}
!19 = !{!"_ZTSN4Simd5ArrayIiEE", !6, i64 0, !12, i64 8}
!20 = !{!14, !6, i64 184}
!21 = !{!14, !6, i64 192}
!22 = !{!14, !6, i64 200}
!23 = !{!14, !6, i64 208}
!24 = !{!10, !12, i64 104}
!25 = !{!12, !12, i64 0}
!26 = !{!10, !12, i64 80}
!27 = !{!10, !12, i64 112}
!28 = !{!15, !12, i64 136}
!29 = !{!15, !12, i64 144}
!30 = !{!31, !31, i64 0}
!31 = !{!"float", !7, i64 0}
!32 = !{!10, !12, i64 56}
!33 = !{!10, !12, i64 64}
!34 = !{i64 0, i64 4, !30, i64 4, i64 4, !30}
!35 = !{!36, !36, i64 0}
!36 = !{!"vtable pointer", !8, 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.Simd::Point" = type { float, float }

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIiE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd5ArrayIhE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext, i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind noalias writable sret(%"struct.Simd::Point") align 4, float noundef, float noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Simd4Base22WarpAffineByteBilinear4InitEv(ptr noundef nonnull align 8 dereferenceable(224) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [4 x %"struct.Simd::Point"], align 16
  %3 = alloca %"struct.Simd::Point", align 8
  %4 = alloca %"struct.Simd::Point", align 8
  %5 = alloca %"struct.Simd::Point", align 8
  %6 = alloca %"struct.Simd::Point", align 8
  %7 = alloca %"struct.Simd::Point", align 8
  %8 = alloca %"struct.Simd::Point", align 8
  %9 = alloca %"struct.Simd::Point", align 8
  %10 = alloca %"struct.Simd::Point", align 8
  %11 = getelementptr inbounds i8, ptr %0, i64 168
  %12 = getelementptr inbounds i8, ptr %0, i64 96
  %13 = load i64, ptr %12, align 8, !tbaa !5
  %14 = shl i64 %13, 2
  tail call void @_ZN4Simd5ArrayIiE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %14, i1 noundef zeroext false, i64 noundef 8)
  %15 = load ptr, ptr %11, align 8, !tbaa !11
  %16 = getelementptr inbounds i8, ptr %0, i64 184
  store ptr %15, ptr %16, align 8, !tbaa !19
  %17 = load i64, ptr %12, align 8, !tbaa !5
  %18 = getelementptr inbounds i32, ptr %15, i64 %17
  %19 = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %18, ptr %19, align 8, !tbaa !20
  %.idx = shl i64 %17, 3
  %20 = getelementptr inbounds i8, ptr %15, i64 %.idx
  %21 = getelementptr inbounds i8, ptr %0, i64 200
  store ptr %20, ptr %21, align 8, !tbaa !21
  %.idx54 = mul i64 %17, 12
  %22 = getelementptr inbounds i8, ptr %15, i64 %.idx54
  %23 = getelementptr inbounds i8, ptr %0, i64 208
  store ptr %22, ptr %23, align 8, !tbaa !22
  %24 = getelementptr inbounds i8, ptr %0, i64 112
  %25 = load i64, ptr %24, align 8, !tbaa !23
  %26 = icmp eq i64 %25, 3
  %27 = shl i64 %25, 2
  %28 = getelementptr inbounds i8, ptr %0, i64 88
  %29 = load i64, ptr %28, align 8, !tbaa !24
  %30 = getelementptr inbounds i8, ptr %0, i64 120
  %31 = load i64, ptr %30, align 8, !tbaa !25
  %32 = tail call noundef i64 @_ZN4Simd7AlignHiEmm(i64 noundef %29, i64 noundef %31)
  %33 = load i64, ptr %30, align 8, !tbaa !25
  %34 = add i64 %33, %32
  %35 = add i64 %27, 10
  %reass.add = select i1 %26, i64 26, i64 %35
  %reass.mul = mul i64 %reass.add, %34
  %36 = load i64, ptr %12, align 8, !tbaa !5
  %37 = shl i64 %36, 3
  %38 = tail call noundef i64 @_ZN4Simd3MaxImEET_S1_S1_(i64 noundef %reass.mul, i64 noundef %37)
  %39 = getelementptr inbounds i8, ptr %0, i64 136
  store i64 %38, ptr %39, align 8, !tbaa !26
  %40 = getelementptr inbounds i8, ptr %0, i64 152
  %41 = getelementptr inbounds i8, ptr %0, i64 144
  %42 = load i64, ptr %41, align 8, !tbaa !27
  %43 = mul i64 %42, %38
  tail call void @_ZN4Simd5ArrayIhE6ResizeEmbm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef %43, i1 noundef zeroext false, i64 noundef 8)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #4
  call void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %2)
  %.ptr.1 = getelementptr inbounds i8, ptr %2, i64 8
  call void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %.ptr.1)
  %.ptr.2 = getelementptr inbounds i8, ptr %2, i64 16
  call void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %.ptr.2)
  %.ptr.3 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZN4Simd5PointIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %.ptr.3)
  %44 = getelementptr inbounds i8, ptr %0, i64 64
  %45 = load i64, ptr %44, align 8, !tbaa !28
  %46 = uitofp i64 %45 to float
  %47 = fadd float %46, 0xBF1A36E2E0000000
  %48 = getelementptr inbounds i8, ptr %0, i64 72
  %49 = load i64, ptr %48, align 8, !tbaa !29
  %50 = uitofp i64 %49 to float
  %51 = fadd float %50, 0xBF1A36E2E0000000
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #4
  %52 = getelementptr inbounds i8, ptr %0, i64 12
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %3, float noundef 0xBFEFFF2E40000000, float noundef 0xBFEFFF2E40000000, ptr noundef nonnull %52)
          to label %53 unwind label %93

53:                                               ; preds = %1
  %54 = load i64, ptr %3, align 8
  store i64 %54, ptr %2, align 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %3) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %4, float noundef %47, float noundef 0xBFEFFF2E40000000, ptr noundef nonnull %52)
          to label %55 unwind label %95

55:                                               ; preds = %53
  %56 = load i64, ptr %4, align 8
  store i64 %56, ptr %.ptr.1, align 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %4) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %5, float noundef %47, float noundef %51, ptr noundef nonnull %52)
          to label %57 unwind label %97

57:                                               ; preds = %55
  %58 = load i64, ptr %5, align 8
  store i64 %58, ptr %.ptr.2, align 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %5) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %6, float noundef 0xBFEFFF2E40000000, float noundef %51, ptr noundef nonnull %52)
          to label %59 unwind label %99

59:                                               ; preds = %57
  %60 = load i64, ptr %6, align 8
  store i64 %60, ptr %.ptr.3, align 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  %61 = load ptr, ptr %21, align 8, !tbaa !21
  %62 = load ptr, ptr %23, align 8, !tbaa !22
  %63 = load ptr, ptr %0, align 8, !tbaa !30
  %64 = getelementptr inbounds i8, ptr %63, i64 24
  %65 = load ptr, ptr %64, align 8
  invoke void %65(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull %2, ptr noundef %61, ptr noundef %62, ptr noundef null, ptr noundef null)
          to label %66 unwind label %101

66:                                               ; preds = %59
  %67 = load i64, ptr %44, align 8, !tbaa !28
  %68 = add i64 %67, -1
  %69 = uitofp i64 %68 to float
  %70 = fadd float %69, 0xBF1A36E2E0000000
  %71 = load i64, ptr %48, align 8, !tbaa !29
  %72 = add i64 %71, -1
  %73 = uitofp i64 %72 to float
  %74 = fadd float %73, 0xBF1A36E2E0000000
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %7, float noundef 0x3F1A36E2E0000000, float noundef 0x3F1A36E2E0000000, ptr noundef nonnull %52)
          to label %75 unwind label %103

75:                                               ; preds = %66
  %76 = load i64, ptr %7, align 8
  store i64 %76, ptr %2, align 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %8, float noundef %70, float noundef 0x3F1A36E2E0000000, ptr noundef nonnull %52)
          to label %77 unwind label %105

77:                                               ; preds = %75
  %78 = load i64, ptr %8, align 8
  store i64 %78, ptr %.ptr.1, align 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %9, float noundef %70, float noundef %74, ptr noundef nonnull %52)
          to label %79 unwind label %107

79:                                               ; preds = %77
  %80 = load i64, ptr %9, align 8
  store i64 %80, ptr %.ptr.2, align 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  invoke void @_ZN4Simd4Base4ConvEffPKf(ptr dead_on_unwind nonnull writable sret(%"struct.Simd::Point") align 4 %10, float noundef 0x3F1A36E2E0000000, float noundef %74, ptr noundef nonnull %52)
          to label %81 unwind label %109

81:                                               ; preds = %79
  %82 = load i64, ptr %10, align 8
  store i64 %82, ptr %.ptr.3, align 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  %83 = load ptr, ptr %16, align 8, !tbaa !19
  %84 = load ptr, ptr %19, align 8, !tbaa !20
  %85 = load ptr, ptr %21, align 8, !tbaa !21
  %86 = load ptr, ptr %23, align 8, !tbaa !22
  %87 = load ptr, ptr %0, align 8, !tbaa !30
  %88 = getelementptr inbounds i8, ptr %87, i64 24
  %89 = load ptr, ptr %88, align 8
  invoke void %89(ptr noundef nonnull align 8 dereferenceable(224) %0, ptr noundef nonnull %2, ptr noundef %83, ptr noundef %84, ptr noundef %85, ptr noundef %86)
          to label %.preheader.preheader unwind label %101

.preheader.preheader:                             ; preds = %81
  %90 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %90) #4
  %91 = getelementptr inbounds i8, ptr %2, i64 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %91) #4
  %92 = getelementptr inbounds i8, ptr %2, i64 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %92) #4
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %2) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #4
  ret void

93:                                               ; preds = %1
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  br label %111

95:                                               ; preds = %53
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #4
  br label %111

97:                                               ; preds = %55
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  br label %111

99:                                               ; preds = %57
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #4
  br label %111

101:                                              ; preds = %81, %59
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %111

103:                                              ; preds = %66
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  br label %111

105:                                              ; preds = %75
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  br label %111

107:                                              ; preds = %77
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  br label %111

109:                                              ; preds = %79
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  br label %111

111:                                              ; preds = %109, %107, %105, %103, %101, %99, %97, %95, %93
  %.pn = phi { ptr, i32 } [ %102, %101 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %104, %103 ], [ %100, %99 ], [ %98, %97 ], [ %96, %95 ], [ %94, %93 ]
  %112 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %112) #4
  %113 = getelementptr inbounds i8, ptr %2, i64 16
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %113) #4
  %114 = getelementptr inbounds i8, ptr %2, i64 8
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %114) #4
  call void @_ZN4Simd5PointIfED2Ev(ptr noundef nonnull align 4 dereferenceable(8) %2) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #4
  resume { ptr, i32 } %.pn
}

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN4Simd3MaxImEET_S1_S1_(i64 noundef, i64 noundef) local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 88}
!6 = !{!"_ZTSN4Simd12WarpAffParamE", !7, i64 0, !8, i64 4, !8, i64 28, !8, i64 52, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112}
!7 = !{!"_ZTS19SimdWarpAffineFlags", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"long", !8, i64 0}
!11 = !{!12, !17, i64 168}
!12 = !{!"_ZTSN4Simd4Base22WarpAffineByteBilinearE", !13, i64 0, !18, i64 168, !17, i64 184, !17, i64 192, !17, i64 200, !17, i64 208, !17, i64 216}
!13 = !{!"_ZTSN4Simd10WarpAffineE", !14, i64 0, !6, i64 8, !15, i64 128, !10, i64 136, !10, i64 144, !16, i64 152}
!14 = !{!"_ZTSN4Simd9DeletableE"}
!15 = !{!"bool", !8, i64 0}
!16 = !{!"_ZTSN4Simd5ArrayIhEE", !17, i64 0, !10, i64 8}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!"_ZTSN4Simd5ArrayIiEE", !17, i64 0, !10, i64 8}
!19 = !{!12, !17, i64 184}
!20 = !{!12, !17, i64 192}
!21 = !{!12, !17, i64 200}
!22 = !{!12, !17, i64 208}
!23 = !{!6, !10, i64 104}
!24 = !{!6, !10, i64 80}
!25 = !{!6, !10, i64 112}
!26 = !{!13, !10, i64 136}
!27 = !{!13, !10, i64 144}
!28 = !{!6, !10, i64 56}
!29 = !{!6, !10, i64 64}
!30 = !{!31, !31, i64 0}
!31 = !{!"vtable pointer", !9, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LoopSimplifyPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass