; LLVM IR from devlinzhou/deterministic_physics :: UnrealDemo/Source/UnrealDemo/gphysics/src/utils (glacier_debug_draw)

; 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.GColor = type { i32 }
%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GFloat = type { i32 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12IGlacierDraw7DrawBoxERK13GTransform_QTRK8GVector3S5_6GColor(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr noundef nonnull align 4 dereferenceable(12) %3, i32 %4) unnamed_addr #0 align 2 {
  %6 = alloca %class.GColor, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %class.GVector3, align 4
  %12 = alloca { i64, i32 }, align 8
  %13 = alloca %class.GVector3, align 4
  %14 = alloca %class.GVector3, align 4
  %15 = alloca %class.GVector3, align 4
  %16 = alloca %class.GFloat, align 4
  %17 = alloca %class.GFloat, align 4
  %18 = alloca %class.GFloat, align 4
  %19 = alloca { i64, i32 }, align 8
  %20 = alloca %class.GVector3, align 4
  %21 = alloca %class.GVector3, align 4
  %22 = alloca %class.GFloat, align 4
  %23 = alloca %class.GFloat, align 4
  %24 = alloca %class.GFloat, align 4
  %25 = alloca { i64, i32 }, align 8
  %26 = alloca %class.GVector3, align 4
  %27 = alloca %class.GVector3, align 4
  %28 = alloca %class.GFloat, align 4
  %29 = alloca %class.GFloat, align 4
  %30 = alloca %class.GFloat, align 4
  %31 = alloca { i64, i32 }, align 8
  %32 = alloca %class.GVector3, align 4
  %33 = alloca %class.GVector3, align 4
  %34 = alloca %class.GVector3, align 4
  %35 = alloca { i64, i32 }, align 8
  %36 = alloca { i64, i32 }, align 8
  %37 = alloca { i64, i32 }, align 8
  %38 = alloca %class.GVector3, align 4
  %39 = alloca %class.GVector3, align 4
  %40 = alloca %class.GVector3, align 4
  %41 = alloca { i64, i32 }, align 8
  %42 = alloca { i64, i32 }, align 8
  %43 = alloca { i64, i32 }, align 8
  %44 = alloca %class.GColor, align 4
  %45 = alloca %class.GVector3, align 4
  %46 = alloca %class.GVector3, align 4
  %47 = alloca %class.GVector3, align 4
  %48 = alloca { i64, i32 }, align 8
  %49 = alloca { i64, i32 }, align 8
  %50 = alloca { i64, i32 }, align 8
  %51 = alloca %class.GVector3, align 4
  %52 = alloca %class.GVector3, align 4
  %53 = alloca %class.GVector3, align 4
  %54 = alloca { i64, i32 }, align 8
  %55 = alloca { i64, i32 }, align 8
  %56 = alloca { i64, i32 }, align 8
  %57 = alloca %class.GColor, align 4
  %58 = alloca %class.GVector3, align 4
  %59 = alloca %class.GVector3, align 4
  %60 = alloca %class.GVector3, align 4
  %61 = alloca { i64, i32 }, align 8
  %62 = alloca { i64, i32 }, align 8
  %63 = alloca { i64, i32 }, align 8
  %64 = alloca %class.GVector3, align 4
  %65 = alloca %class.GVector3, align 4
  %66 = alloca %class.GVector3, align 4
  %67 = alloca { i64, i32 }, align 8
  %68 = alloca { i64, i32 }, align 8
  %69 = alloca { i64, i32 }, align 8
  %70 = alloca %class.GColor, align 4
  %71 = alloca %class.GVector3, align 4
  %72 = alloca %class.GVector3, align 4
  %73 = alloca %class.GVector3, align 4
  %74 = alloca { i64, i32 }, align 8
  %75 = alloca { i64, i32 }, align 8
  %76 = alloca { i64, i32 }, align 8
  %77 = alloca %class.GVector3, align 4
  %78 = alloca %class.GVector3, align 4
  %79 = alloca %class.GVector3, align 4
  %80 = alloca { i64, i32 }, align 8
  %81 = alloca { i64, i32 }, align 8
  %82 = alloca { i64, i32 }, align 8
  %83 = alloca %class.GColor, align 4
  %84 = alloca %class.GVector3, align 4
  %85 = alloca %class.GVector3, align 4
  %86 = alloca %class.GVector3, align 4
  %87 = alloca { i64, i32 }, align 8
  %88 = alloca { i64, i32 }, align 8
  %89 = alloca { i64, i32 }, align 8
  %90 = alloca %class.GVector3, align 4
  %91 = alloca %class.GVector3, align 4
  %92 = alloca %class.GVector3, align 4
  %93 = alloca { i64, i32 }, align 8
  %94 = alloca { i64, i32 }, align 8
  %95 = alloca { i64, i32 }, align 8
  %96 = alloca %class.GColor, align 4
  %97 = alloca %class.GVector3, align 4
  %98 = alloca %class.GVector3, align 4
  %99 = alloca %class.GVector3, align 4
  %100 = alloca { i64, i32 }, align 8
  %101 = alloca { i64, i32 }, align 8
  %102 = alloca { i64, i32 }, align 8
  %103 = alloca %class.GVector3, align 4
  %104 = alloca %class.GVector3, align 4
  %105 = alloca %class.GVector3, align 4
  %106 = alloca { i64, i32 }, align 8
  %107 = alloca { i64, i32 }, align 8
  %108 = alloca { i64, i32 }, align 8
  %109 = alloca %class.GColor, align 4
  %110 = alloca %class.GVector3, align 4
  %111 = alloca %class.GVector3, align 4
  %112 = alloca %class.GVector3, align 4
  %113 = alloca { i64, i32 }, align 8
  %114 = alloca { i64, i32 }, align 8
  %115 = alloca { i64, i32 }, align 8
  %116 = alloca %class.GVector3, align 4
  %117 = alloca %class.GVector3, align 4
  %118 = alloca %class.GVector3, align 4
  %119 = alloca { i64, i32 }, align 8
  %120 = alloca { i64, i32 }, align 8
  %121 = alloca { i64, i32 }, align 8
  %122 = alloca %class.GColor, align 4
  %123 = alloca %class.GVector3, align 4
  %124 = alloca %class.GVector3, align 4
  %125 = alloca %class.GVector3, align 4
  %126 = alloca { i64, i32 }, align 8
  %127 = alloca { i64, i32 }, align 8
  %128 = alloca { i64, i32 }, align 8
  %129 = alloca %class.GVector3, align 4
  %130 = alloca %class.GVector3, align 4
  %131 = alloca %class.GVector3, align 4
  %132 = alloca { i64, i32 }, align 8
  %133 = alloca { i64, i32 }, align 8
  %134 = alloca { i64, i32 }, align 8
  %135 = alloca %class.GColor, align 4
  %136 = alloca %class.GVector3, align 4
  %137 = alloca %class.GVector3, align 4
  %138 = alloca %class.GVector3, align 4
  %139 = alloca { i64, i32 }, align 8
  %140 = alloca { i64, i32 }, align 8
  %141 = alloca { i64, i32 }, align 8
  %142 = alloca %class.GVector3, align 4
  %143 = alloca %class.GVector3, align 4
  %144 = alloca %class.GVector3, align 4
  %145 = alloca { i64, i32 }, align 8
  %146 = alloca { i64, i32 }, align 8
  %147 = alloca { i64, i32 }, align 8
  %148 = alloca %class.GColor, align 4
  %149 = alloca %class.GVector3, align 4
  %150 = alloca %class.GVector3, align 4
  %151 = alloca %class.GVector3, align 4
  %152 = alloca { i64, i32 }, align 8
  %153 = alloca { i64, i32 }, align 8
  %154 = alloca { i64, i32 }, align 8
  %155 = alloca %class.GVector3, align 4
  %156 = alloca %class.GVector3, align 4
  %157 = alloca %class.GVector3, align 4
  %158 = alloca { i64, i32 }, align 8
  %159 = alloca { i64, i32 }, align 8
  %160 = alloca { i64, i32 }, align 8
  %161 = alloca %class.GColor, align 4
  %162 = alloca %class.GVector3, align 4
  %163 = alloca %class.GVector3, align 4
  %164 = alloca %class.GVector3, align 4
  %165 = alloca { i64, i32 }, align 8
  %166 = alloca { i64, i32 }, align 8
  %167 = alloca { i64, i32 }, align 8
  %168 = alloca %class.GVector3, align 4
  %169 = alloca %class.GVector3, align 4
  %170 = alloca %class.GVector3, align 4
  %171 = alloca { i64, i32 }, align 8
  %172 = alloca { i64, i32 }, align 8
  %173 = alloca { i64, i32 }, align 8
  %174 = alloca %class.GColor, align 4
  %175 = alloca %class.GVector3, align 4
  %176 = alloca %class.GVector3, align 4
  %177 = alloca %class.GVector3, align 4
  %178 = alloca { i64, i32 }, align 8
  %179 = alloca { i64, i32 }, align 8
  %180 = alloca { i64, i32 }, align 8
  %181 = alloca %class.GVector3, align 4
  %182 = alloca %class.GVector3, align 4
  %183 = alloca %class.GVector3, align 4
  %184 = alloca { i64, i32 }, align 8
  %185 = alloca { i64, i32 }, align 8
  %186 = alloca { i64, i32 }, align 8
  %187 = alloca %class.GColor, align 4
  %188 = getelementptr inbounds %class.GColor, ptr %6, i32 0, i32 0
  store i32 %4, ptr %188, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  %189 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #5
  %190 = load ptr, ptr %8, align 8, !tbaa !5
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %190, ptr noundef nonnull align 4 dereferenceable(12) %191)
  store { i64, i32 } %192, ptr %12, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %11, ptr align 8 %12, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %13) #5
  %193 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %13, ptr align 4 %193, i64 12, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %14) #5
  %194 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %15) #5
  %195 = getelementptr inbounds %class.GVector3, ptr %13, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 4 %195, i64 4, i1 false), !tbaa.struct !12
  %196 = call i32 @_ZN5GMath4ZeroEv()
  %197 = getelementptr inbounds %class.GFloat, ptr %17, i32 0, i32 0
  store i32 %196, ptr %197, align 4
  %198 = call i32 @_ZN5GMath4ZeroEv()
  %199 = getelementptr inbounds %class.GFloat, ptr %18, i32 0, i32 0
  store i32 %198, ptr %199, align 4
  %200 = getelementptr inbounds %class.GFloat, ptr %16, i32 0, i32 0
  %201 = load i32, ptr %200, align 4
  %202 = getelementptr inbounds %class.GFloat, ptr %17, i32 0, i32 0
  %203 = load i32, ptr %202, align 4
  %204 = getelementptr inbounds %class.GFloat, ptr %18, i32 0, i32 0
  %205 = load i32, ptr %204, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %15, i32 %201, i32 %203, i32 %205)
  %206 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %194, ptr noundef nonnull align 4 dereferenceable(12) %15)
  store { i64, i32 } %206, ptr %19, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 8 %19, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #5
  %207 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #5
  %208 = call i32 @_ZN5GMath4ZeroEv()
  %209 = getelementptr inbounds %class.GFloat, ptr %22, i32 0, i32 0
  store i32 %208, ptr %209, align 4
  %210 = getelementptr inbounds %class.GVector3, ptr %13, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %23, ptr align 4 %210, i64 4, i1 false), !tbaa.struct !12
  %211 = call i32 @_ZN5GMath4ZeroEv()
  %212 = getelementptr inbounds %class.GFloat, ptr %24, i32 0, i32 0
  store i32 %211, ptr %212, align 4
  %213 = getelementptr inbounds %class.GFloat, ptr %22, i32 0, i32 0
  %214 = load i32, ptr %213, align 4
  %215 = getelementptr inbounds %class.GFloat, ptr %23, i32 0, i32 0
  %216 = load i32, ptr %215, align 4
  %217 = getelementptr inbounds %class.GFloat, ptr %24, i32 0, i32 0
  %218 = load i32, ptr %217, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %21, i32 %214, i32 %216, i32 %218)
  %219 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %207, ptr noundef nonnull align 4 dereferenceable(12) %21)
  store { i64, i32 } %219, ptr %25, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %25, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %26) #5
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %27) #5
  %221 = call i32 @_ZN5GMath4ZeroEv()
  %222 = getelementptr inbounds %class.GFloat, ptr %28, i32 0, i32 0
  store i32 %221, ptr %222, align 4
  %223 = call i32 @_ZN5GMath4ZeroEv()
  %224 = getelementptr inbounds %class.GFloat, ptr %29, i32 0, i32 0
  store i32 %223, ptr %224, align 4
  %225 = getelementptr inbounds %class.GVector3, ptr %13, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %225, i64 4, i1 false), !tbaa.struct !12
  %226 = getelementptr inbounds %class.GFloat, ptr %28, i32 0, i32 0
  %227 = load i32, ptr %226, align 4
  %228 = getelementptr inbounds %class.GFloat, ptr %29, i32 0, i32 0
  %229 = load i32, ptr %228, align 4
  %230 = getelementptr inbounds %class.GFloat, ptr %30, i32 0, i32 0
  %231 = load i32, ptr %230, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %27, i32 %227, i32 %229, i32 %231)
  %232 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %220, ptr noundef nonnull align 4 dereferenceable(12) %27)
  store { i64, i32 } %232, ptr %31, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 8 %31, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %34) #5
  %233 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %233, ptr %35, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 8 %35, i64 12, i1 false)
  %234 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %34, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %234, ptr %36, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 8 %36, i64 12, i1 false)
  %235 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %235, ptr %37, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 8 %37, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %40) #5
  %236 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %236, ptr %41, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 8 %41, i64 12, i1 false)
  %237 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %237, ptr %42, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %42, i64 12, i1 false)
  %238 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %39, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %238, ptr %43, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 8 %43, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %239 = getelementptr inbounds %class.GColor, ptr %44, i32 0, i32 0
  %240 = load i32, ptr %239, align 4
  %241 = load ptr, ptr %189, align 8, !tbaa !13
  %242 = getelementptr inbounds ptr, ptr %241, i64 0
  %243 = load ptr, ptr %242, align 8
  call void %243(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %32, ptr noundef nonnull align 4 dereferenceable(12) %38, i32 %240)
  call void @llvm.lifetime.end.p0(i64 12, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %47) #5
  %244 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %244, ptr %48, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 8 %48, i64 12, i1 false)
  %245 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %47, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %245, ptr %49, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 8 %49, i64 12, i1 false)
  %246 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %46, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %246, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 8 %50, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %53) #5
  %247 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %247, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %53, ptr align 8 %54, i64 12, i1 false)
  %248 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %53, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %248, ptr %55, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 8 %55, i64 12, i1 false)
  %249 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %52, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %249, ptr %56, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 8 %56, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %250 = getelementptr inbounds %class.GColor, ptr %57, i32 0, i32 0
  %251 = load i32, ptr %250, align 4
  %252 = load ptr, ptr %189, align 8, !tbaa !13
  %253 = getelementptr inbounds ptr, ptr %252, i64 0
  %254 = load ptr, ptr %253, align 8
  call void %254(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(12) %51, i32 %251)
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %60) #5
  %255 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %255, ptr %61, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 8 %61, i64 12, i1 false)
  %256 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %60, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %256, ptr %62, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %59, ptr align 8 %62, i64 12, i1 false)
  %257 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %257, ptr %63, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 8 %63, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %66) #5
  %258 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %258, ptr %67, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 8 %67, i64 12, i1 false)
  %259 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %259, ptr %68, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 8 %68, i64 12, i1 false)
  %260 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %260, ptr %69, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 8 %69, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %261 = getelementptr inbounds %class.GColor, ptr %70, i32 0, i32 0
  %262 = load i32, ptr %261, align 4
  %263 = load ptr, ptr %189, align 8, !tbaa !13
  %264 = getelementptr inbounds ptr, ptr %263, i64 0
  %265 = load ptr, ptr %264, align 8
  call void %265(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %58, ptr noundef nonnull align 4 dereferenceable(12) %64, i32 %262)
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %73) #5
  %266 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %266, ptr %74, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %73, ptr align 8 %74, i64 12, i1 false)
  %267 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %73, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %267, ptr %75, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %72, ptr align 8 %75, i64 12, i1 false)
  %268 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %72, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %268, ptr %76, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 8 %76, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %79) #5
  %269 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %269, ptr %80, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 8 %80, i64 12, i1 false)
  %270 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %79, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %270, ptr %81, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 8 %81, i64 12, i1 false)
  %271 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %78, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %271, ptr %82, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 8 %82, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %272 = getelementptr inbounds %class.GColor, ptr %83, i32 0, i32 0
  %273 = load i32, ptr %272, align 4
  %274 = load ptr, ptr %189, align 8, !tbaa !13
  %275 = getelementptr inbounds ptr, ptr %274, i64 0
  %276 = load ptr, ptr %275, align 8
  call void %276(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %71, ptr noundef nonnull align 4 dereferenceable(12) %77, i32 %273)
  call void @llvm.lifetime.end.p0(i64 12, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %86) #5
  %277 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %277, ptr %87, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 8 %87, i64 12, i1 false)
  %278 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %86, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %278, ptr %88, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 8 %88, i64 12, i1 false)
  %279 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %85, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %279, ptr %89, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %84, ptr align 8 %89, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %92) #5
  %280 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %280, ptr %93, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %92, ptr align 8 %93, i64 12, i1 false)
  %281 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %281, ptr %94, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %91, ptr align 8 %94, i64 12, i1 false)
  %282 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %91, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %282, ptr %95, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %90, ptr align 8 %95, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %96, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %283 = getelementptr inbounds %class.GColor, ptr %96, i32 0, i32 0
  %284 = load i32, ptr %283, align 4
  %285 = load ptr, ptr %189, align 8, !tbaa !13
  %286 = getelementptr inbounds ptr, ptr %285, i64 0
  %287 = load ptr, ptr %286, align 8
  call void %287(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %90, i32 %284)
  call void @llvm.lifetime.end.p0(i64 12, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %99) #5
  %288 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %288, ptr %100, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %99, ptr align 8 %100, i64 12, i1 false)
  %289 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %99, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %289, ptr %101, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 8 %101, i64 12, i1 false)
  %290 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %98, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %290, ptr %102, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %97, ptr align 8 %102, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %103) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %105) #5
  %291 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %291, ptr %106, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 8 %106, i64 12, i1 false)
  %292 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %105, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %292, ptr %107, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 8 %107, i64 12, i1 false)
  %293 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %104, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %293, ptr %108, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %103, ptr align 8 %108, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %109, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %294 = getelementptr inbounds %class.GColor, ptr %109, i32 0, i32 0
  %295 = load i32, ptr %294, align 4
  %296 = load ptr, ptr %189, align 8, !tbaa !13
  %297 = getelementptr inbounds ptr, ptr %296, i64 0
  %298 = load ptr, ptr %297, align 8
  call void %298(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %97, ptr noundef nonnull align 4 dereferenceable(12) %103, i32 %295)
  call void @llvm.lifetime.end.p0(i64 12, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %103) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %111) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %112) #5
  %299 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %299, ptr %113, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %112, ptr align 8 %113, i64 12, i1 false)
  %300 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %112, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %300, ptr %114, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %111, ptr align 8 %114, i64 12, i1 false)
  %301 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %111, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %301, ptr %115, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %110, ptr align 8 %115, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %116) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %117) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %118) #5
  %302 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %302, ptr %119, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %118, ptr align 8 %119, i64 12, i1 false)
  %303 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %118, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %303, ptr %120, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 8 %120, i64 12, i1 false)
  %304 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %117, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %304, ptr %121, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 8 %121, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %122, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %305 = getelementptr inbounds %class.GColor, ptr %122, i32 0, i32 0
  %306 = load i32, ptr %305, align 4
  %307 = load ptr, ptr %189, align 8, !tbaa !13
  %308 = getelementptr inbounds ptr, ptr %307, i64 0
  %309 = load ptr, ptr %308, align 8
  call void %309(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %110, ptr noundef nonnull align 4 dereferenceable(12) %116, i32 %306)
  call void @llvm.lifetime.end.p0(i64 12, ptr %118) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %117) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %116) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %112) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %111) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %110) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %123) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %124) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %125) #5
  %310 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %310, ptr %126, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %125, ptr align 8 %126, i64 12, i1 false)
  %311 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %125, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %311, ptr %127, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 8 %127, i64 12, i1 false)
  %312 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %312, ptr %128, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %123, ptr align 8 %128, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %129) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %130) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %131) #5
  %313 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %313, ptr %132, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 8 %132, i64 12, i1 false)
  %314 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %131, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %314, ptr %133, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 8 %133, i64 12, i1 false)
  %315 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %130, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %315, ptr %134, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 8 %134, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %135, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %316 = getelementptr inbounds %class.GColor, ptr %135, i32 0, i32 0
  %317 = load i32, ptr %316, align 4
  %318 = load ptr, ptr %189, align 8, !tbaa !13
  %319 = getelementptr inbounds ptr, ptr %318, i64 0
  %320 = load ptr, ptr %319, align 8
  call void %320(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %123, ptr noundef nonnull align 4 dereferenceable(12) %129, i32 %317)
  call void @llvm.lifetime.end.p0(i64 12, ptr %131) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %130) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %129) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %125) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %124) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %123) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %136) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %137) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %138) #5
  %321 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %321, ptr %139, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %138, ptr align 8 %139, i64 12, i1 false)
  %322 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %138, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %322, ptr %140, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %137, ptr align 8 %140, i64 12, i1 false)
  %323 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %137, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %323, ptr %141, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %136, ptr align 8 %141, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %142) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %143) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %144) #5
  %324 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %324, ptr %145, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %144, ptr align 8 %145, i64 12, i1 false)
  %325 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %144, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %325, ptr %146, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %143, ptr align 8 %146, i64 12, i1 false)
  %326 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %143, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %326, ptr %147, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %142, ptr align 8 %147, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %148, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %327 = getelementptr inbounds %class.GColor, ptr %148, i32 0, i32 0
  %328 = load i32, ptr %327, align 4
  %329 = load ptr, ptr %189, align 8, !tbaa !13
  %330 = getelementptr inbounds ptr, ptr %329, i64 0
  %331 = load ptr, ptr %330, align 8
  call void %331(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %136, ptr noundef nonnull align 4 dereferenceable(12) %142, i32 %328)
  call void @llvm.lifetime.end.p0(i64 12, ptr %144) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %143) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %142) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %138) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %137) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %136) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %149) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %150) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %151) #5
  %332 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %332, ptr %152, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %151, ptr align 8 %152, i64 12, i1 false)
  %333 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %333, ptr %153, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %150, ptr align 8 %153, i64 12, i1 false)
  %334 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %150, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %334, ptr %154, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %149, ptr align 8 %154, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %155) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %156) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %157) #5
  %335 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %335, ptr %158, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %157, ptr align 8 %158, i64 12, i1 false)
  %336 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %157, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %336, ptr %159, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %156, ptr align 8 %159, i64 12, i1 false)
  %337 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %156, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %337, ptr %160, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %155, ptr align 8 %160, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %161, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %338 = getelementptr inbounds %class.GColor, ptr %161, i32 0, i32 0
  %339 = load i32, ptr %338, align 4
  %340 = load ptr, ptr %189, align 8, !tbaa !13
  %341 = getelementptr inbounds ptr, ptr %340, i64 0
  %342 = load ptr, ptr %341, align 8
  call void %342(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %149, ptr noundef nonnull align 4 dereferenceable(12) %155, i32 %339)
  call void @llvm.lifetime.end.p0(i64 12, ptr %157) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %156) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %155) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %151) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %150) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %149) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %162) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %163) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %164) #5
  %343 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %343, ptr %165, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %164, ptr align 8 %165, i64 12, i1 false)
  %344 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %164, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %344, ptr %166, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %163, ptr align 8 %166, i64 12, i1 false)
  %345 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %163, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %345, ptr %167, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %162, ptr align 8 %167, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %168) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %169) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %170) #5
  %346 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %346, ptr %171, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %170, ptr align 8 %171, i64 12, i1 false)
  %347 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %170, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %347, ptr %172, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %169, ptr align 8 %172, i64 12, i1 false)
  %348 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %169, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %348, ptr %173, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %168, ptr align 8 %173, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %349 = getelementptr inbounds %class.GColor, ptr %174, i32 0, i32 0
  %350 = load i32, ptr %349, align 4
  %351 = load ptr, ptr %189, align 8, !tbaa !13
  %352 = getelementptr inbounds ptr, ptr %351, i64 0
  %353 = load ptr, ptr %352, align 8
  call void %353(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %162, ptr noundef nonnull align 4 dereferenceable(12) %168, i32 %350)
  call void @llvm.lifetime.end.p0(i64 12, ptr %170) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %169) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %168) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %164) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %163) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %162) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %175) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %176) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %177) #5
  %354 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %354, ptr %178, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %177, ptr align 8 %178, i64 12, i1 false)
  %355 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %177, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %355, ptr %179, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %176, ptr align 8 %179, i64 12, i1 false)
  %356 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %176, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %356, ptr %180, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %175, ptr align 8 %180, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %181) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %182) #5
  call void @llvm.lifetime.start.p0(i64 12, ptr %183) #5
  %357 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %26)
  store { i64, i32 } %357, ptr %184, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %183, ptr align 8 %184, i64 12, i1 false)
  %358 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %183, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { i64, i32 } %358, ptr %185, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %182, ptr align 8 %185, i64 12, i1 false)
  %359 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %182, ptr noundef nonnull align 4 dereferenceable(12) %20)
  store { i64, i32 } %359, ptr %186, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %181, ptr align 8 %186, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %187, ptr align 4 %6, i64 4, i1 false), !tbaa.struct !12
  %360 = getelementptr inbounds %class.GColor, ptr %187, i32 0, i32 0
  %361 = load i32, ptr %360, align 4
  %362 = load ptr, ptr %189, align 8, !tbaa !13
  %363 = getelementptr inbounds ptr, ptr %362, i64 0
  %364 = load ptr, ptr %363, align 8
  call void %364(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull align 4 dereferenceable(12) %175, ptr noundef nonnull align 4 dereferenceable(12) %181, i32 %361)
  call void @llvm.lifetime.end.p0(i64 12, ptr %183) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %182) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %181) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %177) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %176) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %175) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #5
  ret void
}

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZN5GMath4ZeroEv() #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12), i32, i32, i32) unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #4 align 2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = { 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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i64 0, i64 4, !10, i64 4, i64 4, !10, i64 8, i64 4, !10}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{i64 0, i64 4, !10}
!13 = !{!14, !14, i64 0}
!14 = !{!"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"

%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GFloat = type { i32 }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN12IGlacierDraw7DrawBoxERK13GTransform_QTRK8GVector3S5_6GColor(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(12) %3, i32 %4) unnamed_addr #0 align 2 {
  %6 = alloca %class.GVector3, align 8
  %7 = alloca %class.GVector3, align 8
  %8 = alloca %class.GVector3, align 4
  %9 = alloca %class.GVector3, align 8
  %10 = alloca %class.GVector3, align 4
  %11 = alloca %class.GVector3, align 8
  %12 = alloca %class.GVector3, align 4
  %13 = alloca %class.GVector3, align 8
  %14 = alloca %class.GVector3, align 8
  %15 = alloca %class.GVector3, align 8
  %16 = alloca %class.GVector3, align 8
  %17 = alloca %class.GVector3, align 8
  %18 = alloca %class.GVector3, align 8
  %19 = alloca %class.GVector3, align 8
  %20 = alloca %class.GVector3, align 8
  %21 = alloca %class.GVector3, align 8
  %22 = alloca %class.GVector3, align 8
  %23 = alloca %class.GVector3, align 8
  %24 = alloca %class.GVector3, align 8
  %25 = alloca %class.GVector3, align 8
  %26 = alloca %class.GVector3, align 8
  %27 = alloca %class.GVector3, align 8
  %28 = alloca %class.GVector3, align 8
  %29 = alloca %class.GVector3, align 8
  %30 = alloca %class.GVector3, align 8
  %31 = alloca %class.GVector3, align 8
  %32 = alloca %class.GVector3, align 8
  %33 = alloca %class.GVector3, align 8
  %34 = alloca %class.GVector3, align 8
  %35 = alloca %class.GVector3, align 8
  %36 = alloca %class.GVector3, align 8
  %37 = alloca %class.GVector3, align 8
  %38 = alloca %class.GVector3, align 8
  %39 = alloca %class.GVector3, align 8
  %40 = alloca %class.GVector3, align 8
  %41 = alloca %class.GVector3, align 8
  %42 = alloca %class.GVector3, align 8
  %43 = alloca %class.GVector3, align 8
  %44 = alloca %class.GVector3, align 8
  %45 = alloca %class.GVector3, align 8
  %46 = alloca %class.GVector3, align 8
  %47 = alloca %class.GVector3, align 8
  %48 = alloca %class.GVector3, align 8
  %49 = alloca %class.GVector3, align 8
  %50 = alloca %class.GVector3, align 8
  %51 = alloca %class.GVector3, align 8
  %52 = alloca %class.GVector3, align 8
  %53 = alloca %class.GVector3, align 8
  %54 = alloca %class.GVector3, align 8
  %55 = alloca %class.GVector3, align 8
  %56 = alloca %class.GVector3, align 8
  %57 = alloca %class.GVector3, align 8
  %58 = alloca %class.GVector3, align 8
  %59 = alloca %class.GVector3, align 8
  %60 = alloca %class.GVector3, align 8
  %61 = alloca %class.GVector3, align 8
  %62 = alloca %class.GVector3, align 8
  %63 = alloca %class.GVector3, align 8
  %64 = alloca %class.GVector3, align 8
  %65 = alloca %class.GVector3, align 8
  %66 = alloca %class.GVector3, align 8
  %67 = alloca %class.GVector3, align 8
  %68 = alloca %class.GVector3, align 8
  %69 = alloca %class.GVector3, align 8
  %70 = alloca %class.GVector3, align 8
  %71 = alloca %class.GVector3, align 8
  %72 = alloca %class.GVector3, align 8
  %73 = alloca %class.GVector3, align 8
  %74 = alloca %class.GVector3, align 8
  %75 = alloca %class.GVector3, align 8
  %76 = alloca %class.GVector3, align 8
  %77 = alloca %class.GVector3, align 8
  %78 = alloca %class.GVector3, align 8
  %79 = alloca %class.GVector3, align 8
  %80 = alloca %class.GVector3, align 8
  %81 = alloca %class.GVector3, align 8
  %82 = alloca %class.GVector3, align 8
  %83 = alloca %class.GVector3, align 8
  %84 = alloca %class.GVector3, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #4
  %85 = tail call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %2)
  %.fca.0.extract319 = extractvalue { i64, i32 } %85, 0
  %.fca.1.extract320 = extractvalue { i64, i32 } %85, 1
  store i64 %.fca.0.extract319, ptr %6, align 8
  %.sroa.2322.0..sroa_idx = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %.fca.1.extract320, ptr %.sroa.2322.0..sroa_idx, align 8
  %.sroa.0318.0.copyload = load i32, ptr %3, align 4, !tbaa !5
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 4
  %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !5
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8
  %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %8) #4
  %86 = tail call i32 @_ZN5GMath4ZeroEv()
  %87 = tail call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %8, i32 %.sroa.0318.0.copyload, i32 %86, i32 %87)
  %88 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %8)
  %.fca.0.extract311 = extractvalue { i64, i32 } %88, 0
  %.fca.1.extract312 = extractvalue { i64, i32 } %88, 1
  store i64 %.fca.0.extract311, ptr %7, align 8
  %.sroa.2314.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8
  store i32 %.fca.1.extract312, ptr %.sroa.2314.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #4
  %89 = call i32 @_ZN5GMath4ZeroEv()
  %90 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 %89, i32 %.sroa.4.0.copyload, i32 %90)
  %91 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %10)
  %.fca.0.extract304 = extractvalue { i64, i32 } %91, 0
  %.fca.1.extract305 = extractvalue { i64, i32 } %91, 1
  store i64 %.fca.0.extract304, ptr %9, align 8
  %.sroa.2307.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8
  store i32 %.fca.1.extract305, ptr %.sroa.2307.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #4
  %92 = call i32 @_ZN5GMath4ZeroEv()
  %93 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %12, i32 %92, i32 %93, i32 %.sroa.5.0.copyload)
  %94 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %12)
  %.fca.0.extract297 = extractvalue { i64, i32 } %94, 0
  %.fca.1.extract298 = extractvalue { i64, i32 } %94, 1
  store i64 %.fca.0.extract297, ptr %11, align 8
  %.sroa.2300.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8
  store i32 %.fca.1.extract298, ptr %.sroa.2300.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %15) #4
  %95 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract293 = extractvalue { i64, i32 } %95, 0
  %.fca.1.extract294 = extractvalue { i64, i32 } %95, 1
  store i64 %.fca.0.extract293, ptr %15, align 8
  %.sroa.2296.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8
  store i32 %.fca.1.extract294, ptr %.sroa.2296.0..sroa_idx, align 8
  %96 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %15, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract289 = extractvalue { i64, i32 } %96, 0
  %.fca.1.extract290 = extractvalue { i64, i32 } %96, 1
  store i64 %.fca.0.extract289, ptr %14, align 8
  %.sroa.2292.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  store i32 %.fca.1.extract290, ptr %.sroa.2292.0..sroa_idx, align 8
  %97 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract285 = extractvalue { i64, i32 } %97, 0
  %.fca.1.extract286 = extractvalue { i64, i32 } %97, 1
  store i64 %.fca.0.extract285, ptr %13, align 8
  %.sroa.2288.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  store i32 %.fca.1.extract286, ptr %.sroa.2288.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %18) #4
  %98 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract281 = extractvalue { i64, i32 } %98, 0
  %.fca.1.extract282 = extractvalue { i64, i32 } %98, 1
  store i64 %.fca.0.extract281, ptr %18, align 8
  %.sroa.2284.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 8
  store i32 %.fca.1.extract282, ptr %.sroa.2284.0..sroa_idx, align 8
  %99 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %18, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract277 = extractvalue { i64, i32 } %99, 0
  %.fca.1.extract278 = extractvalue { i64, i32 } %99, 1
  store i64 %.fca.0.extract277, ptr %17, align 8
  %.sroa.2280.0..sroa_idx = getelementptr inbounds i8, ptr %17, i64 8
  store i32 %.fca.1.extract278, ptr %.sroa.2280.0..sroa_idx, align 8
  %100 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract273 = extractvalue { i64, i32 } %100, 0
  %.fca.1.extract274 = extractvalue { i64, i32 } %100, 1
  store i64 %.fca.0.extract273, ptr %16, align 8
  %.sroa.2276.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  store i32 %.fca.1.extract274, ptr %.sroa.2276.0..sroa_idx, align 8
  %101 = load ptr, ptr %0, align 8, !tbaa !9
  %102 = load ptr, ptr %101, align 8
  call void %102(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(12) %16, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #4
  %103 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract268 = extractvalue { i64, i32 } %103, 0
  %.fca.1.extract269 = extractvalue { i64, i32 } %103, 1
  store i64 %.fca.0.extract268, ptr %21, align 8
  %.sroa.2271.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 8
  store i32 %.fca.1.extract269, ptr %.sroa.2271.0..sroa_idx, align 8
  %104 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract264 = extractvalue { i64, i32 } %104, 0
  %.fca.1.extract265 = extractvalue { i64, i32 } %104, 1
  store i64 %.fca.0.extract264, ptr %20, align 8
  %.sroa.2267.0..sroa_idx = getelementptr inbounds i8, ptr %20, i64 8
  store i32 %.fca.1.extract265, ptr %.sroa.2267.0..sroa_idx, align 8
  %105 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract260 = extractvalue { i64, i32 } %105, 0
  %.fca.1.extract261 = extractvalue { i64, i32 } %105, 1
  store i64 %.fca.0.extract260, ptr %19, align 8
  %.sroa.2263.0..sroa_idx = getelementptr inbounds i8, ptr %19, i64 8
  store i32 %.fca.1.extract261, ptr %.sroa.2263.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %24) #4
  %106 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract256 = extractvalue { i64, i32 } %106, 0
  %.fca.1.extract257 = extractvalue { i64, i32 } %106, 1
  store i64 %.fca.0.extract256, ptr %24, align 8
  %.sroa.2259.0..sroa_idx = getelementptr inbounds i8, ptr %24, i64 8
  store i32 %.fca.1.extract257, ptr %.sroa.2259.0..sroa_idx, align 8
  %107 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %24, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract252 = extractvalue { i64, i32 } %107, 0
  %.fca.1.extract253 = extractvalue { i64, i32 } %107, 1
  store i64 %.fca.0.extract252, ptr %23, align 8
  %.sroa.2255.0..sroa_idx = getelementptr inbounds i8, ptr %23, i64 8
  store i32 %.fca.1.extract253, ptr %.sroa.2255.0..sroa_idx, align 8
  %108 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract248 = extractvalue { i64, i32 } %108, 0
  %.fca.1.extract249 = extractvalue { i64, i32 } %108, 1
  store i64 %.fca.0.extract248, ptr %22, align 8
  %.sroa.2251.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
  store i32 %.fca.1.extract249, ptr %.sroa.2251.0..sroa_idx, align 8
  %109 = load ptr, ptr %0, align 8, !tbaa !9
  %110 = load ptr, ptr %109, align 8
  call void %110(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %19, ptr noundef nonnull align 4 dereferenceable(12) %22, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %27) #4
  %111 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract243 = extractvalue { i64, i32 } %111, 0
  %.fca.1.extract244 = extractvalue { i64, i32 } %111, 1
  store i64 %.fca.0.extract243, ptr %27, align 8
  %.sroa.2246.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8
  store i32 %.fca.1.extract244, ptr %.sroa.2246.0..sroa_idx, align 8
  %112 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract239 = extractvalue { i64, i32 } %112, 0
  %.fca.1.extract240 = extractvalue { i64, i32 } %112, 1
  store i64 %.fca.0.extract239, ptr %26, align 8
  %.sroa.2242.0..sroa_idx = getelementptr inbounds i8, ptr %26, i64 8
  store i32 %.fca.1.extract240, ptr %.sroa.2242.0..sroa_idx, align 8
  %113 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract235 = extractvalue { i64, i32 } %113, 0
  %.fca.1.extract236 = extractvalue { i64, i32 } %113, 1
  store i64 %.fca.0.extract235, ptr %25, align 8
  %.sroa.2238.0..sroa_idx = getelementptr inbounds i8, ptr %25, i64 8
  store i32 %.fca.1.extract236, ptr %.sroa.2238.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #4
  %114 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract231 = extractvalue { i64, i32 } %114, 0
  %.fca.1.extract232 = extractvalue { i64, i32 } %114, 1
  store i64 %.fca.0.extract231, ptr %30, align 8
  %.sroa.2234.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8
  store i32 %.fca.1.extract232, ptr %.sroa.2234.0..sroa_idx, align 8
  %115 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %30, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract227 = extractvalue { i64, i32 } %115, 0
  %.fca.1.extract228 = extractvalue { i64, i32 } %115, 1
  store i64 %.fca.0.extract227, ptr %29, align 8
  %.sroa.2230.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  store i32 %.fca.1.extract228, ptr %.sroa.2230.0..sroa_idx, align 8
  %116 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract223 = extractvalue { i64, i32 } %116, 0
  %.fca.1.extract224 = extractvalue { i64, i32 } %116, 1
  store i64 %.fca.0.extract223, ptr %28, align 8
  %.sroa.2226.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
  store i32 %.fca.1.extract224, ptr %.sroa.2226.0..sroa_idx, align 8
  %117 = load ptr, ptr %0, align 8, !tbaa !9
  %118 = load ptr, ptr %117, align 8
  call void %118(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %25, ptr noundef nonnull align 4 dereferenceable(12) %28, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #4
  %119 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract218 = extractvalue { i64, i32 } %119, 0
  %.fca.1.extract219 = extractvalue { i64, i32 } %119, 1
  store i64 %.fca.0.extract218, ptr %33, align 8
  %.sroa.2221.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  store i32 %.fca.1.extract219, ptr %.sroa.2221.0..sroa_idx, align 8
  %120 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract214 = extractvalue { i64, i32 } %120, 0
  %.fca.1.extract215 = extractvalue { i64, i32 } %120, 1
  store i64 %.fca.0.extract214, ptr %32, align 8
  %.sroa.2217.0..sroa_idx = getelementptr inbounds i8, ptr %32, i64 8
  store i32 %.fca.1.extract215, ptr %.sroa.2217.0..sroa_idx, align 8
  %121 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %32, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract210 = extractvalue { i64, i32 } %121, 0
  %.fca.1.extract211 = extractvalue { i64, i32 } %121, 1
  store i64 %.fca.0.extract210, ptr %31, align 8
  %.sroa.2213.0..sroa_idx = getelementptr inbounds i8, ptr %31, i64 8
  store i32 %.fca.1.extract211, ptr %.sroa.2213.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %34) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %36) #4
  %122 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract206 = extractvalue { i64, i32 } %122, 0
  %.fca.1.extract207 = extractvalue { i64, i32 } %122, 1
  store i64 %.fca.0.extract206, ptr %36, align 8
  %.sroa.2209.0..sroa_idx = getelementptr inbounds i8, ptr %36, i64 8
  store i32 %.fca.1.extract207, ptr %.sroa.2209.0..sroa_idx, align 8
  %123 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %36, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract202 = extractvalue { i64, i32 } %123, 0
  %.fca.1.extract203 = extractvalue { i64, i32 } %123, 1
  store i64 %.fca.0.extract202, ptr %35, align 8
  %.sroa.2205.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8
  store i32 %.fca.1.extract203, ptr %.sroa.2205.0..sroa_idx, align 8
  %124 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %35, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract198 = extractvalue { i64, i32 } %124, 0
  %.fca.1.extract199 = extractvalue { i64, i32 } %124, 1
  store i64 %.fca.0.extract198, ptr %34, align 8
  %.sroa.2201.0..sroa_idx = getelementptr inbounds i8, ptr %34, i64 8
  store i32 %.fca.1.extract199, ptr %.sroa.2201.0..sroa_idx, align 8
  %125 = load ptr, ptr %0, align 8, !tbaa !9
  %126 = load ptr, ptr %125, align 8
  call void %126(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %31, ptr noundef nonnull align 4 dereferenceable(12) %34, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %37) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %38) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %39) #4
  %127 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract193 = extractvalue { i64, i32 } %127, 0
  %.fca.1.extract194 = extractvalue { i64, i32 } %127, 1
  store i64 %.fca.0.extract193, ptr %39, align 8
  %.sroa.2196.0..sroa_idx = getelementptr inbounds i8, ptr %39, i64 8
  store i32 %.fca.1.extract194, ptr %.sroa.2196.0..sroa_idx, align 8
  %128 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %39, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract189 = extractvalue { i64, i32 } %128, 0
  %.fca.1.extract190 = extractvalue { i64, i32 } %128, 1
  store i64 %.fca.0.extract189, ptr %38, align 8
  %.sroa.2192.0..sroa_idx = getelementptr inbounds i8, ptr %38, i64 8
  store i32 %.fca.1.extract190, ptr %.sroa.2192.0..sroa_idx, align 8
  %129 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %38, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract185 = extractvalue { i64, i32 } %129, 0
  %.fca.1.extract186 = extractvalue { i64, i32 } %129, 1
  store i64 %.fca.0.extract185, ptr %37, align 8
  %.sroa.2188.0..sroa_idx = getelementptr inbounds i8, ptr %37, i64 8
  store i32 %.fca.1.extract186, ptr %.sroa.2188.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %41) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %42) #4
  %130 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract181 = extractvalue { i64, i32 } %130, 0
  %.fca.1.extract182 = extractvalue { i64, i32 } %130, 1
  store i64 %.fca.0.extract181, ptr %42, align 8
  %.sroa.2184.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 8
  store i32 %.fca.1.extract182, ptr %.sroa.2184.0..sroa_idx, align 8
  %131 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %42, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract177 = extractvalue { i64, i32 } %131, 0
  %.fca.1.extract178 = extractvalue { i64, i32 } %131, 1
  store i64 %.fca.0.extract177, ptr %41, align 8
  %.sroa.2180.0..sroa_idx = getelementptr inbounds i8, ptr %41, i64 8
  store i32 %.fca.1.extract178, ptr %.sroa.2180.0..sroa_idx, align 8
  %132 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %41, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract173 = extractvalue { i64, i32 } %132, 0
  %.fca.1.extract174 = extractvalue { i64, i32 } %132, 1
  store i64 %.fca.0.extract173, ptr %40, align 8
  %.sroa.2176.0..sroa_idx = getelementptr inbounds i8, ptr %40, i64 8
  store i32 %.fca.1.extract174, ptr %.sroa.2176.0..sroa_idx, align 8
  %133 = load ptr, ptr %0, align 8, !tbaa !9
  %134 = load ptr, ptr %133, align 8
  call void %134(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %37, ptr noundef nonnull align 4 dereferenceable(12) %40, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %41) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %39) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %38) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %43) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %44) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %45) #4
  %135 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract168 = extractvalue { i64, i32 } %135, 0
  %.fca.1.extract169 = extractvalue { i64, i32 } %135, 1
  store i64 %.fca.0.extract168, ptr %45, align 8
  %.sroa.2171.0..sroa_idx = getelementptr inbounds i8, ptr %45, i64 8
  store i32 %.fca.1.extract169, ptr %.sroa.2171.0..sroa_idx, align 8
  %136 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract164 = extractvalue { i64, i32 } %136, 0
  %.fca.1.extract165 = extractvalue { i64, i32 } %136, 1
  store i64 %.fca.0.extract164, ptr %44, align 8
  %.sroa.2167.0..sroa_idx = getelementptr inbounds i8, ptr %44, i64 8
  store i32 %.fca.1.extract165, ptr %.sroa.2167.0..sroa_idx, align 8
  %137 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %44, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract160 = extractvalue { i64, i32 } %137, 0
  %.fca.1.extract161 = extractvalue { i64, i32 } %137, 1
  store i64 %.fca.0.extract160, ptr %43, align 8
  %.sroa.2163.0..sroa_idx = getelementptr inbounds i8, ptr %43, i64 8
  store i32 %.fca.1.extract161, ptr %.sroa.2163.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %46) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %47) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %48) #4
  %138 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract156 = extractvalue { i64, i32 } %138, 0
  %.fca.1.extract157 = extractvalue { i64, i32 } %138, 1
  store i64 %.fca.0.extract156, ptr %48, align 8
  %.sroa.2159.0..sroa_idx = getelementptr inbounds i8, ptr %48, i64 8
  store i32 %.fca.1.extract157, ptr %.sroa.2159.0..sroa_idx, align 8
  %139 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %48, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract152 = extractvalue { i64, i32 } %139, 0
  %.fca.1.extract153 = extractvalue { i64, i32 } %139, 1
  store i64 %.fca.0.extract152, ptr %47, align 8
  %.sroa.2155.0..sroa_idx = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %.fca.1.extract153, ptr %.sroa.2155.0..sroa_idx, align 8
  %140 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %47, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract148 = extractvalue { i64, i32 } %140, 0
  %.fca.1.extract149 = extractvalue { i64, i32 } %140, 1
  store i64 %.fca.0.extract148, ptr %46, align 8
  %.sroa.2151.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 8
  store i32 %.fca.1.extract149, ptr %.sroa.2151.0..sroa_idx, align 8
  %141 = load ptr, ptr %0, align 8, !tbaa !9
  %142 = load ptr, ptr %141, align 8
  call void %142(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %43, ptr noundef nonnull align 4 dereferenceable(12) %46, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %48) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %46) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %45) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %44) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %50) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #4
  %143 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract143 = extractvalue { i64, i32 } %143, 0
  %.fca.1.extract144 = extractvalue { i64, i32 } %143, 1
  store i64 %.fca.0.extract143, ptr %51, align 8
  %.sroa.2146.0..sroa_idx = getelementptr inbounds i8, ptr %51, i64 8
  store i32 %.fca.1.extract144, ptr %.sroa.2146.0..sroa_idx, align 8
  %144 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %51, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract139 = extractvalue { i64, i32 } %144, 0
  %.fca.1.extract140 = extractvalue { i64, i32 } %144, 1
  store i64 %.fca.0.extract139, ptr %50, align 8
  %.sroa.2142.0..sroa_idx = getelementptr inbounds i8, ptr %50, i64 8
  store i32 %.fca.1.extract140, ptr %.sroa.2142.0..sroa_idx, align 8
  %145 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %50, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract135 = extractvalue { i64, i32 } %145, 0
  %.fca.1.extract136 = extractvalue { i64, i32 } %145, 1
  store i64 %.fca.0.extract135, ptr %49, align 8
  %.sroa.2138.0..sroa_idx = getelementptr inbounds i8, ptr %49, i64 8
  store i32 %.fca.1.extract136, ptr %.sroa.2138.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %52) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %53) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %54) #4
  %146 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract131 = extractvalue { i64, i32 } %146, 0
  %.fca.1.extract132 = extractvalue { i64, i32 } %146, 1
  store i64 %.fca.0.extract131, ptr %54, align 8
  %.sroa.2134.0..sroa_idx = getelementptr inbounds i8, ptr %54, i64 8
  store i32 %.fca.1.extract132, ptr %.sroa.2134.0..sroa_idx, align 8
  %147 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %54, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract127 = extractvalue { i64, i32 } %147, 0
  %.fca.1.extract128 = extractvalue { i64, i32 } %147, 1
  store i64 %.fca.0.extract127, ptr %53, align 8
  %.sroa.2130.0..sroa_idx = getelementptr inbounds i8, ptr %53, i64 8
  store i32 %.fca.1.extract128, ptr %.sroa.2130.0..sroa_idx, align 8
  %148 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %53, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract123 = extractvalue { i64, i32 } %148, 0
  %.fca.1.extract124 = extractvalue { i64, i32 } %148, 1
  store i64 %.fca.0.extract123, ptr %52, align 8
  %.sroa.2126.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 8
  store i32 %.fca.1.extract124, ptr %.sroa.2126.0..sroa_idx, align 8
  %149 = load ptr, ptr %0, align 8, !tbaa !9
  %150 = load ptr, ptr %149, align 8
  call void %150(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %49, ptr noundef nonnull align 4 dereferenceable(12) %52, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %54) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %52) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %50) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %55) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %56) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %57) #4
  %151 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract118 = extractvalue { i64, i32 } %151, 0
  %.fca.1.extract119 = extractvalue { i64, i32 } %151, 1
  store i64 %.fca.0.extract118, ptr %57, align 8
  %.sroa.2121.0..sroa_idx = getelementptr inbounds i8, ptr %57, i64 8
  store i32 %.fca.1.extract119, ptr %.sroa.2121.0..sroa_idx, align 8
  %152 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %57, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract114 = extractvalue { i64, i32 } %152, 0
  %.fca.1.extract115 = extractvalue { i64, i32 } %152, 1
  store i64 %.fca.0.extract114, ptr %56, align 8
  %.sroa.2117.0..sroa_idx = getelementptr inbounds i8, ptr %56, i64 8
  store i32 %.fca.1.extract115, ptr %.sroa.2117.0..sroa_idx, align 8
  %153 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %56, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract110 = extractvalue { i64, i32 } %153, 0
  %.fca.1.extract111 = extractvalue { i64, i32 } %153, 1
  store i64 %.fca.0.extract110, ptr %55, align 8
  %.sroa.2113.0..sroa_idx = getelementptr inbounds i8, ptr %55, i64 8
  store i32 %.fca.1.extract111, ptr %.sroa.2113.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %59) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %60) #4
  %154 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract106 = extractvalue { i64, i32 } %154, 0
  %.fca.1.extract107 = extractvalue { i64, i32 } %154, 1
  store i64 %.fca.0.extract106, ptr %60, align 8
  %.sroa.2109.0..sroa_idx = getelementptr inbounds i8, ptr %60, i64 8
  store i32 %.fca.1.extract107, ptr %.sroa.2109.0..sroa_idx, align 8
  %155 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %60, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract102 = extractvalue { i64, i32 } %155, 0
  %.fca.1.extract103 = extractvalue { i64, i32 } %155, 1
  store i64 %.fca.0.extract102, ptr %59, align 8
  %.sroa.2105.0..sroa_idx = getelementptr inbounds i8, ptr %59, i64 8
  store i32 %.fca.1.extract103, ptr %.sroa.2105.0..sroa_idx, align 8
  %156 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract98 = extractvalue { i64, i32 } %156, 0
  %.fca.1.extract99 = extractvalue { i64, i32 } %156, 1
  store i64 %.fca.0.extract98, ptr %58, align 8
  %.sroa.2101.0..sroa_idx = getelementptr inbounds i8, ptr %58, i64 8
  store i32 %.fca.1.extract99, ptr %.sroa.2101.0..sroa_idx, align 8
  %157 = load ptr, ptr %0, align 8, !tbaa !9
  %158 = load ptr, ptr %157, align 8
  call void %158(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %55, ptr noundef nonnull align 4 dereferenceable(12) %58, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %60) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %59) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %57) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %56) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %55) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %61) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %62) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %63) #4
  %159 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract93 = extractvalue { i64, i32 } %159, 0
  %.fca.1.extract94 = extractvalue { i64, i32 } %159, 1
  store i64 %.fca.0.extract93, ptr %63, align 8
  %.sroa.296.0..sroa_idx = getelementptr inbounds i8, ptr %63, i64 8
  store i32 %.fca.1.extract94, ptr %.sroa.296.0..sroa_idx, align 8
  %160 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %63, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract89 = extractvalue { i64, i32 } %160, 0
  %.fca.1.extract90 = extractvalue { i64, i32 } %160, 1
  store i64 %.fca.0.extract89, ptr %62, align 8
  %.sroa.292.0..sroa_idx = getelementptr inbounds i8, ptr %62, i64 8
  store i32 %.fca.1.extract90, ptr %.sroa.292.0..sroa_idx, align 8
  %161 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %62, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract85 = extractvalue { i64, i32 } %161, 0
  %.fca.1.extract86 = extractvalue { i64, i32 } %161, 1
  store i64 %.fca.0.extract85, ptr %61, align 8
  %.sroa.288.0..sroa_idx = getelementptr inbounds i8, ptr %61, i64 8
  store i32 %.fca.1.extract86, ptr %.sroa.288.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %64) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %65) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %66) #4
  %162 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract81 = extractvalue { i64, i32 } %162, 0
  %.fca.1.extract82 = extractvalue { i64, i32 } %162, 1
  store i64 %.fca.0.extract81, ptr %66, align 8
  %.sroa.284.0..sroa_idx = getelementptr inbounds i8, ptr %66, i64 8
  store i32 %.fca.1.extract82, ptr %.sroa.284.0..sroa_idx, align 8
  %163 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract77 = extractvalue { i64, i32 } %163, 0
  %.fca.1.extract78 = extractvalue { i64, i32 } %163, 1
  store i64 %.fca.0.extract77, ptr %65, align 8
  %.sroa.280.0..sroa_idx = getelementptr inbounds i8, ptr %65, i64 8
  store i32 %.fca.1.extract78, ptr %.sroa.280.0..sroa_idx, align 8
  %164 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract73 = extractvalue { i64, i32 } %164, 0
  %.fca.1.extract74 = extractvalue { i64, i32 } %164, 1
  store i64 %.fca.0.extract73, ptr %64, align 8
  %.sroa.276.0..sroa_idx = getelementptr inbounds i8, ptr %64, i64 8
  store i32 %.fca.1.extract74, ptr %.sroa.276.0..sroa_idx, align 8
  %165 = load ptr, ptr %0, align 8, !tbaa !9
  %166 = load ptr, ptr %165, align 8
  call void %166(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %61, ptr noundef nonnull align 4 dereferenceable(12) %64, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %66) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %65) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %64) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %63) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %62) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %61) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %67) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %68) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %69) #4
  %167 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract68 = extractvalue { i64, i32 } %167, 0
  %.fca.1.extract69 = extractvalue { i64, i32 } %167, 1
  store i64 %.fca.0.extract68, ptr %69, align 8
  %.sroa.271.0..sroa_idx = getelementptr inbounds i8, ptr %69, i64 8
  store i32 %.fca.1.extract69, ptr %.sroa.271.0..sroa_idx, align 8
  %168 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %69, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract64 = extractvalue { i64, i32 } %168, 0
  %.fca.1.extract65 = extractvalue { i64, i32 } %168, 1
  store i64 %.fca.0.extract64, ptr %68, align 8
  %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %68, i64 8
  store i32 %.fca.1.extract65, ptr %.sroa.267.0..sroa_idx, align 8
  %169 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %68, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract60 = extractvalue { i64, i32 } %169, 0
  %.fca.1.extract61 = extractvalue { i64, i32 } %169, 1
  store i64 %.fca.0.extract60, ptr %67, align 8
  %.sroa.263.0..sroa_idx = getelementptr inbounds i8, ptr %67, i64 8
  store i32 %.fca.1.extract61, ptr %.sroa.263.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %70) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %71) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %72) #4
  %170 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract56 = extractvalue { i64, i32 } %170, 0
  %.fca.1.extract57 = extractvalue { i64, i32 } %170, 1
  store i64 %.fca.0.extract56, ptr %72, align 8
  %.sroa.259.0..sroa_idx = getelementptr inbounds i8, ptr %72, i64 8
  store i32 %.fca.1.extract57, ptr %.sroa.259.0..sroa_idx, align 8
  %171 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %72, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract52 = extractvalue { i64, i32 } %171, 0
  %.fca.1.extract53 = extractvalue { i64, i32 } %171, 1
  store i64 %.fca.0.extract52, ptr %71, align 8
  %.sroa.255.0..sroa_idx = getelementptr inbounds i8, ptr %71, i64 8
  store i32 %.fca.1.extract53, ptr %.sroa.255.0..sroa_idx, align 8
  %172 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %71, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract48 = extractvalue { i64, i32 } %172, 0
  %.fca.1.extract49 = extractvalue { i64, i32 } %172, 1
  store i64 %.fca.0.extract48, ptr %70, align 8
  %.sroa.251.0..sroa_idx = getelementptr inbounds i8, ptr %70, i64 8
  store i32 %.fca.1.extract49, ptr %.sroa.251.0..sroa_idx, align 8
  %173 = load ptr, ptr %0, align 8, !tbaa !9
  %174 = load ptr, ptr %173, align 8
  call void %174(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %67, ptr noundef nonnull align 4 dereferenceable(12) %70, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %72) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %71) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %70) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %69) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %68) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %67) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %73) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %74) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %75) #4
  %175 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract43 = extractvalue { i64, i32 } %175, 0
  %.fca.1.extract44 = extractvalue { i64, i32 } %175, 1
  store i64 %.fca.0.extract43, ptr %75, align 8
  %.sroa.246.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8
  store i32 %.fca.1.extract44, ptr %.sroa.246.0..sroa_idx, align 8
  %176 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %75, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract39 = extractvalue { i64, i32 } %176, 0
  %.fca.1.extract40 = extractvalue { i64, i32 } %176, 1
  store i64 %.fca.0.extract39, ptr %74, align 8
  %.sroa.242.0..sroa_idx = getelementptr inbounds i8, ptr %74, i64 8
  store i32 %.fca.1.extract40, ptr %.sroa.242.0..sroa_idx, align 8
  %177 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %74, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract35 = extractvalue { i64, i32 } %177, 0
  %.fca.1.extract36 = extractvalue { i64, i32 } %177, 1
  store i64 %.fca.0.extract35, ptr %73, align 8
  %.sroa.238.0..sroa_idx = getelementptr inbounds i8, ptr %73, i64 8
  store i32 %.fca.1.extract36, ptr %.sroa.238.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %76) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %77) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %78) #4
  %178 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract31 = extractvalue { i64, i32 } %178, 0
  %.fca.1.extract32 = extractvalue { i64, i32 } %178, 1
  store i64 %.fca.0.extract31, ptr %78, align 8
  %.sroa.234.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 8
  store i32 %.fca.1.extract32, ptr %.sroa.234.0..sroa_idx, align 8
  %179 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %78, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract27 = extractvalue { i64, i32 } %179, 0
  %.fca.1.extract28 = extractvalue { i64, i32 } %179, 1
  store i64 %.fca.0.extract27, ptr %77, align 8
  %.sroa.230.0..sroa_idx = getelementptr inbounds i8, ptr %77, i64 8
  store i32 %.fca.1.extract28, ptr %.sroa.230.0..sroa_idx, align 8
  %180 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %77, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract23 = extractvalue { i64, i32 } %180, 0
  %.fca.1.extract24 = extractvalue { i64, i32 } %180, 1
  store i64 %.fca.0.extract23, ptr %76, align 8
  %.sroa.226.0..sroa_idx = getelementptr inbounds i8, ptr %76, i64 8
  store i32 %.fca.1.extract24, ptr %.sroa.226.0..sroa_idx, align 8
  %181 = load ptr, ptr %0, align 8, !tbaa !9
  %182 = load ptr, ptr %181, align 8
  call void %182(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %73, ptr noundef nonnull align 4 dereferenceable(12) %76, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %78) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %77) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %76) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %75) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %74) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %73) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %79) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %80) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %81) #4
  %183 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract18 = extractvalue { i64, i32 } %183, 0
  %.fca.1.extract19 = extractvalue { i64, i32 } %183, 1
  store i64 %.fca.0.extract18, ptr %81, align 8
  %.sroa.221.0..sroa_idx = getelementptr inbounds i8, ptr %81, i64 8
  store i32 %.fca.1.extract19, ptr %.sroa.221.0..sroa_idx, align 8
  %184 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %81, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract14 = extractvalue { i64, i32 } %184, 0
  %.fca.1.extract15 = extractvalue { i64, i32 } %184, 1
  store i64 %.fca.0.extract14, ptr %80, align 8
  %.sroa.217.0..sroa_idx = getelementptr inbounds i8, ptr %80, i64 8
  store i32 %.fca.1.extract15, ptr %.sroa.217.0..sroa_idx, align 8
  %185 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %80, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract10 = extractvalue { i64, i32 } %185, 0
  %.fca.1.extract11 = extractvalue { i64, i32 } %185, 1
  store i64 %.fca.0.extract10, ptr %79, align 8
  %.sroa.213.0..sroa_idx = getelementptr inbounds i8, ptr %79, i64 8
  store i32 %.fca.1.extract11, ptr %.sroa.213.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %82) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %83) #4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %84) #4
  %186 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %11)
  %.fca.0.extract6 = extractvalue { i64, i32 } %186, 0
  %.fca.1.extract7 = extractvalue { i64, i32 } %186, 1
  store i64 %.fca.0.extract6, ptr %84, align 8
  %.sroa.29.0..sroa_idx = getelementptr inbounds i8, ptr %84, i64 8
  store i32 %.fca.1.extract7, ptr %.sroa.29.0..sroa_idx, align 8
  %187 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract2 = extractvalue { i64, i32 } %187, 0
  %.fca.1.extract3 = extractvalue { i64, i32 } %187, 1
  store i64 %.fca.0.extract2, ptr %83, align 8
  %.sroa.25.0..sroa_idx = getelementptr inbounds i8, ptr %83, i64 8
  store i32 %.fca.1.extract3, ptr %.sroa.25.0..sroa_idx, align 8
  %188 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %83, ptr noundef nonnull align 4 dereferenceable(12) %9)
  %.fca.0.extract = extractvalue { i64, i32 } %188, 0
  %.fca.1.extract = extractvalue { i64, i32 } %188, 1
  store i64 %.fca.0.extract, ptr %82, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %82, i64 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %189 = load ptr, ptr %0, align 8, !tbaa !9
  %190 = load ptr, ptr %189, align 8
  call void %190(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 4 dereferenceable(12) %79, ptr noundef nonnull align 4 dereferenceable(12) %82, i32 %4)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %84) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %83) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %82) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %81) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %80) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %79) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #4
  ret void
}

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZN5GMath4ZeroEv() local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12), i32, i32, i32) unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #3 align 2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #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, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,TailCallElimPass