; LLVM IR from jrouwe/JoltPhysics :: TestFramework/UI/UIManager.ll (ZN9UIManager8DrawQuadEiiiiRK14UITexturedQuadN3JPH5ColorE)

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

%"class.JPH::Color" = type { %union.anon.10 }
%union.anon.10 = type { i32 }
%"class.JPH::Ref.11" = type { ptr }
%class.UITexturedQuad = type { %"class.JPH::RefConst", i32, i32, i32, i32, i32, i32, i32, i32 }
%"class.JPH::RefConst" = type { ptr }
%class.UIManager = type { %class.UIElement, ptr, ptr, %"class.JPH::Array.3", i8, %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::function", i32, float }
%class.UIElement = type { %class.UIEventListener, i32, ptr, %"class.JPH::Array", %"class.UIElement::Position", %"class.UIElement::Position", %"class.UIElement::Size", %"class.UIElement::Size", %"class.UIElement::Size", %"class.UIElement::Size", i8, i8, i8, i8, i8, i8, i8, %"class.JPH::Array.0", ptr }
%class.UIEventListener = type { ptr }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.UIElement::Position" = type { i32, %"class.UIElement::Size" }
%"class.UIElement::Size" = type { i32, i32 }
%"class.JPH::Array.0" = type { i64, i64, ptr }
%"class.JPH::Array.3" = type { i64, i64, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.7" }
%"struct.std::_Head_base.7" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9UIManager8DrawQuadEiiiiRK14UITexturedQuadN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(248) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(40) %5, i32 %6) #2 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.JPH::Color", align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca i8, align 1
  %20 = alloca %"class.JPH::Ref.11", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca ptr, align 8
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca float, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca float, align 4
  %38 = alloca %"class.JPH::Color", align 4
  %39 = alloca %"class.JPH::Color", align 4
  %40 = alloca %"class.JPH::Color", align 4
  %41 = alloca %"class.JPH::Color", align 4
  %42 = alloca %"class.JPH::Color", align 4
  %43 = alloca %"class.JPH::Color", align 4
  %44 = alloca %"class.JPH::Color", align 4
  %45 = alloca %"class.JPH::Color", align 4
  %46 = alloca %"class.JPH::Color", align 4
  %47 = alloca %"class.JPH::Color", align 4
  %48 = alloca %"class.JPH::Ref.11", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.JPH::Color", align 4
  %51 = getelementptr inbounds %"class.JPH::Color", ptr %8, i32 0, i32 0
  %52 = getelementptr inbounds %union.anon.10, ptr %51, i32 0, i32 0
  store i32 %6, ptr %52, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store i32 %1, ptr %10, align 4, !tbaa !9
  store i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %3, ptr %12, align 4, !tbaa !9
  store i32 %4, ptr %13, align 4, !tbaa !9
  store ptr %5, ptr %14, align 8, !tbaa !5
  %53 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %54 = load i32, ptr %10, align 4, !tbaa !9
  %55 = sitofp i32 %54 to float
  store float %55, ptr %15, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %56 = load i32, ptr %11, align 4, !tbaa !9
  %57 = sitofp i32 %56 to float
  store float %57, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %58 = load i32, ptr %10, align 4, !tbaa !9
  %59 = load i32, ptr %12, align 4, !tbaa !9
  %60 = add nsw i32 %58, %59
  %61 = sitofp i32 %60 to float
  store float %61, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %62 = load i32, ptr %11, align 4, !tbaa !9
  %63 = load i32, ptr %13, align 4, !tbaa !9
  %64 = add nsw i32 %62, %63
  %65 = sitofp i32 %64 to float
  store float %65, ptr %18, align 4, !tbaa !11
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = getelementptr inbounds %class.UITexturedQuad, ptr %66, i32 0, i32 0
  %68 = call noundef zeroext i1 @_ZNK3JPH8RefConstI7TextureEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef null)
  br i1 %68, label %69, label %417

69:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  %70 = load ptr, ptr %14, align 8, !tbaa !5
  %71 = call noundef zeroext i1 @_ZNK14UITexturedQuad12HasInnerPartEv(ptr noundef nonnull align 8 dereferenceable(40) %70)
  %72 = zext i1 %71 to i8
  store i8 %72, ptr %19, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %73 = getelementptr inbounds %class.UIManager, ptr %53, i32 0, i32 1
  %74 = load ptr, ptr %73, align 8, !tbaa !15
  %75 = load ptr, ptr %74, align 16, !tbaa !36
  %76 = getelementptr inbounds ptr, ptr %75, i64 12
  %77 = load ptr, ptr %76, align 8
  %78 = call noundef ptr %77(ptr noundef nonnull align 16 dereferenceable(832) %74, i32 noundef 0)
  call void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef %78)
  %79 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %80 unwind label %353

80:                                               ; preds = %69
  %81 = load i8, ptr %19, align 1, !tbaa !13, !range !38, !noundef !39
  %82 = trunc i8 %81 to i1
  %83 = zext i1 %82 to i64
  %84 = select i1 %82, i32 54, i32 6
  %85 = load ptr, ptr %79, align 8, !tbaa !36
  %86 = getelementptr inbounds ptr, ptr %85, i64 4
  %87 = load ptr, ptr %86, align 8
  invoke void %87(ptr noundef nonnull align 8 dereferenceable(32) %79, i32 noundef %84, i32 noundef 24, ptr noundef null)
          to label %88 unwind label %353

88:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = getelementptr inbounds %class.UITexturedQuad, ptr %89, i32 0, i32 0
  %91 = invoke noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %92 unwind label %357

92:                                               ; preds = %88
  %93 = invoke noundef i32 @_ZNK7Texture8GetWidthEv(ptr noundef nonnull align 8 dereferenceable(20) %91)
          to label %94 unwind label %357

94:                                               ; preds = %92
  %95 = sitofp i32 %93 to float
  store float %95, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %96 = load ptr, ptr %14, align 8, !tbaa !5
  %97 = getelementptr inbounds %class.UITexturedQuad, ptr %96, i32 0, i32 0
  %98 = invoke noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %99 unwind label %361

99:                                               ; preds = %94
  %100 = invoke noundef i32 @_ZNK7Texture9GetHeightEv(ptr noundef nonnull align 8 dereferenceable(20) %98)
          to label %101 unwind label %361

101:                                              ; preds = %99
  %102 = sitofp i32 %100 to float
  store float %102, ptr %24, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = getelementptr inbounds %class.UITexturedQuad, ptr %103, i32 0, i32 1
  %105 = load i32, ptr %104, align 8, !tbaa !40
  %106 = sitofp i32 %105 to float
  store float %106, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = getelementptr inbounds %class.UITexturedQuad, ptr %107, i32 0, i32 2
  %109 = load i32, ptr %108, align 4, !tbaa !43
  %110 = sitofp i32 %109 to float
  store float %110, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds %class.UITexturedQuad, ptr %111, i32 0, i32 1
  %113 = load i32, ptr %112, align 8, !tbaa !40
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = getelementptr inbounds %class.UITexturedQuad, ptr %114, i32 0, i32 3
  %116 = load i32, ptr %115, align 8, !tbaa !44
  %117 = add nsw i32 %113, %116
  %118 = sitofp i32 %117 to float
  store float %118, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = getelementptr inbounds %class.UITexturedQuad, ptr %119, i32 0, i32 2
  %121 = load i32, ptr %120, align 4, !tbaa !43
  %122 = load ptr, ptr %14, align 8, !tbaa !5
  %123 = getelementptr inbounds %class.UITexturedQuad, ptr %122, i32 0, i32 4
  %124 = load i32, ptr %123, align 4, !tbaa !45
  %125 = add nsw i32 %121, %124
  %126 = sitofp i32 %125 to float
  store float %126, ptr %28, align 4, !tbaa !11
  %127 = load float, ptr %23, align 4, !tbaa !11
  %128 = load float, ptr %25, align 4, !tbaa !11
  %129 = fdiv float %128, %127
  store float %129, ptr %25, align 4, !tbaa !11
  %130 = load float, ptr %24, align 4, !tbaa !11
  %131 = load float, ptr %26, align 4, !tbaa !11
  %132 = fdiv float %131, %130
  store float %132, ptr %26, align 4, !tbaa !11
  %133 = load float, ptr %23, align 4, !tbaa !11
  %134 = load float, ptr %27, align 4, !tbaa !11
  %135 = fdiv float %134, %133
  store float %135, ptr %27, align 4, !tbaa !11
  %136 = load float, ptr %24, align 4, !tbaa !11
  %137 = load float, ptr %28, align 4, !tbaa !11
  %138 = fdiv float %137, %136
  store float %138, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  %139 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %140 unwind label %365

140:                                              ; preds = %101
  %141 = load ptr, ptr %139, align 8, !tbaa !36
  %142 = getelementptr inbounds ptr, ptr %141, i64 6
  %143 = load ptr, ptr %142, align 8
  %144 = invoke noundef ptr %143(ptr noundef nonnull align 8 dereferenceable(32) %139)
          to label %145 unwind label %365

145:                                              ; preds = %140
  store ptr %144, ptr %29, align 8, !tbaa !5
  %146 = load i8, ptr %19, align 1, !tbaa !13, !range !38, !noundef !39
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %373

148:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %149 = load i32, ptr %10, align 4, !tbaa !9
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  %151 = getelementptr inbounds %class.UITexturedQuad, ptr %150, i32 0, i32 5
  %152 = load i32, ptr %151, align 8, !tbaa !46
  %153 = add nsw i32 %149, %152
  %154 = load ptr, ptr %14, align 8, !tbaa !5
  %155 = getelementptr inbounds %class.UITexturedQuad, ptr %154, i32 0, i32 1
  %156 = load i32, ptr %155, align 8, !tbaa !40
  %157 = sub nsw i32 %153, %156
  %158 = sitofp i32 %157 to float
  store float %158, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %159 = load i32, ptr %11, align 4, !tbaa !9
  %160 = load ptr, ptr %14, align 8, !tbaa !5
  %161 = getelementptr inbounds %class.UITexturedQuad, ptr %160, i32 0, i32 6
  %162 = load i32, ptr %161, align 4, !tbaa !47
  %163 = add nsw i32 %159, %162
  %164 = load ptr, ptr %14, align 8, !tbaa !5
  %165 = getelementptr inbounds %class.UITexturedQuad, ptr %164, i32 0, i32 2
  %166 = load i32, ptr %165, align 4, !tbaa !43
  %167 = sub nsw i32 %163, %166
  %168 = sitofp i32 %167 to float
  store float %168, ptr %31, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %169 = load i32, ptr %10, align 4, !tbaa !9
  %170 = load i32, ptr %12, align 4, !tbaa !9
  %171 = add nsw i32 %169, %170
  %172 = load ptr, ptr %14, align 8, !tbaa !5
  %173 = getelementptr inbounds %class.UITexturedQuad, ptr %172, i32 0, i32 3
  %174 = load i32, ptr %173, align 8, !tbaa !44
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = getelementptr inbounds %class.UITexturedQuad, ptr %175, i32 0, i32 7
  %177 = load i32, ptr %176, align 8, !tbaa !48
  %178 = sub nsw i32 %174, %177
  %179 = load ptr, ptr %14, align 8, !tbaa !5
  %180 = getelementptr inbounds %class.UITexturedQuad, ptr %179, i32 0, i32 5
  %181 = load i32, ptr %180, align 8, !tbaa !46
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = getelementptr inbounds %class.UITexturedQuad, ptr %182, i32 0, i32 1
  %184 = load i32, ptr %183, align 8, !tbaa !40
  %185 = sub nsw i32 %181, %184
  %186 = sub nsw i32 %178, %185
  %187 = sub nsw i32 %171, %186
  %188 = sitofp i32 %187 to float
  store float %188, ptr %32, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %189 = load i32, ptr %11, align 4, !tbaa !9
  %190 = load i32, ptr %13, align 4, !tbaa !9
  %191 = add nsw i32 %189, %190
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = getelementptr inbounds %class.UITexturedQuad, ptr %192, i32 0, i32 4
  %194 = load i32, ptr %193, align 4, !tbaa !45
  %195 = load ptr, ptr %14, align 8, !tbaa !5
  %196 = getelementptr inbounds %class.UITexturedQuad, ptr %195, i32 0, i32 8
  %197 = load i32, ptr %196, align 4, !tbaa !49
  %198 = sub nsw i32 %194, %197
  %199 = load ptr, ptr %14, align 8, !tbaa !5
  %200 = getelementptr inbounds %class.UITexturedQuad, ptr %199, i32 0, i32 6
  %201 = load i32, ptr %200, align 4, !tbaa !47
  %202 = load ptr, ptr %14, align 8, !tbaa !5
  %203 = getelementptr inbounds %class.UITexturedQuad, ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 4, !tbaa !43
  %205 = sub nsw i32 %201, %204
  %206 = sub nsw i32 %198, %205
  %207 = sub nsw i32 %191, %206
  %208 = sitofp i32 %207 to float
  store float %208, ptr %33, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %209 = load ptr, ptr %14, align 8, !tbaa !5
  %210 = getelementptr inbounds %class.UITexturedQuad, ptr %209, i32 0, i32 5
  %211 = load i32, ptr %210, align 8, !tbaa !46
  %212 = sitofp i32 %211 to float
  store float %212, ptr %34, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %213 = load ptr, ptr %14, align 8, !tbaa !5
  %214 = getelementptr inbounds %class.UITexturedQuad, ptr %213, i32 0, i32 6
  %215 = load i32, ptr %214, align 4, !tbaa !47
  %216 = sitofp i32 %215 to float
  store float %216, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %217 = load ptr, ptr %14, align 8, !tbaa !5
  %218 = getelementptr inbounds %class.UITexturedQuad, ptr %217, i32 0, i32 5
  %219 = load i32, ptr %218, align 8, !tbaa !46
  %220 = load ptr, ptr %14, align 8, !tbaa !5
  %221 = getelementptr inbounds %class.UITexturedQuad, ptr %220, i32 0, i32 7
  %222 = load i32, ptr %221, align 8, !tbaa !48
  %223 = add nsw i32 %219, %222
  %224 = sitofp i32 %223 to float
  store float %224, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %225 = load ptr, ptr %14, align 8, !tbaa !5
  %226 = getelementptr inbounds %class.UITexturedQuad, ptr %225, i32 0, i32 6
  %227 = load i32, ptr %226, align 4, !tbaa !47
  %228 = load ptr, ptr %14, align 8, !tbaa !5
  %229 = getelementptr inbounds %class.UITexturedQuad, ptr %228, i32 0, i32 8
  %230 = load i32, ptr %229, align 4, !tbaa !49
  %231 = add nsw i32 %227, %230
  %232 = sitofp i32 %231 to float
  store float %232, ptr %37, align 4, !tbaa !11
  %233 = load float, ptr %23, align 4, !tbaa !11
  %234 = load float, ptr %34, align 4, !tbaa !11
  %235 = fdiv float %234, %233
  store float %235, ptr %34, align 4, !tbaa !11
  %236 = load float, ptr %24, align 4, !tbaa !11
  %237 = load float, ptr %35, align 4, !tbaa !11
  %238 = fdiv float %237, %236
  store float %238, ptr %35, align 4, !tbaa !11
  %239 = load float, ptr %23, align 4, !tbaa !11
  %240 = load float, ptr %36, align 4, !tbaa !11
  %241 = fdiv float %240, %239
  store float %241, ptr %36, align 4, !tbaa !11
  %242 = load float, ptr %24, align 4, !tbaa !11
  %243 = load float, ptr %37, align 4, !tbaa !11
  %244 = fdiv float %243, %242
  store float %244, ptr %37, align 4, !tbaa !11
  %245 = load float, ptr %15, align 4, !tbaa !11
  %246 = load float, ptr %16, align 4, !tbaa !11
  %247 = load float, ptr %30, align 4, !tbaa !11
  %248 = load float, ptr %31, align 4, !tbaa !11
  %249 = load float, ptr %25, align 4, !tbaa !11
  %250 = load float, ptr %26, align 4, !tbaa !11
  %251 = load float, ptr %34, align 4, !tbaa !11
  %252 = load float, ptr %35, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %253 = getelementptr inbounds %"class.JPH::Color", ptr %38, i32 0, i32 0
  %254 = getelementptr inbounds %union.anon.10, ptr %253, i32 0, i32 0
  %255 = load i32, ptr %254, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %245, float noundef %246, float noundef %247, float noundef %248, float noundef %249, float noundef %250, float noundef %251, float noundef %252, i32 %255)
          to label %256 unwind label %369

256:                                              ; preds = %148
  %257 = load float, ptr %30, align 4, !tbaa !11
  %258 = load float, ptr %16, align 4, !tbaa !11
  %259 = load float, ptr %32, align 4, !tbaa !11
  %260 = load float, ptr %31, align 4, !tbaa !11
  %261 = load float, ptr %34, align 4, !tbaa !11
  %262 = load float, ptr %26, align 4, !tbaa !11
  %263 = load float, ptr %36, align 4, !tbaa !11
  %264 = load float, ptr %35, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %265 = getelementptr inbounds %"class.JPH::Color", ptr %39, i32 0, i32 0
  %266 = getelementptr inbounds %union.anon.10, ptr %265, i32 0, i32 0
  %267 = load i32, ptr %266, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %257, float noundef %258, float noundef %259, float noundef %260, float noundef %261, float noundef %262, float noundef %263, float noundef %264, i32 %267)
          to label %268 unwind label %369

268:                                              ; preds = %256
  %269 = load float, ptr %32, align 4, !tbaa !11
  %270 = load float, ptr %16, align 4, !tbaa !11
  %271 = load float, ptr %17, align 4, !tbaa !11
  %272 = load float, ptr %31, align 4, !tbaa !11
  %273 = load float, ptr %36, align 4, !tbaa !11
  %274 = load float, ptr %26, align 4, !tbaa !11
  %275 = load float, ptr %27, align 4, !tbaa !11
  %276 = load float, ptr %35, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %277 = getelementptr inbounds %"class.JPH::Color", ptr %40, i32 0, i32 0
  %278 = getelementptr inbounds %union.anon.10, ptr %277, i32 0, i32 0
  %279 = load i32, ptr %278, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %269, float noundef %270, float noundef %271, float noundef %272, float noundef %273, float noundef %274, float noundef %275, float noundef %276, i32 %279)
          to label %280 unwind label %369

280:                                              ; preds = %268
  %281 = load float, ptr %15, align 4, !tbaa !11
  %282 = load float, ptr %31, align 4, !tbaa !11
  %283 = load float, ptr %30, align 4, !tbaa !11
  %284 = load float, ptr %33, align 4, !tbaa !11
  %285 = load float, ptr %25, align 4, !tbaa !11
  %286 = load float, ptr %35, align 4, !tbaa !11
  %287 = load float, ptr %34, align 4, !tbaa !11
  %288 = load float, ptr %37, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %289 = getelementptr inbounds %"class.JPH::Color", ptr %41, i32 0, i32 0
  %290 = getelementptr inbounds %union.anon.10, ptr %289, i32 0, i32 0
  %291 = load i32, ptr %290, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %281, float noundef %282, float noundef %283, float noundef %284, float noundef %285, float noundef %286, float noundef %287, float noundef %288, i32 %291)
          to label %292 unwind label %369

292:                                              ; preds = %280
  %293 = load float, ptr %30, align 4, !tbaa !11
  %294 = load float, ptr %31, align 4, !tbaa !11
  %295 = load float, ptr %32, align 4, !tbaa !11
  %296 = load float, ptr %33, align 4, !tbaa !11
  %297 = load float, ptr %34, align 4, !tbaa !11
  %298 = load float, ptr %35, align 4, !tbaa !11
  %299 = load float, ptr %36, align 4, !tbaa !11
  %300 = load float, ptr %37, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %301 = getelementptr inbounds %"class.JPH::Color", ptr %42, i32 0, i32 0
  %302 = getelementptr inbounds %union.anon.10, ptr %301, i32 0, i32 0
  %303 = load i32, ptr %302, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %293, float noundef %294, float noundef %295, float noundef %296, float noundef %297, float noundef %298, float noundef %299, float noundef %300, i32 %303)
          to label %304 unwind label %369

304:                                              ; preds = %292
  %305 = load float, ptr %32, align 4, !tbaa !11
  %306 = load float, ptr %31, align 4, !tbaa !11
  %307 = load float, ptr %17, align 4, !tbaa !11
  %308 = load float, ptr %33, align 4, !tbaa !11
  %309 = load float, ptr %36, align 4, !tbaa !11
  %310 = load float, ptr %35, align 4, !tbaa !11
  %311 = load float, ptr %27, align 4, !tbaa !11
  %312 = load float, ptr %37, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %313 = getelementptr inbounds %"class.JPH::Color", ptr %43, i32 0, i32 0
  %314 = getelementptr inbounds %union.anon.10, ptr %313, i32 0, i32 0
  %315 = load i32, ptr %314, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %305, float noundef %306, float noundef %307, float noundef %308, float noundef %309, float noundef %310, float noundef %311, float noundef %312, i32 %315)
          to label %316 unwind label %369

316:                                              ; preds = %304
  %317 = load float, ptr %15, align 4, !tbaa !11
  %318 = load float, ptr %33, align 4, !tbaa !11
  %319 = load float, ptr %30, align 4, !tbaa !11
  %320 = load float, ptr %18, align 4, !tbaa !11
  %321 = load float, ptr %25, align 4, !tbaa !11
  %322 = load float, ptr %37, align 4, !tbaa !11
  %323 = load float, ptr %34, align 4, !tbaa !11
  %324 = load float, ptr %28, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %325 = getelementptr inbounds %"class.JPH::Color", ptr %44, i32 0, i32 0
  %326 = getelementptr inbounds %union.anon.10, ptr %325, i32 0, i32 0
  %327 = load i32, ptr %326, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %317, float noundef %318, float noundef %319, float noundef %320, float noundef %321, float noundef %322, float noundef %323, float noundef %324, i32 %327)
          to label %328 unwind label %369

328:                                              ; preds = %316
  %329 = load float, ptr %30, align 4, !tbaa !11
  %330 = load float, ptr %33, align 4, !tbaa !11
  %331 = load float, ptr %32, align 4, !tbaa !11
  %332 = load float, ptr %18, align 4, !tbaa !11
  %333 = load float, ptr %34, align 4, !tbaa !11
  %334 = load float, ptr %37, align 4, !tbaa !11
  %335 = load float, ptr %36, align 4, !tbaa !11
  %336 = load float, ptr %28, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %337 = getelementptr inbounds %"class.JPH::Color", ptr %45, i32 0, i32 0
  %338 = getelementptr inbounds %union.anon.10, ptr %337, i32 0, i32 0
  %339 = load i32, ptr %338, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %329, float noundef %330, float noundef %331, float noundef %332, float noundef %333, float noundef %334, float noundef %335, float noundef %336, i32 %339)
          to label %340 unwind label %369

340:                                              ; preds = %328
  %341 = load float, ptr %32, align 4, !tbaa !11
  %342 = load float, ptr %33, align 4, !tbaa !11
  %343 = load float, ptr %17, align 4, !tbaa !11
  %344 = load float, ptr %18, align 4, !tbaa !11
  %345 = load float, ptr %36, align 4, !tbaa !11
  %346 = load float, ptr %37, align 4, !tbaa !11
  %347 = load float, ptr %27, align 4, !tbaa !11
  %348 = load float, ptr %28, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %349 = getelementptr inbounds %"class.JPH::Color", ptr %46, i32 0, i32 0
  %350 = getelementptr inbounds %union.anon.10, ptr %349, i32 0, i32 0
  %351 = load i32, ptr %350, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %341, float noundef %342, float noundef %343, float noundef %344, float noundef %345, float noundef %346, float noundef %347, float noundef %348, i32 %351)
          to label %352 unwind label %369

352:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %386

353:                                              ; preds = %80, %69
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %21, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %22, align 4
  br label %416

357:                                              ; preds = %92, %88
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %21, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %22, align 4
  br label %415

361:                                              ; preds = %99, %94
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %21, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %22, align 4
  br label %414

365:                                              ; preds = %408, %406, %400, %396, %392, %388, %386, %373, %140, %101
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %21, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %22, align 4
  br label %413

369:                                              ; preds = %340, %328, %316, %304, %292, %280, %268, %256, %148
  %370 = landingpad { ptr, i32 }
          cleanup
  %371 = extractvalue { ptr, i32 } %370, 0
  store ptr %371, ptr %21, align 8
  %372 = extractvalue { ptr, i32 } %370, 1
  store i32 %372, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %413

373:                                              ; preds = %145
  %374 = load float, ptr %15, align 4, !tbaa !11
  %375 = load float, ptr %16, align 4, !tbaa !11
  %376 = load float, ptr %17, align 4, !tbaa !11
  %377 = load float, ptr %18, align 4, !tbaa !11
  %378 = load float, ptr %25, align 4, !tbaa !11
  %379 = load float, ptr %26, align 4, !tbaa !11
  %380 = load float, ptr %27, align 4, !tbaa !11
  %381 = load float, ptr %28, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %382 = getelementptr inbounds %"class.JPH::Color", ptr %47, i32 0, i32 0
  %383 = getelementptr inbounds %union.anon.10, ptr %382, i32 0, i32 0
  %384 = load i32, ptr %383, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %29, float noundef %374, float noundef %375, float noundef %376, float noundef %377, float noundef %378, float noundef %379, float noundef %380, float noundef %381, i32 %384)
          to label %385 unwind label %365

385:                                              ; preds = %373
  br label %386

386:                                              ; preds = %385, %352
  %387 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %388 unwind label %365

388:                                              ; preds = %386
  %389 = load ptr, ptr %387, align 8, !tbaa !36
  %390 = getelementptr inbounds ptr, ptr %389, i64 7
  %391 = load ptr, ptr %390, align 8
  invoke void %391(ptr noundef nonnull align 8 dereferenceable(32) %387)
          to label %392 unwind label %365

392:                                              ; preds = %388
  %393 = load ptr, ptr %14, align 8, !tbaa !5
  %394 = getelementptr inbounds %class.UITexturedQuad, ptr %393, i32 0, i32 0
  %395 = invoke noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %394)
          to label %396 unwind label %365

396:                                              ; preds = %392
  %397 = load ptr, ptr %395, align 8, !tbaa !36
  %398 = getelementptr inbounds ptr, ptr %397, i64 2
  %399 = load ptr, ptr %398, align 8
  invoke void %399(ptr noundef nonnull align 8 dereferenceable(20) %395)
          to label %400 unwind label %365

400:                                              ; preds = %396
  %401 = getelementptr inbounds %class.UIManager, ptr %53, i32 0, i32 5
  %402 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %401) #6
  %403 = load ptr, ptr %402, align 8, !tbaa !36
  %404 = getelementptr inbounds ptr, ptr %403, i64 2
  %405 = load ptr, ptr %404, align 8
  invoke void %405(ptr noundef nonnull align 8 dereferenceable(8) %402)
          to label %406 unwind label %365

406:                                              ; preds = %400
  %407 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %408 unwind label %365

408:                                              ; preds = %406
  %409 = load ptr, ptr %407, align 8, !tbaa !36
  %410 = getelementptr inbounds ptr, ptr %409, i64 12
  %411 = load ptr, ptr %410, align 8
  invoke void %411(ptr noundef nonnull align 8 dereferenceable(32) %407)
          to label %412 unwind label %365

412:                                              ; preds = %408
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %472

413:                                              ; preds = %369, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %414

414:                                              ; preds = %413, %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %415

415:                                              ; preds = %414, %357
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %416

416:                                              ; preds = %415, %353
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %473

417:                                              ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  %418 = getelementptr inbounds %class.UIManager, ptr %53, i32 0, i32 1
  %419 = load ptr, ptr %418, align 8, !tbaa !15
  %420 = load ptr, ptr %419, align 16, !tbaa !36
  %421 = getelementptr inbounds ptr, ptr %420, i64 12
  %422 = load ptr, ptr %421, align 8
  %423 = call noundef ptr %422(ptr noundef nonnull align 16 dereferenceable(832) %419, i32 noundef 0)
  call void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef %423)
  %424 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %425 unwind label %463

425:                                              ; preds = %417
  %426 = load ptr, ptr %424, align 8, !tbaa !36
  %427 = getelementptr inbounds ptr, ptr %426, i64 4
  %428 = load ptr, ptr %427, align 8
  invoke void %428(ptr noundef nonnull align 8 dereferenceable(32) %424, i32 noundef 6, i32 noundef 24, ptr noundef null)
          to label %429 unwind label %463

429:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %430 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %431 unwind label %467

431:                                              ; preds = %429
  %432 = load ptr, ptr %430, align 8, !tbaa !36
  %433 = getelementptr inbounds ptr, ptr %432, i64 6
  %434 = load ptr, ptr %433, align 8
  %435 = invoke noundef ptr %434(ptr noundef nonnull align 8 dereferenceable(32) %430)
          to label %436 unwind label %467

436:                                              ; preds = %431
  store ptr %435, ptr %49, align 8, !tbaa !5
  %437 = load float, ptr %15, align 4, !tbaa !11
  %438 = load float, ptr %16, align 4, !tbaa !11
  %439 = load float, ptr %17, align 4, !tbaa !11
  %440 = load float, ptr %18, align 4, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 4 %8, i64 4, i1 false), !tbaa.struct !50
  %441 = getelementptr inbounds %"class.JPH::Color", ptr %50, i32 0, i32 0
  %442 = getelementptr inbounds %union.anon.10, ptr %441, i32 0, i32 0
  %443 = load i32, ptr %442, align 4
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %49, float noundef %437, float noundef %438, float noundef %439, float noundef %440, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 %443)
          to label %444 unwind label %467

444:                                              ; preds = %436
  %445 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %446 unwind label %467

446:                                              ; preds = %444
  %447 = load ptr, ptr %445, align 8, !tbaa !36
  %448 = getelementptr inbounds ptr, ptr %447, i64 7
  %449 = load ptr, ptr %448, align 8
  invoke void %449(ptr noundef nonnull align 8 dereferenceable(32) %445)
          to label %450 unwind label %467

450:                                              ; preds = %446
  %451 = getelementptr inbounds %class.UIManager, ptr %53, i32 0, i32 6
  %452 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %451) #6
  %453 = load ptr, ptr %452, align 8, !tbaa !36
  %454 = getelementptr inbounds ptr, ptr %453, i64 2
  %455 = load ptr, ptr %454, align 8
  invoke void %455(ptr noundef nonnull align 8 dereferenceable(8) %452)
          to label %456 unwind label %467

456:                                              ; preds = %450
  %457 = invoke noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %458 unwind label %467

458:                                              ; preds = %456
  %459 = load ptr, ptr %457, align 8, !tbaa !36
  %460 = getelementptr inbounds ptr, ptr %459, i64 12
  %461 = load ptr, ptr %460, align 8
  invoke void %461(ptr noundef nonnull align 8 dereferenceable(32) %457)
          to label %462 unwind label %467

462:                                              ; preds = %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  br label %472

463:                                              ; preds = %425, %417
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %21, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %22, align 4
  br label %471

467:                                              ; preds = %458, %456, %450, %446, %444, %436, %431, %429
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %21, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  br label %471

471:                                              ; preds = %467, %463
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  br label %473

472:                                              ; preds = %462, %412
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  ret void

473:                                              ; preds = %471, %416
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %474

474:                                              ; preds = %473
  %475 = load ptr, ptr %21, align 8
  %476 = load i32, ptr %22, align 4
  %477 = insertvalue { ptr, i32 } poison, ptr %475, 0
  %478 = insertvalue { ptr, i32 } %477, i32 %476, 1
  resume { ptr, i32 } %478
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH8RefConstI7TextureEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14UITexturedQuad12HasInnerPartEv(ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7Texture8GetWidthEv(ptr noundef nonnull align 8 dereferenceable(20)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7Texture9GetHeightEv(ptr noundef nonnull align 8 dereferenceable(20)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8), float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, i32) #5

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 = { inlinehint 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 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 #5 = { inlinehint 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 #6 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !6, i64 144}
!16 = !{!"_ZTS9UIManager", !17, i64 0, !6, i64 144, !6, i64 152, !26, i64 160, !14, i64 184, !27, i64 192, !27, i64 200, !33, i64 208, !35, i64 240, !12, i64 244}
!17 = !{!"_ZTS9UIElement", !18, i64 0, !10, i64 8, !6, i64 16, !19, i64 24, !21, i64 48, !21, i64 60, !23, i64 72, !23, i64 80, !23, i64 88, !23, i64 96, !14, i64 104, !14, i64 105, !14, i64 106, !14, i64 107, !14, i64 108, !14, i64 109, !14, i64 110, !25, i64 112, !6, i64 136}
!18 = !{!"_ZTS15UIEventListener"}
!19 = !{!"_ZTSN3JPH5ArrayIP9UIElementNS_12STLAllocatorIS2_EEEE", !20, i64 0, !20, i64 8, !6, i64 16}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN9UIElement8PositionE", !22, i64 0, !23, i64 4}
!22 = !{!"_ZTSN9UIElement10EAlignmentE", !7, i64 0}
!23 = !{!"_ZTSN9UIElement4SizeE", !10, i64 0, !24, i64 4}
!24 = !{!"_ZTSN9UIElement6EUnitsE", !7, i64 0}
!25 = !{!"_ZTSN3JPH5ArrayIP11UIAnimationNS_12STLAllocatorIS2_EEEE", !20, i64 0, !20, i64 8, !6, i64 16}
!26 = !{!"_ZTSN3JPH5ArrayINS0_IP9UIElementNS_12STLAllocatorIS2_EEEENS3_IS5_EEEE", !20, i64 0, !20, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_dataI13PipelineStateSt14default_deleteIS0_ELb1ELb1EE", !29, i64 0}
!29 = !{!"_ZTSSt15__uniq_ptr_implI13PipelineStateSt14default_deleteIS0_EE", !30, i64 0}
!30 = !{!"_ZTSSt5tupleIJP13PipelineStateSt14default_deleteIS0_EEE", !31, i64 0}
!31 = !{!"_ZTSSt11_Tuple_implILm0EJP13PipelineStateSt14default_deleteIS0_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_Head_baseILm0EP13PipelineStateLb0EE", !6, i64 0}
!33 = !{!"_ZTSSt8functionIFvvEE", !34, i64 0, !6, i64 24}
!34 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!35 = !{!"_ZTSN9UIManager6EStateE", !7, i64 0}
!36 = !{!37, !37, i64 0}
!37 = !{!"vtable pointer", !8, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!41, !10, i64 8}
!41 = !{!"_ZTS14UITexturedQuad", !42, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36}
!42 = !{!"_ZTSN3JPH8RefConstI7TextureEE", !6, i64 0}
!43 = !{!41, !10, i64 12}
!44 = !{!41, !10, i64 16}
!45 = !{!41, !10, i64 20}
!46 = !{!41, !10, i64 24}
!47 = !{!41, !10, i64 28}
!48 = !{!41, !10, i64 32}
!49 = !{!41, !10, i64 36}
!50 = !{i64 0, i64 4, !51}
!51 = !{!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"

%"class.JPH::Ref.11" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN9UIManager8DrawQuadEiiiiRK14UITexturedQuadN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(248) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef nonnull align 8 dereferenceable(40) %5, i32 %6) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.JPH::Ref.11", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.JPH::Ref.11", align 8
  %11 = alloca ptr, align 8
  %12 = sitofp i32 %1 to float
  %13 = sitofp i32 %2 to float
  %14 = add nsw i32 %3, %1
  %15 = sitofp i32 %14 to float
  %16 = add nsw i32 %4, %2
  %17 = sitofp i32 %16 to float
  %18 = tail call noundef zeroext i1 @_ZNK3JPH8RefConstI7TextureEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef null)
  br i1 %18, label %19, label %137

19:                                               ; preds = %7
  %20 = tail call noundef zeroext i1 @_ZNK14UITexturedQuad12HasInnerPartEv(ptr noundef nonnull align 8 dereferenceable(40) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  %21 = getelementptr inbounds i8, ptr %0, i64 144
  %22 = load ptr, ptr %21, align 8, !tbaa !5
  %23 = load ptr, ptr %22, align 16, !tbaa !32
  %24 = getelementptr inbounds i8, ptr %23, i64 96
  %25 = load ptr, ptr %24, align 8
  %26 = tail call noundef ptr %25(ptr noundef nonnull align 16 dereferenceable(832) %22, i32 noundef 0)
  call void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef %26)
  %27 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %28 = select i1 %20, i32 54, i32 6
  %29 = load ptr, ptr %27, align 8, !tbaa !32
  %30 = getelementptr inbounds i8, ptr %29, i64 32
  %31 = load ptr, ptr %30, align 8
  invoke void %31(ptr noundef nonnull align 8 dereferenceable(32) %27, i32 noundef %28, i32 noundef 24, ptr noundef null)
          to label %32 unwind label %106

32:                                               ; preds = %19
  %33 = call noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %34 = call noundef i32 @_ZNK7Texture8GetWidthEv(ptr noundef nonnull align 8 dereferenceable(20) %33)
  %35 = sitofp i32 %34 to float
  %36 = call noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %37 = call noundef i32 @_ZNK7Texture9GetHeightEv(ptr noundef nonnull align 8 dereferenceable(20) %36)
  %38 = sitofp i32 %37 to float
  %39 = getelementptr inbounds i8, ptr %5, i64 8
  %40 = load i32, ptr %39, align 8, !tbaa !34
  %41 = sitofp i32 %40 to float
  %42 = getelementptr inbounds i8, ptr %5, i64 12
  %43 = load i32, ptr %42, align 4, !tbaa !37
  %44 = sitofp i32 %43 to float
  %45 = getelementptr inbounds i8, ptr %5, i64 16
  %46 = load i32, ptr %45, align 8, !tbaa !38
  %47 = add nsw i32 %46, %40
  %48 = sitofp i32 %47 to float
  %49 = getelementptr inbounds i8, ptr %5, i64 20
  %50 = load i32, ptr %49, align 4, !tbaa !39
  %51 = add nsw i32 %50, %43
  %52 = sitofp i32 %51 to float
  %53 = fdiv float %41, %35
  %54 = fdiv float %44, %38
  %55 = fdiv float %48, %35
  %56 = fdiv float %52, %38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  %57 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %58 = load ptr, ptr %57, align 8, !tbaa !32
  %59 = getelementptr inbounds i8, ptr %58, i64 48
  %60 = load ptr, ptr %59, align 8
  %61 = invoke noundef ptr %60(ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %62 unwind label %108

62:                                               ; preds = %32
  store ptr %61, ptr %9, align 8, !tbaa !40
  br i1 %20, label %63, label %112

63:                                               ; preds = %62
  %64 = getelementptr inbounds i8, ptr %5, i64 24
  %65 = load i32, ptr %64, align 8, !tbaa !41
  %66 = add nsw i32 %65, %1
  %67 = load i32, ptr %39, align 8, !tbaa !34
  %68 = sub i32 %66, %67
  %69 = sitofp i32 %68 to float
  %70 = getelementptr inbounds i8, ptr %5, i64 28
  %71 = load i32, ptr %70, align 4, !tbaa !42
  %72 = add nsw i32 %71, %2
  %73 = load i32, ptr %42, align 4, !tbaa !37
  %74 = sub i32 %72, %73
  %75 = sitofp i32 %74 to float
  %76 = load i32, ptr %45, align 8, !tbaa !38
  %77 = getelementptr inbounds i8, ptr %5, i64 32
  %78 = load i32, ptr %77, align 8, !tbaa !43
  %.neg171 = add i32 %65, %14
  %79 = add i32 %67, %76
  %.neg172 = sub i32 %.neg171, %79
  %80 = add i32 %.neg172, %78
  %81 = sitofp i32 %80 to float
  %82 = load i32, ptr %49, align 4, !tbaa !39
  %83 = getelementptr inbounds i8, ptr %5, i64 36
  %84 = load i32, ptr %83, align 4, !tbaa !44
  %.neg174 = add i32 %71, %16
  %85 = add i32 %73, %82
  %.neg175 = sub i32 %.neg174, %85
  %86 = add i32 %.neg175, %84
  %87 = sitofp i32 %86 to float
  %88 = sitofp i32 %65 to float
  %89 = sitofp i32 %71 to float
  %90 = add nsw i32 %78, %65
  %91 = sitofp i32 %90 to float
  %92 = add nsw i32 %84, %71
  %93 = sitofp i32 %92 to float
  %94 = fdiv float %88, %35
  %95 = fdiv float %89, %38
  %96 = fdiv float %91, %35
  %97 = fdiv float %93, %38
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %12, float noundef %13, float noundef %69, float noundef %75, float noundef %53, float noundef %54, float noundef %94, float noundef %95, i32 %6)
          to label %98 unwind label %110

98:                                               ; preds = %63
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %69, float noundef %13, float noundef %81, float noundef %75, float noundef %94, float noundef %54, float noundef %96, float noundef %95, i32 %6)
          to label %99 unwind label %110

99:                                               ; preds = %98
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %81, float noundef %13, float noundef %15, float noundef %75, float noundef %96, float noundef %54, float noundef %55, float noundef %95, i32 %6)
          to label %100 unwind label %110

100:                                              ; preds = %99
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %12, float noundef %75, float noundef %69, float noundef %87, float noundef %53, float noundef %95, float noundef %94, float noundef %97, i32 %6)
          to label %101 unwind label %110

101:                                              ; preds = %100
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %69, float noundef %75, float noundef %81, float noundef %87, float noundef %94, float noundef %95, float noundef %96, float noundef %97, i32 %6)
          to label %102 unwind label %110

102:                                              ; preds = %101
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %81, float noundef %75, float noundef %15, float noundef %87, float noundef %96, float noundef %95, float noundef %55, float noundef %97, i32 %6)
          to label %103 unwind label %110

103:                                              ; preds = %102
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %12, float noundef %87, float noundef %69, float noundef %17, float noundef %53, float noundef %97, float noundef %94, float noundef %56, i32 %6)
          to label %104 unwind label %110

104:                                              ; preds = %103
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %69, float noundef %87, float noundef %81, float noundef %17, float noundef %94, float noundef %97, float noundef %96, float noundef %56, i32 %6)
          to label %105 unwind label %110

105:                                              ; preds = %104
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %81, float noundef %87, float noundef %15, float noundef %17, float noundef %96, float noundef %97, float noundef %55, float noundef %56, i32 %6)
          to label %113 unwind label %110

106:                                              ; preds = %19
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %136

108:                                              ; preds = %129, %123, %118, %113, %112, %32
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %135

110:                                              ; preds = %105, %104, %103, %102, %101, %100, %99, %98, %63
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %135

112:                                              ; preds = %62
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %9, float noundef %12, float noundef %13, float noundef %15, float noundef %17, float noundef %53, float noundef %54, float noundef %55, float noundef %56, i32 %6)
          to label %113 unwind label %108

113:                                              ; preds = %105, %112
  %114 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %115 = load ptr, ptr %114, align 8, !tbaa !32
  %116 = getelementptr inbounds i8, ptr %115, i64 56
  %117 = load ptr, ptr %116, align 8
  invoke void %117(ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %118 unwind label %108

118:                                              ; preds = %113
  %119 = call noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %120 = load ptr, ptr %119, align 8, !tbaa !32
  %121 = getelementptr inbounds i8, ptr %120, i64 16
  %122 = load ptr, ptr %121, align 8
  invoke void %122(ptr noundef nonnull align 8 dereferenceable(20) %119)
          to label %123 unwind label %108

123:                                              ; preds = %118
  %124 = getelementptr inbounds i8, ptr %0, i64 192
  %125 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #5
  %126 = load ptr, ptr %125, align 8, !tbaa !32
  %127 = getelementptr inbounds i8, ptr %126, i64 16
  %128 = load ptr, ptr %127, align 8
  invoke void %128(ptr noundef nonnull align 8 dereferenceable(8) %125)
          to label %129 unwind label %108

129:                                              ; preds = %123
  %130 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
  %131 = load ptr, ptr %130, align 8, !tbaa !32
  %132 = getelementptr inbounds i8, ptr %131, i64 96
  %133 = load ptr, ptr %132, align 8
  invoke void %133(ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %134 unwind label %108

134:                                              ; preds = %129
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %177

135:                                              ; preds = %110, %108
  %.pn176 = phi { ptr, i32 } [ %109, %108 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  br label %136

136:                                              ; preds = %135, %106
  %.pn176.pn = phi { ptr, i32 } [ %.pn176, %135 ], [ %107, %106 ]
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  br label %178

137:                                              ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  %138 = getelementptr inbounds i8, ptr %0, i64 144
  %139 = load ptr, ptr %138, align 8, !tbaa !5
  %140 = load ptr, ptr %139, align 16, !tbaa !32
  %141 = getelementptr inbounds i8, ptr %140, i64 96
  %142 = load ptr, ptr %141, align 8
  %143 = tail call noundef ptr %142(ptr noundef nonnull align 16 dereferenceable(832) %139, i32 noundef 0)
  call void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %143)
  %144 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %145 = load ptr, ptr %144, align 8, !tbaa !32
  %146 = getelementptr inbounds i8, ptr %145, i64 32
  %147 = load ptr, ptr %146, align 8
  invoke void %147(ptr noundef nonnull align 8 dereferenceable(32) %144, i32 noundef 6, i32 noundef 24, ptr noundef null)
          to label %148 unwind label %172

148:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  %149 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %150 = load ptr, ptr %149, align 8, !tbaa !32
  %151 = getelementptr inbounds i8, ptr %150, i64 48
  %152 = load ptr, ptr %151, align 8
  %153 = invoke noundef ptr %152(ptr noundef nonnull align 8 dereferenceable(32) %149)
          to label %154 unwind label %174

154:                                              ; preds = %148
  store ptr %153, ptr %11, align 8, !tbaa !40
  invoke void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8) %11, float noundef %12, float noundef %13, float noundef %15, float noundef %17, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, i32 %6)
          to label %155 unwind label %174

155:                                              ; preds = %154
  %156 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %157 = load ptr, ptr %156, align 8, !tbaa !32
  %158 = getelementptr inbounds i8, ptr %157, i64 56
  %159 = load ptr, ptr %158, align 8
  invoke void %159(ptr noundef nonnull align 8 dereferenceable(32) %156)
          to label %160 unwind label %174

160:                                              ; preds = %155
  %161 = getelementptr inbounds i8, ptr %0, i64 200
  %162 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %161) #5
  %163 = load ptr, ptr %162, align 8, !tbaa !32
  %164 = getelementptr inbounds i8, ptr %163, i64 16
  %165 = load ptr, ptr %164, align 8
  invoke void %165(ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %166 unwind label %174

166:                                              ; preds = %160
  %167 = call noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  %168 = load ptr, ptr %167, align 8, !tbaa !32
  %169 = getelementptr inbounds i8, ptr %168, i64 96
  %170 = load ptr, ptr %169, align 8
  invoke void %170(ptr noundef nonnull align 8 dereferenceable(32) %167)
          to label %171 unwind label %174

171:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  br label %177

172:                                              ; preds = %137
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %166, %160, %155, %154, %148
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  br label %176

176:                                              ; preds = %174, %172
  %.pn = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ]
  call void @_ZN3JPH3RefI15RenderPrimitiveED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  br label %178

177:                                              ; preds = %171, %134
  ret void

178:                                              ; preds = %176, %136
  %.pn176.pn.pn = phi { ptr, i32 } [ %.pn176.pn, %136 ], [ %.pn, %176 ]
  resume { ptr, i32 } %.pn176.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH8RefConstI7TextureEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14UITexturedQuad12HasInnerPartEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH3RefI15RenderPrimitiveEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefI15RenderPrimitiveEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH8RefConstI7TextureEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7Texture8GetWidthEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7Texture9GetHeightEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL9sDrawQuadRP10QuadVertexffffffffN3JPH5ColorE(ptr noundef nonnull align 8 dereferenceable(8), float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, i32) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 = { inlinehint 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 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 = { inlinehint 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, !12, i64 144}
!6 = !{!"_ZTS9UIManager", !7, i64 0, !12, i64 144, !12, i64 152, !21, i64 160, !19, i64 184, !22, i64 192, !22, i64 200, !28, i64 208, !30, i64 240, !31, i64 244}
!7 = !{!"_ZTS9UIElement", !8, i64 0, !9, i64 8, !12, i64 16, !13, i64 24, !15, i64 48, !15, i64 60, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !19, i64 104, !19, i64 105, !19, i64 106, !19, i64 107, !19, i64 108, !19, i64 109, !19, i64 110, !20, i64 112, !12, i64 136}
!8 = !{!"_ZTS15UIEventListener"}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"any pointer", !10, i64 0}
!13 = !{!"_ZTSN3JPH5ArrayIP9UIElementNS_12STLAllocatorIS2_EEEE", !14, i64 0, !14, i64 8, !12, i64 16}
!14 = !{!"long", !10, i64 0}
!15 = !{!"_ZTSN9UIElement8PositionE", !16, i64 0, !17, i64 4}
!16 = !{!"_ZTSN9UIElement10EAlignmentE", !10, i64 0}
!17 = !{!"_ZTSN9UIElement4SizeE", !9, i64 0, !18, i64 4}
!18 = !{!"_ZTSN9UIElement6EUnitsE", !10, i64 0}
!19 = !{!"bool", !10, i64 0}
!20 = !{!"_ZTSN3JPH5ArrayIP11UIAnimationNS_12STLAllocatorIS2_EEEE", !14, i64 0, !14, i64 8, !12, i64 16}
!21 = !{!"_ZTSN3JPH5ArrayINS0_IP9UIElementNS_12STLAllocatorIS2_EEEENS3_IS5_EEEE", !14, i64 0, !14, i64 8, !12, i64 16}
!22 = !{!"_ZTSSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataI13PipelineStateSt14default_deleteIS0_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implI13PipelineStateSt14default_deleteIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJP13PipelineStateSt14default_deleteIS0_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJP13PipelineStateSt14default_deleteIS0_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EP13PipelineStateLb0EE", !12, i64 0}
!28 = !{!"_ZTSSt8functionIFvvEE", !29, i64 0, !12, i64 24}
!29 = !{!"_ZTSSt14_Function_base", !10, i64 0, !12, i64 16}
!30 = !{!"_ZTSN9UIManager6EStateE", !10, i64 0}
!31 = !{!"float", !10, i64 0}
!32 = !{!33, !33, i64 0}
!33 = !{!"vtable pointer", !11, i64 0}
!34 = !{!35, !9, i64 8}
!35 = !{!"_ZTS14UITexturedQuad", !36, i64 0, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20, !9, i64 24, !9, i64 28, !9, i64 32, !9, i64 36}
!36 = !{!"_ZTSN3JPH8RefConstI7TextureEE", !12, i64 0}
!37 = !{!35, !9, i64 12}
!38 = !{!35, !9, i64 16}
!39 = !{!35, !9, i64 20}
!40 = !{!12, !12, i64 0}
!41 = !{!35, !9, i64 24}
!42 = !{!35, !9, i64 28}
!43 = !{!35, !9, i64 32}
!44 = !{!35, !9, i64 36}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass