; LLVM IR from devlinzhou/deterministic_physics :: UnrealDemo/Source/UnrealDemo/gphysics/src/collision (glacier_collision_box)

; 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.GTransform_QT = type { %class.GQuaternion, %class.GVector3 }
%class.GQuaternion = type { %class.GFloat, %class.GFloat, %class.GFloat, %class.GFloat }
%class.GFloat = type { i32 }
%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GMatrix3 = type { [3 x [3 x %class.GFloat]] }
%class.GShapeBox = type { %class.GShapeConvexBase.base, %class.GVector3 }
%class.GShapeConvexBase.base = type <{ ptr, %class.GShapeBase }>
%class.GShapeBase = type { i32 }

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK13GTransform_QTmlERKS_(ptr dead_on_unwind noalias writable sret(%class.GTransform_QT) align 4, ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind noalias writable sret(%class.GTransform_QT) align 4, ptr noundef nonnull align 4 dereferenceable(28)) #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36), i32 noundef) #2 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) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath3AbsE6GFloat(i32) #1 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: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN8GVector34ZeroEv() #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14GCollision_Box15Box_Box_ContactERK9GShapeBoxRK13GTransform_QTS2_S5_P17GCollisionContact(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(28) %3, ptr noundef %4) #4 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %class.GTransform_QT, align 4
  %15 = alloca %class.GTransform_QT, align 4
  %16 = alloca %class.GMatrix3, align 4
  %17 = alloca %class.GVector3, align 4
  %18 = alloca %class.GVector3, align 4
  %19 = alloca %class.GVector3, align 4
  %20 = alloca ptr, align 8
  %21 = alloca [15 x %class.GFloat], align 16
  %22 = alloca [15 x %class.GVector3], align 16
  %23 = alloca [15 x %class.GVector3], align 16
  %24 = alloca [15 x %class.GVector3], align 16
  %25 = alloca %class.GVector3, align 4
  %26 = alloca %class.GFloat, align 4
  %27 = alloca %class.GFloat, align 4
  %28 = alloca %class.GFloat, align 4
  %29 = alloca %class.GFloat, align 4
  %30 = alloca %class.GFloat, align 4
  %31 = alloca %class.GFloat, align 4
  %32 = alloca %class.GFloat, align 4
  %33 = alloca %class.GFloat, align 4
  %34 = alloca %class.GFloat, align 4
  %35 = alloca %class.GFloat, align 4
  %36 = alloca %class.GFloat, align 4
  %37 = alloca %class.GFloat, align 4
  %38 = alloca i32, align 4
  %39 = alloca %class.GVector3, align 4
  %40 = alloca %class.GFloat, align 4
  %41 = alloca %class.GFloat, align 4
  %42 = alloca %class.GFloat, align 4
  %43 = alloca %class.GFloat, align 4
  %44 = alloca %class.GFloat, align 4
  %45 = alloca %class.GVector3, align 4
  %46 = alloca %class.GFloat, align 4
  %47 = alloca %class.GFloat, align 4
  %48 = alloca %class.GFloat, align 4
  %49 = alloca %class.GFloat, align 4
  %50 = alloca %class.GFloat, align 4
  %51 = alloca %class.GFloat, align 4
  %52 = alloca %class.GFloat, align 4
  %53 = alloca %class.GFloat, align 4
  %54 = alloca %class.GFloat, align 4
  %55 = alloca %class.GFloat, align 4
  %56 = alloca %class.GFloat, align 4
  %57 = alloca %class.GFloat, align 4
  %58 = alloca %class.GVector3, align 4
  %59 = alloca %class.GFloat, align 4
  %60 = alloca %class.GFloat, align 4
  %61 = alloca %class.GFloat, align 4
  %62 = alloca %class.GFloat, align 4
  %63 = alloca %class.GFloat, align 4
  %64 = alloca %class.GVector3, align 4
  %65 = alloca %class.GFloat, align 4
  %66 = alloca %class.GFloat, align 4
  %67 = alloca %class.GFloat, align 4
  %68 = alloca %class.GFloat, align 4
  %69 = alloca %class.GFloat, align 4
  %70 = alloca %class.GFloat, align 4
  %71 = alloca %class.GFloat, align 4
  %72 = alloca %class.GFloat, align 4
  %73 = alloca %class.GFloat, align 4
  %74 = alloca %class.GFloat, align 4
  %75 = alloca %class.GFloat, align 4
  %76 = alloca %class.GFloat, align 4
  %77 = alloca %class.GVector3, align 4
  %78 = alloca %class.GFloat, align 4
  %79 = alloca %class.GFloat, align 4
  %80 = alloca %class.GFloat, align 4
  %81 = alloca %class.GFloat, align 4
  %82 = alloca %class.GFloat, align 4
  %83 = alloca ptr, align 8
  %84 = alloca %class.GVector3, align 4
  %85 = alloca %class.GVector3, align 4
  %86 = alloca { i64, i32 }, align 8
  %87 = alloca { i64, i32 }, align 8
  %88 = alloca %class.GVector3, align 4
  %89 = alloca %class.GFloat, align 4
  %90 = alloca %class.GFloat, align 4
  %91 = alloca %class.GFloat, align 4
  %92 = alloca %class.GFloat, align 4
  %93 = alloca %class.GFloat, align 4
  %94 = alloca %class.GFloat, align 4
  %95 = alloca %class.GFloat, align 4
  %96 = alloca %class.GFloat, align 4
  %97 = alloca %class.GFloat, align 4
  %98 = alloca %class.GVector3, align 4
  %99 = alloca %class.GVector3, align 4
  %100 = alloca %class.GFloat, align 4
  %101 = alloca %class.GFloat, align 4
  %102 = alloca %class.GFloat, align 4
  %103 = alloca %class.GFloat, align 4
  %104 = alloca %class.GFloat, align 4
  %105 = alloca { i64, i32 }, align 8
  %106 = alloca %class.GVector3, align 4
  %107 = alloca %class.GFloat, align 4
  %108 = alloca %class.GFloat, align 4
  %109 = alloca %class.GFloat, align 4
  %110 = alloca %class.GFloat, align 4
  %111 = alloca %class.GFloat, align 4
  %112 = alloca %class.GFloat, align 4
  %113 = alloca %class.GFloat, align 4
  %114 = alloca %class.GFloat, align 4
  %115 = alloca %class.GFloat, align 4
  %116 = alloca %class.GVector3, align 4
  %117 = alloca %class.GVector3, align 4
  %118 = alloca %class.GFloat, align 4
  %119 = alloca %class.GFloat, align 4
  %120 = alloca %class.GFloat, align 4
  %121 = alloca %class.GFloat, align 4
  %122 = alloca %class.GFloat, align 4
  %123 = alloca { i64, i32 }, align 8
  %124 = alloca %class.GVector3, align 4
  %125 = alloca %class.GFloat, align 4
  %126 = alloca %class.GFloat, align 4
  %127 = alloca %class.GFloat, align 4
  %128 = alloca %class.GFloat, align 4
  %129 = alloca %class.GFloat, align 4
  %130 = alloca %class.GFloat, align 4
  %131 = alloca %class.GFloat, align 4
  %132 = alloca %class.GFloat, align 4
  %133 = alloca %class.GFloat, align 4
  %134 = alloca %class.GVector3, align 4
  %135 = alloca %class.GVector3, align 4
  %136 = alloca %class.GFloat, align 4
  %137 = alloca %class.GFloat, align 4
  %138 = alloca %class.GFloat, align 4
  %139 = alloca %class.GFloat, align 4
  %140 = alloca %class.GFloat, align 4
  %141 = alloca { i64, i32 }, align 8
  %142 = alloca %class.GVector3, align 4
  %143 = alloca %class.GFloat, align 4
  %144 = alloca { i64, i32 }, align 8
  %145 = alloca %class.GVector3, align 4
  %146 = alloca %class.GFloat, align 4
  %147 = alloca { i64, i32 }, align 8
  %148 = alloca %class.GVector3, align 4
  %149 = alloca %class.GFloat, align 4
  %150 = alloca { i64, i32 }, align 8
  %151 = alloca %class.GVector3, align 4
  %152 = alloca %class.GFloat, align 4
  %153 = alloca { i64, i32 }, align 8
  %154 = alloca %class.GVector3, align 4
  %155 = alloca %class.GFloat, align 4
  %156 = alloca { i64, i32 }, align 8
  %157 = alloca %class.GVector3, align 4
  %158 = alloca %class.GFloat, align 4
  %159 = alloca { i64, i32 }, align 8
  %160 = alloca %class.GVector3, align 4
  %161 = alloca %class.GFloat, align 4
  %162 = alloca { i64, i32 }, align 8
  %163 = alloca %class.GVector3, align 4
  %164 = alloca %class.GFloat, align 4
  %165 = alloca { i64, i32 }, align 8
  %166 = alloca %class.GVector3, align 4
  %167 = alloca %class.GFloat, align 4
  %168 = alloca { i64, i32 }, align 8
  %169 = alloca %class.GTransform_QT, align 4
  %170 = alloca %class.GVector3, align 4
  %171 = alloca %class.GFloat, align 4
  %172 = alloca { i64, i32 }, align 8
  %173 = alloca %class.GFloat, align 4
  %174 = alloca %class.GFloat, align 4
  %175 = alloca %class.GFloat, align 4
  %176 = alloca %class.GVector3, align 4
  %177 = alloca %class.GFloat, align 4
  %178 = alloca { i64, i32 }, align 8
  %179 = alloca %class.GFloat, align 4
  %180 = alloca %class.GVector3, align 4
  %181 = alloca %class.GFloat, align 4
  %182 = alloca { i64, i32 }, align 8
  %183 = alloca %class.GFloat, align 4
  %184 = alloca %class.GFloat, align 4
  %185 = alloca %class.GFloat, align 4
  %186 = alloca %class.GFloat, align 4
  %187 = alloca %class.GFloat, align 4
  %188 = alloca %class.GFloat, align 4
  %189 = alloca %class.GFloat, align 4
  %190 = alloca %class.GFloat, align 4
  %191 = alloca %class.GVector3, align 4
  %192 = alloca { i64, i32 }, align 8
  %193 = alloca %class.GVector3, align 4
  %194 = alloca %class.GVector3, align 4
  %195 = alloca { i64, i32 }, align 8
  %196 = alloca %class.GVector3, align 4
  %197 = alloca %class.GFloat, align 4
  %198 = alloca { i64, i32 }, align 8
  %199 = alloca { i64, i32 }, align 8
  %200 = alloca %class.GVector3, align 4
  %201 = alloca %class.GFloat, align 4
  %202 = alloca { i64, i32 }, align 8
  %203 = alloca %class.GFloat, align 4
  %204 = alloca %class.GFloat, align 4
  %205 = alloca %class.GFloat, align 4
  %206 = alloca %class.GVector3, align 4
  %207 = alloca %class.GFloat, align 4
  %208 = alloca { i64, i32 }, align 8
  %209 = alloca %class.GFloat, align 4
  %210 = alloca %class.GVector3, align 4
  %211 = alloca %class.GFloat, align 4
  %212 = alloca { i64, i32 }, align 8
  %213 = alloca %class.GFloat, align 4
  %214 = alloca %class.GFloat, align 4
  %215 = alloca %class.GFloat, align 4
  %216 = alloca %class.GFloat, align 4
  %217 = alloca %class.GFloat, align 4
  %218 = alloca %class.GFloat, align 4
  %219 = alloca %class.GFloat, align 4
  %220 = alloca %class.GFloat, align 4
  %221 = alloca %class.GVector3, align 4
  %222 = alloca { i64, i32 }, align 8
  %223 = alloca %class.GVector3, align 4
  %224 = alloca %class.GVector3, align 4
  %225 = alloca { i64, i32 }, align 8
  %226 = alloca %class.GVector3, align 4
  %227 = alloca %class.GFloat, align 4
  %228 = alloca { i64, i32 }, align 8
  %229 = alloca { i64, i32 }, align 8
  %230 = alloca %class.GVector3, align 4
  %231 = alloca %class.GFloat, align 4
  %232 = alloca { i64, i32 }, align 8
  %233 = alloca %class.GFloat, align 4
  %234 = alloca %class.GFloat, align 4
  %235 = alloca %class.GFloat, align 4
  %236 = alloca %class.GVector3, align 4
  %237 = alloca %class.GFloat, align 4
  %238 = alloca { i64, i32 }, align 8
  %239 = alloca %class.GFloat, align 4
  %240 = alloca %class.GVector3, align 4
  %241 = alloca %class.GFloat, align 4
  %242 = alloca { i64, i32 }, align 8
  %243 = alloca %class.GFloat, align 4
  %244 = alloca %class.GFloat, align 4
  %245 = alloca %class.GFloat, align 4
  %246 = alloca %class.GFloat, align 4
  %247 = alloca %class.GFloat, align 4
  %248 = alloca %class.GFloat, align 4
  %249 = alloca %class.GFloat, align 4
  %250 = alloca %class.GFloat, align 4
  %251 = alloca %class.GVector3, align 4
  %252 = alloca { i64, i32 }, align 8
  %253 = alloca %class.GVector3, align 4
  %254 = alloca %class.GVector3, align 4
  %255 = alloca { i64, i32 }, align 8
  %256 = alloca %class.GVector3, align 4
  %257 = alloca %class.GFloat, align 4
  %258 = alloca { i64, i32 }, align 8
  %259 = alloca { i64, i32 }, align 8
  %260 = alloca %class.GVector3, align 4
  %261 = alloca %class.GFloat, align 4
  %262 = alloca { i64, i32 }, align 8
  %263 = alloca %class.GFloat, align 4
  %264 = alloca %class.GFloat, align 4
  %265 = alloca %class.GFloat, align 4
  %266 = alloca %class.GVector3, align 4
  %267 = alloca %class.GFloat, align 4
  %268 = alloca { i64, i32 }, align 8
  %269 = alloca %class.GFloat, align 4
  %270 = alloca %class.GVector3, align 4
  %271 = alloca %class.GFloat, align 4
  %272 = alloca { i64, i32 }, align 8
  %273 = alloca %class.GFloat, align 4
  %274 = alloca %class.GFloat, align 4
  %275 = alloca %class.GFloat, align 4
  %276 = alloca %class.GFloat, align 4
  %277 = alloca %class.GFloat, align 4
  %278 = alloca %class.GFloat, align 4
  %279 = alloca %class.GFloat, align 4
  %280 = alloca %class.GFloat, align 4
  %281 = alloca %class.GVector3, align 4
  %282 = alloca { i64, i32 }, align 8
  %283 = alloca %class.GVector3, align 4
  %284 = alloca %class.GVector3, align 4
  %285 = alloca { i64, i32 }, align 8
  %286 = alloca %class.GVector3, align 4
  %287 = alloca %class.GFloat, align 4
  %288 = alloca { i64, i32 }, align 8
  %289 = alloca { i64, i32 }, align 8
  %290 = alloca %class.GVector3, align 4
  %291 = alloca %class.GFloat, align 4
  %292 = alloca { i64, i32 }, align 8
  %293 = alloca %class.GFloat, align 4
  %294 = alloca %class.GFloat, align 4
  %295 = alloca %class.GFloat, align 4
  %296 = alloca %class.GVector3, align 4
  %297 = alloca %class.GFloat, align 4
  %298 = alloca { i64, i32 }, align 8
  %299 = alloca %class.GFloat, align 4
  %300 = alloca %class.GVector3, align 4
  %301 = alloca %class.GFloat, align 4
  %302 = alloca { i64, i32 }, align 8
  %303 = alloca %class.GFloat, align 4
  %304 = alloca %class.GFloat, align 4
  %305 = alloca %class.GFloat, align 4
  %306 = alloca %class.GFloat, align 4
  %307 = alloca %class.GFloat, align 4
  %308 = alloca %class.GFloat, align 4
  %309 = alloca %class.GFloat, align 4
  %310 = alloca %class.GFloat, align 4
  %311 = alloca %class.GVector3, align 4
  %312 = alloca { i64, i32 }, align 8
  %313 = alloca %class.GVector3, align 4
  %314 = alloca %class.GVector3, align 4
  %315 = alloca { i64, i32 }, align 8
  %316 = alloca %class.GVector3, align 4
  %317 = alloca %class.GFloat, align 4
  %318 = alloca { i64, i32 }, align 8
  %319 = alloca { i64, i32 }, align 8
  %320 = alloca %class.GVector3, align 4
  %321 = alloca %class.GFloat, align 4
  %322 = alloca { i64, i32 }, align 8
  %323 = alloca %class.GFloat, align 4
  %324 = alloca %class.GFloat, align 4
  %325 = alloca %class.GFloat, align 4
  %326 = alloca %class.GVector3, align 4
  %327 = alloca %class.GFloat, align 4
  %328 = alloca { i64, i32 }, align 8
  %329 = alloca %class.GFloat, align 4
  %330 = alloca %class.GVector3, align 4
  %331 = alloca %class.GFloat, align 4
  %332 = alloca { i64, i32 }, align 8
  %333 = alloca %class.GFloat, align 4
  %334 = alloca %class.GFloat, align 4
  %335 = alloca %class.GFloat, align 4
  %336 = alloca %class.GFloat, align 4
  %337 = alloca %class.GFloat, align 4
  %338 = alloca %class.GFloat, align 4
  %339 = alloca %class.GFloat, align 4
  %340 = alloca %class.GFloat, align 4
  %341 = alloca %class.GVector3, align 4
  %342 = alloca { i64, i32 }, align 8
  %343 = alloca %class.GVector3, align 4
  %344 = alloca %class.GVector3, align 4
  %345 = alloca { i64, i32 }, align 8
  %346 = alloca %class.GVector3, align 4
  %347 = alloca %class.GFloat, align 4
  %348 = alloca { i64, i32 }, align 8
  %349 = alloca { i64, i32 }, align 8
  %350 = alloca %class.GVector3, align 4
  %351 = alloca %class.GFloat, align 4
  %352 = alloca { i64, i32 }, align 8
  %353 = alloca %class.GFloat, align 4
  %354 = alloca %class.GFloat, align 4
  %355 = alloca %class.GFloat, align 4
  %356 = alloca %class.GVector3, align 4
  %357 = alloca %class.GFloat, align 4
  %358 = alloca { i64, i32 }, align 8
  %359 = alloca %class.GFloat, align 4
  %360 = alloca %class.GVector3, align 4
  %361 = alloca %class.GFloat, align 4
  %362 = alloca { i64, i32 }, align 8
  %363 = alloca %class.GFloat, align 4
  %364 = alloca %class.GFloat, align 4
  %365 = alloca %class.GFloat, align 4
  %366 = alloca %class.GFloat, align 4
  %367 = alloca %class.GFloat, align 4
  %368 = alloca %class.GFloat, align 4
  %369 = alloca %class.GFloat, align 4
  %370 = alloca %class.GFloat, align 4
  %371 = alloca %class.GVector3, align 4
  %372 = alloca { i64, i32 }, align 8
  %373 = alloca %class.GVector3, align 4
  %374 = alloca %class.GVector3, align 4
  %375 = alloca { i64, i32 }, align 8
  %376 = alloca %class.GVector3, align 4
  %377 = alloca %class.GFloat, align 4
  %378 = alloca { i64, i32 }, align 8
  %379 = alloca { i64, i32 }, align 8
  %380 = alloca %class.GVector3, align 4
  %381 = alloca %class.GFloat, align 4
  %382 = alloca { i64, i32 }, align 8
  %383 = alloca %class.GFloat, align 4
  %384 = alloca %class.GFloat, align 4
  %385 = alloca %class.GFloat, align 4
  %386 = alloca %class.GVector3, align 4
  %387 = alloca %class.GFloat, align 4
  %388 = alloca { i64, i32 }, align 8
  %389 = alloca %class.GFloat, align 4
  %390 = alloca %class.GVector3, align 4
  %391 = alloca %class.GFloat, align 4
  %392 = alloca { i64, i32 }, align 8
  %393 = alloca %class.GFloat, align 4
  %394 = alloca %class.GFloat, align 4
  %395 = alloca %class.GFloat, align 4
  %396 = alloca %class.GFloat, align 4
  %397 = alloca %class.GFloat, align 4
  %398 = alloca %class.GFloat, align 4
  %399 = alloca %class.GFloat, align 4
  %400 = alloca %class.GFloat, align 4
  %401 = alloca %class.GVector3, align 4
  %402 = alloca { i64, i32 }, align 8
  %403 = alloca %class.GVector3, align 4
  %404 = alloca %class.GVector3, align 4
  %405 = alloca { i64, i32 }, align 8
  %406 = alloca %class.GVector3, align 4
  %407 = alloca %class.GFloat, align 4
  %408 = alloca { i64, i32 }, align 8
  %409 = alloca { i64, i32 }, align 8
  %410 = alloca %class.GVector3, align 4
  %411 = alloca %class.GFloat, align 4
  %412 = alloca { i64, i32 }, align 8
  %413 = alloca %class.GFloat, align 4
  %414 = alloca %class.GFloat, align 4
  %415 = alloca %class.GFloat, align 4
  %416 = alloca %class.GVector3, align 4
  %417 = alloca %class.GFloat, align 4
  %418 = alloca { i64, i32 }, align 8
  %419 = alloca %class.GFloat, align 4
  %420 = alloca %class.GVector3, align 4
  %421 = alloca %class.GFloat, align 4
  %422 = alloca { i64, i32 }, align 8
  %423 = alloca %class.GFloat, align 4
  %424 = alloca %class.GFloat, align 4
  %425 = alloca %class.GFloat, align 4
  %426 = alloca %class.GFloat, align 4
  %427 = alloca %class.GFloat, align 4
  %428 = alloca %class.GFloat, align 4
  %429 = alloca %class.GFloat, align 4
  %430 = alloca %class.GFloat, align 4
  %431 = alloca %class.GVector3, align 4
  %432 = alloca { i64, i32 }, align 8
  %433 = alloca %class.GVector3, align 4
  %434 = alloca %class.GVector3, align 4
  %435 = alloca { i64, i32 }, align 8
  %436 = alloca %class.GVector3, align 4
  %437 = alloca %class.GFloat, align 4
  %438 = alloca { i64, i32 }, align 8
  %439 = alloca { i64, i32 }, align 8
  %440 = alloca %class.GFloat, align 4
  %441 = alloca i32, align 4
  %442 = alloca i32, align 4
  %443 = alloca %class.GFloat, align 4
  %444 = alloca %class.GFloat, align 4
  %445 = alloca %class.GVector3, align 4
  %446 = alloca %class.GVector3, align 4
  %447 = alloca { i64, i32 }, align 8
  %448 = alloca { i64, i32 }, align 8
  %449 = alloca %class.GVector3, align 4
  %450 = alloca %class.GVector3, align 4
  %451 = alloca %class.GVector3, align 4
  %452 = alloca { i64, i32 }, align 8
  %453 = alloca { i64, i32 }, align 8
  %454 = alloca { i64, i32 }, align 8
  %455 = alloca %class.GFloat, align 4
  %456 = alloca %class.GVector3, align 4
  %457 = alloca { i64, i32 }, align 8
  %458 = alloca %class.GVector3, align 4
  %459 = alloca %class.GVector3, align 4
  %460 = alloca %class.GVector3, align 4
  %461 = alloca { i64, i32 }, align 8
  %462 = alloca { i64, i32 }, align 8
  %463 = alloca { i64, i32 }, align 8
  %464 = alloca %class.GFloat, 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
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = getelementptr inbounds %class.GShapeBox, ptr %465, i32 0, i32 1
  store ptr %466, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = getelementptr inbounds %class.GShapeBox, ptr %467, i32 0, i32 1
  store ptr %468, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 28, ptr %14) #7
  %469 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 28, ptr %15) #7
  %470 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind writable sret(%class.GTransform_QT) align 4 %15, ptr noundef nonnull align 4 dereferenceable(28) %470)
  call void @_ZNK13GTransform_QTmlERKS_(ptr dead_on_unwind writable sret(%class.GTransform_QT) align 4 %14, ptr noundef nonnull align 4 dereferenceable(28) %469, ptr noundef nonnull align 4 dereferenceable(28) %15)
  call void @llvm.lifetime.end.p0(i64 28, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr %16) #7
  %471 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 0
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %16, ptr noundef nonnull align 4 dereferenceable(16) %471)
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #7
  %472 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %16, i32 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %472, i64 12, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %18) #7
  %473 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %16, i32 noundef 1)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 %473, i64 12, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %19) #7
  %474 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %16, i32 noundef 2)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %474, i64 12, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %475 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  store ptr %475, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 60, ptr %21) #7
  %476 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i32 0, i32 0
  %477 = getelementptr inbounds %class.GFloat, ptr %476, i64 15
  br label %478

478:                                              ; preds = %478, %5
  %479 = phi ptr [ %476, %5 ], [ %480, %478 ]
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %479)
  %480 = getelementptr inbounds %class.GFloat, ptr %479, i64 1
  %481 = icmp eq ptr %480, %477
  br i1 %481, label %482, label %478

482:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 180, ptr %22) #7
  %483 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i32 0, i32 0
  %484 = getelementptr inbounds %class.GVector3, ptr %483, i64 15
  br label %485

485:                                              ; preds = %485, %482
  %486 = phi ptr [ %483, %482 ], [ %487, %485 ]
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %486)
  %487 = getelementptr inbounds %class.GVector3, ptr %486, i64 1
  %488 = icmp eq ptr %487, %484
  br i1 %488, label %489, label %485

489:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 180, ptr %23) #7
  %490 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i32 0, i32 0
  %491 = getelementptr inbounds %class.GVector3, ptr %490, i64 15
  br label %492

492:                                              ; preds = %492, %489
  %493 = phi ptr [ %490, %489 ], [ %494, %492 ]
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %493)
  %494 = getelementptr inbounds %class.GVector3, ptr %493, i64 1
  %495 = icmp eq ptr %494, %491
  br i1 %495, label %496, label %492

496:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 180, ptr %24) #7
  %497 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i32 0, i32 0
  %498 = getelementptr inbounds %class.GVector3, ptr %497, i64 15
  br label %499

499:                                              ; preds = %499, %496
  %500 = phi ptr [ %497, %496 ], [ %501, %499 ]
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %500)
  %501 = getelementptr inbounds %class.GVector3, ptr %500, i64 1
  %502 = icmp eq ptr %501, %498
  br i1 %502, label %503, label %499

503:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #7
  %504 = getelementptr inbounds %class.GVector3, ptr %17, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %504, i64 4, i1 false), !tbaa.struct !12
  %505 = getelementptr inbounds %class.GFloat, ptr %27, i32 0, i32 0
  %506 = load i32, ptr %505, align 4
  %507 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %506)
  %508 = getelementptr inbounds %class.GFloat, ptr %26, i32 0, i32 0
  store i32 %507, ptr %508, align 4
  %509 = getelementptr inbounds %class.GVector3, ptr %18, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %509, i64 4, i1 false), !tbaa.struct !12
  %510 = getelementptr inbounds %class.GFloat, ptr %29, i32 0, i32 0
  %511 = load i32, ptr %510, align 4
  %512 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %511)
  %513 = getelementptr inbounds %class.GFloat, ptr %28, i32 0, i32 0
  store i32 %512, ptr %513, align 4
  %514 = getelementptr inbounds %class.GVector3, ptr %19, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %514, i64 4, i1 false), !tbaa.struct !12
  %515 = getelementptr inbounds %class.GFloat, ptr %31, i32 0, i32 0
  %516 = load i32, ptr %515, align 4
  %517 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %516)
  %518 = getelementptr inbounds %class.GFloat, ptr %30, i32 0, i32 0
  store i32 %517, ptr %518, align 4
  %519 = getelementptr inbounds %class.GFloat, ptr %26, i32 0, i32 0
  %520 = load i32, ptr %519, align 4
  %521 = getelementptr inbounds %class.GFloat, ptr %28, i32 0, i32 0
  %522 = load i32, ptr %521, align 4
  %523 = getelementptr inbounds %class.GFloat, ptr %30, i32 0, i32 0
  %524 = load i32, ptr %523, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %25, i32 %520, i32 %522, i32 %524)
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = getelementptr inbounds %class.GVector3, ptr %525, i32 0, i32 0
  %527 = load ptr, ptr %13, align 8, !tbaa !5
  %528 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %25, ptr noundef nonnull align 4 dereferenceable(12) %527)
  %529 = getelementptr inbounds %class.GFloat, ptr %34, i32 0, i32 0
  store i32 %528, ptr %529, align 4
  %530 = getelementptr inbounds %class.GFloat, ptr %34, i32 0, i32 0
  %531 = load i32, ptr %530, align 4
  %532 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %526, i32 %531)
  %533 = getelementptr inbounds %class.GFloat, ptr %33, i32 0, i32 0
  store i32 %532, ptr %533, align 4
  %534 = load ptr, ptr %20, align 8, !tbaa !5
  %535 = getelementptr inbounds %class.GVector3, ptr %534, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %535, i64 4, i1 false), !tbaa.struct !12
  %536 = getelementptr inbounds %class.GFloat, ptr %36, i32 0, i32 0
  %537 = load i32, ptr %536, align 4
  %538 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %537)
  %539 = getelementptr inbounds %class.GFloat, ptr %35, i32 0, i32 0
  store i32 %538, ptr %539, align 4
  %540 = getelementptr inbounds %class.GFloat, ptr %35, i32 0, i32 0
  %541 = load i32, ptr %540, align 4
  %542 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 %541)
  %543 = getelementptr inbounds %class.GFloat, ptr %32, i32 0, i32 0
  store i32 %542, ptr %543, align 4
  %544 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %544, ptr align 4 %32, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  %545 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 0
  %546 = call i32 @_ZN5GMath4ZeroEv()
  %547 = getelementptr inbounds %class.GFloat, ptr %37, i32 0, i32 0
  store i32 %546, ptr %547, align 4
  %548 = getelementptr inbounds %class.GFloat, ptr %37, i32 0, i32 0
  %549 = load i32, ptr %548, align 4
  %550 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %545, i32 %549)
  br i1 %550, label %551, label %552

551:                                              ; preds = %503
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1869

552:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 12, ptr %39) #7
  %553 = load ptr, ptr %20, align 8, !tbaa !5
  %554 = getelementptr inbounds %class.GVector3, ptr %553, i32 0, i32 0
  %555 = call i32 @_ZN5GMath4ZeroEv()
  %556 = getelementptr inbounds %class.GFloat, ptr %41, i32 0, i32 0
  store i32 %555, ptr %556, align 4
  %557 = getelementptr inbounds %class.GFloat, ptr %41, i32 0, i32 0
  %558 = load i32, ptr %557, align 4
  %559 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %554, i32 %558)
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  br i1 %559, label %560, label %563

560:                                              ; preds = %552
  %561 = call i32 @_ZN5GMath3OneEv()
  %562 = getelementptr inbounds %class.GFloat, ptr %40, i32 0, i32 0
  store i32 %561, ptr %562, align 4
  br label %568

563:                                              ; preds = %552
  %564 = call i32 @_ZN5GMath3OneEv()
  %565 = getelementptr inbounds %class.GFloat, ptr %42, i32 0, i32 0
  store i32 %564, ptr %565, align 4
  %566 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %42)
  %567 = getelementptr inbounds %class.GFloat, ptr %40, i32 0, i32 0
  store i32 %566, ptr %567, align 4
  br label %568

568:                                              ; preds = %563, %560
  %569 = call i32 @_ZN5GMath4ZeroEv()
  %570 = getelementptr inbounds %class.GFloat, ptr %43, i32 0, i32 0
  store i32 %569, ptr %570, align 4
  %571 = call i32 @_ZN5GMath4ZeroEv()
  %572 = getelementptr inbounds %class.GFloat, ptr %44, i32 0, i32 0
  store i32 %571, ptr %572, align 4
  %573 = getelementptr inbounds %class.GFloat, ptr %40, i32 0, i32 0
  %574 = load i32, ptr %573, align 4
  %575 = getelementptr inbounds %class.GFloat, ptr %43, i32 0, i32 0
  %576 = load i32, ptr %575, align 4
  %577 = getelementptr inbounds %class.GFloat, ptr %44, i32 0, i32 0
  %578 = load i32, ptr %577, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %39, i32 %574, i32 %576, i32 %578)
  %579 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 0
  %580 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %579, ptr noundef nonnull align 4 dereferenceable(12) %39)
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #7
  %581 = getelementptr inbounds %class.GVector3, ptr %17, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 4 %581, i64 4, i1 false), !tbaa.struct !12
  %582 = getelementptr inbounds %class.GFloat, ptr %47, i32 0, i32 0
  %583 = load i32, ptr %582, align 4
  %584 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %583)
  %585 = getelementptr inbounds %class.GFloat, ptr %46, i32 0, i32 0
  store i32 %584, ptr %585, align 4
  %586 = getelementptr inbounds %class.GVector3, ptr %18, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 4 %586, i64 4, i1 false), !tbaa.struct !12
  %587 = getelementptr inbounds %class.GFloat, ptr %49, i32 0, i32 0
  %588 = load i32, ptr %587, align 4
  %589 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %588)
  %590 = getelementptr inbounds %class.GFloat, ptr %48, i32 0, i32 0
  store i32 %589, ptr %590, align 4
  %591 = getelementptr inbounds %class.GVector3, ptr %19, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 %591, i64 4, i1 false), !tbaa.struct !12
  %592 = getelementptr inbounds %class.GFloat, ptr %51, i32 0, i32 0
  %593 = load i32, ptr %592, align 4
  %594 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %593)
  %595 = getelementptr inbounds %class.GFloat, ptr %50, i32 0, i32 0
  store i32 %594, ptr %595, align 4
  %596 = getelementptr inbounds %class.GFloat, ptr %46, i32 0, i32 0
  %597 = load i32, ptr %596, align 4
  %598 = getelementptr inbounds %class.GFloat, ptr %48, i32 0, i32 0
  %599 = load i32, ptr %598, align 4
  %600 = getelementptr inbounds %class.GFloat, ptr %50, i32 0, i32 0
  %601 = load i32, ptr %600, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %45, i32 %597, i32 %599, i32 %601)
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  %602 = load ptr, ptr %12, align 8, !tbaa !5
  %603 = getelementptr inbounds %class.GVector3, ptr %602, i32 0, i32 1
  %604 = load ptr, ptr %13, align 8, !tbaa !5
  %605 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(12) %604)
  %606 = getelementptr inbounds %class.GFloat, ptr %54, i32 0, i32 0
  store i32 %605, ptr %606, align 4
  %607 = getelementptr inbounds %class.GFloat, ptr %54, i32 0, i32 0
  %608 = load i32, ptr %607, align 4
  %609 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %603, i32 %608)
  %610 = getelementptr inbounds %class.GFloat, ptr %53, i32 0, i32 0
  store i32 %609, ptr %610, align 4
  %611 = load ptr, ptr %20, align 8, !tbaa !5
  %612 = getelementptr inbounds %class.GVector3, ptr %611, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 4 %612, i64 4, i1 false), !tbaa.struct !12
  %613 = getelementptr inbounds %class.GFloat, ptr %56, i32 0, i32 0
  %614 = load i32, ptr %613, align 4
  %615 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %614)
  %616 = getelementptr inbounds %class.GFloat, ptr %55, i32 0, i32 0
  store i32 %615, ptr %616, align 4
  %617 = getelementptr inbounds %class.GFloat, ptr %55, i32 0, i32 0
  %618 = load i32, ptr %617, align 4
  %619 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %53, i32 %618)
  %620 = getelementptr inbounds %class.GFloat, ptr %52, i32 0, i32 0
  store i32 %619, ptr %620, align 4
  %621 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %621, ptr align 4 %52, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  %622 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 1
  %623 = call i32 @_ZN5GMath4ZeroEv()
  %624 = getelementptr inbounds %class.GFloat, ptr %57, i32 0, i32 0
  store i32 %623, ptr %624, align 4
  %625 = getelementptr inbounds %class.GFloat, ptr %57, i32 0, i32 0
  %626 = load i32, ptr %625, align 4
  %627 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %622, i32 %626)
  br i1 %627, label %628, label %629

628:                                              ; preds = %568
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1868

629:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #7
  %630 = call i32 @_ZN5GMath4ZeroEv()
  %631 = getelementptr inbounds %class.GFloat, ptr %59, i32 0, i32 0
  store i32 %630, ptr %631, align 4
  %632 = load ptr, ptr %20, align 8, !tbaa !5
  %633 = getelementptr inbounds %class.GVector3, ptr %632, i32 0, i32 1
  %634 = call i32 @_ZN5GMath4ZeroEv()
  %635 = getelementptr inbounds %class.GFloat, ptr %61, i32 0, i32 0
  store i32 %634, ptr %635, align 4
  %636 = getelementptr inbounds %class.GFloat, ptr %61, i32 0, i32 0
  %637 = load i32, ptr %636, align 4
  %638 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %633, i32 %637)
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  br i1 %638, label %639, label %642

639:                                              ; preds = %629
  %640 = call i32 @_ZN5GMath3OneEv()
  %641 = getelementptr inbounds %class.GFloat, ptr %60, i32 0, i32 0
  store i32 %640, ptr %641, align 4
  br label %647

642:                                              ; preds = %629
  %643 = call i32 @_ZN5GMath3OneEv()
  %644 = getelementptr inbounds %class.GFloat, ptr %62, i32 0, i32 0
  store i32 %643, ptr %644, align 4
  %645 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %62)
  %646 = getelementptr inbounds %class.GFloat, ptr %60, i32 0, i32 0
  store i32 %645, ptr %646, align 4
  br label %647

647:                                              ; preds = %642, %639
  %648 = call i32 @_ZN5GMath4ZeroEv()
  %649 = getelementptr inbounds %class.GFloat, ptr %63, i32 0, i32 0
  store i32 %648, ptr %649, align 4
  %650 = getelementptr inbounds %class.GFloat, ptr %59, i32 0, i32 0
  %651 = load i32, ptr %650, align 4
  %652 = getelementptr inbounds %class.GFloat, ptr %60, i32 0, i32 0
  %653 = load i32, ptr %652, align 4
  %654 = getelementptr inbounds %class.GFloat, ptr %63, i32 0, i32 0
  %655 = load i32, ptr %654, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %58, i32 %651, i32 %653, i32 %655)
  %656 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 1
  %657 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %656, ptr noundef nonnull align 4 dereferenceable(12) %58)
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %64) #7
  %658 = getelementptr inbounds %class.GVector3, ptr %17, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %658, i64 4, i1 false), !tbaa.struct !12
  %659 = getelementptr inbounds %class.GFloat, ptr %66, i32 0, i32 0
  %660 = load i32, ptr %659, align 4
  %661 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %660)
  %662 = getelementptr inbounds %class.GFloat, ptr %65, i32 0, i32 0
  store i32 %661, ptr %662, align 4
  %663 = getelementptr inbounds %class.GVector3, ptr %18, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %663, i64 4, i1 false), !tbaa.struct !12
  %664 = getelementptr inbounds %class.GFloat, ptr %68, i32 0, i32 0
  %665 = load i32, ptr %664, align 4
  %666 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %665)
  %667 = getelementptr inbounds %class.GFloat, ptr %67, i32 0, i32 0
  store i32 %666, ptr %667, align 4
  %668 = getelementptr inbounds %class.GVector3, ptr %19, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %668, i64 4, i1 false), !tbaa.struct !12
  %669 = getelementptr inbounds %class.GFloat, ptr %70, i32 0, i32 0
  %670 = load i32, ptr %669, align 4
  %671 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %670)
  %672 = getelementptr inbounds %class.GFloat, ptr %69, i32 0, i32 0
  store i32 %671, ptr %672, align 4
  %673 = getelementptr inbounds %class.GFloat, ptr %65, i32 0, i32 0
  %674 = load i32, ptr %673, align 4
  %675 = getelementptr inbounds %class.GFloat, ptr %67, i32 0, i32 0
  %676 = load i32, ptr %675, align 4
  %677 = getelementptr inbounds %class.GFloat, ptr %69, i32 0, i32 0
  %678 = load i32, ptr %677, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %64, i32 %674, i32 %676, i32 %678)
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #7
  %679 = load ptr, ptr %12, align 8, !tbaa !5
  %680 = getelementptr inbounds %class.GVector3, ptr %679, i32 0, i32 2
  %681 = load ptr, ptr %13, align 8, !tbaa !5
  %682 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %64, ptr noundef nonnull align 4 dereferenceable(12) %681)
  %683 = getelementptr inbounds %class.GFloat, ptr %73, i32 0, i32 0
  store i32 %682, ptr %683, align 4
  %684 = getelementptr inbounds %class.GFloat, ptr %73, i32 0, i32 0
  %685 = load i32, ptr %684, align 4
  %686 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %680, i32 %685)
  %687 = getelementptr inbounds %class.GFloat, ptr %72, i32 0, i32 0
  store i32 %686, ptr %687, align 4
  %688 = load ptr, ptr %20, align 8, !tbaa !5
  %689 = getelementptr inbounds %class.GVector3, ptr %688, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 4 %689, i64 4, i1 false), !tbaa.struct !12
  %690 = getelementptr inbounds %class.GFloat, ptr %75, i32 0, i32 0
  %691 = load i32, ptr %690, align 4
  %692 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %691)
  %693 = getelementptr inbounds %class.GFloat, ptr %74, i32 0, i32 0
  store i32 %692, ptr %693, align 4
  %694 = getelementptr inbounds %class.GFloat, ptr %74, i32 0, i32 0
  %695 = load i32, ptr %694, align 4
  %696 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %72, i32 %695)
  %697 = getelementptr inbounds %class.GFloat, ptr %71, i32 0, i32 0
  store i32 %696, ptr %697, align 4
  %698 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %698, ptr align 4 %71, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  %699 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 2
  %700 = call i32 @_ZN5GMath4ZeroEv()
  %701 = getelementptr inbounds %class.GFloat, ptr %76, i32 0, i32 0
  store i32 %700, ptr %701, align 4
  %702 = getelementptr inbounds %class.GFloat, ptr %76, i32 0, i32 0
  %703 = load i32, ptr %702, align 4
  %704 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %699, i32 %703)
  br i1 %704, label %705, label %706

705:                                              ; preds = %647
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1867

706:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 12, ptr %77) #7
  %707 = call i32 @_ZN5GMath3OneEv()
  %708 = getelementptr inbounds %class.GFloat, ptr %78, i32 0, i32 0
  store i32 %707, ptr %708, align 4
  %709 = call i32 @_ZN5GMath4ZeroEv()
  %710 = getelementptr inbounds %class.GFloat, ptr %79, i32 0, i32 0
  store i32 %709, ptr %710, align 4
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = getelementptr inbounds %class.GVector3, ptr %711, i32 0, i32 2
  %713 = call i32 @_ZN5GMath4ZeroEv()
  %714 = getelementptr inbounds %class.GFloat, ptr %81, i32 0, i32 0
  store i32 %713, ptr %714, align 4
  %715 = getelementptr inbounds %class.GFloat, ptr %81, i32 0, i32 0
  %716 = load i32, ptr %715, align 4
  %717 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %712, i32 %716)
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #7
  br i1 %717, label %718, label %721

718:                                              ; preds = %706
  %719 = call i32 @_ZN5GMath3OneEv()
  %720 = getelementptr inbounds %class.GFloat, ptr %80, i32 0, i32 0
  store i32 %719, ptr %720, align 4
  br label %726

721:                                              ; preds = %706
  %722 = call i32 @_ZN5GMath3OneEv()
  %723 = getelementptr inbounds %class.GFloat, ptr %82, i32 0, i32 0
  store i32 %722, ptr %723, align 4
  %724 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %82)
  %725 = getelementptr inbounds %class.GFloat, ptr %80, i32 0, i32 0
  store i32 %724, ptr %725, align 4
  br label %726

726:                                              ; preds = %721, %718
  %727 = getelementptr inbounds %class.GFloat, ptr %78, i32 0, i32 0
  %728 = load i32, ptr %727, align 4
  %729 = getelementptr inbounds %class.GFloat, ptr %79, i32 0, i32 0
  %730 = load i32, ptr %729, align 4
  %731 = getelementptr inbounds %class.GFloat, ptr %80, i32 0, i32 0
  %732 = load i32, ptr %731, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %77, i32 %728, i32 %730, i32 %732)
  %733 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 2
  %734 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %733, ptr noundef nonnull align 4 dereferenceable(12) %77)
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %77) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %84) #7
  %735 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #7
  %736 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %737 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %736)
  store { i64, i32 } %737, ptr %86, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 8 %86, i64 12, i1 false)
  %738 = call { i64, i32 } @_ZNK11GQuaternion14UnRotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %735, ptr noundef nonnull align 4 dereferenceable(12) %85)
  store { i64, i32 } %738, ptr %87, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %84, ptr align 8 %87, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #7
  store ptr %84, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %88) #7
  %739 = getelementptr inbounds %class.GVector3, ptr %25, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %89, ptr align 4 %739, i64 4, i1 false), !tbaa.struct !12
  %740 = getelementptr inbounds %class.GVector3, ptr %45, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %90, ptr align 4 %740, i64 4, i1 false), !tbaa.struct !12
  %741 = getelementptr inbounds %class.GVector3, ptr %64, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %91, ptr align 4 %741, i64 4, i1 false), !tbaa.struct !12
  %742 = getelementptr inbounds %class.GFloat, ptr %89, i32 0, i32 0
  %743 = load i32, ptr %742, align 4
  %744 = getelementptr inbounds %class.GFloat, ptr %90, i32 0, i32 0
  %745 = load i32, ptr %744, align 4
  %746 = getelementptr inbounds %class.GFloat, ptr %91, i32 0, i32 0
  %747 = load i32, ptr %746, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %88, i32 %743, i32 %745, i32 %747)
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #7
  %748 = load ptr, ptr %13, align 8, !tbaa !5
  %749 = getelementptr inbounds %class.GVector3, ptr %748, i32 0, i32 0
  %750 = load ptr, ptr %12, align 8, !tbaa !5
  %751 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %88, ptr noundef nonnull align 4 dereferenceable(12) %750)
  %752 = getelementptr inbounds %class.GFloat, ptr %94, i32 0, i32 0
  store i32 %751, ptr %752, align 4
  %753 = getelementptr inbounds %class.GFloat, ptr %94, i32 0, i32 0
  %754 = load i32, ptr %753, align 4
  %755 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %749, i32 %754)
  %756 = getelementptr inbounds %class.GFloat, ptr %93, i32 0, i32 0
  store i32 %755, ptr %756, align 4
  %757 = load ptr, ptr %83, align 8, !tbaa !5
  %758 = getelementptr inbounds %class.GVector3, ptr %757, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %96, ptr align 4 %758, i64 4, i1 false), !tbaa.struct !12
  %759 = getelementptr inbounds %class.GFloat, ptr %96, i32 0, i32 0
  %760 = load i32, ptr %759, align 4
  %761 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %760)
  %762 = getelementptr inbounds %class.GFloat, ptr %95, i32 0, i32 0
  store i32 %761, ptr %762, align 4
  %763 = getelementptr inbounds %class.GFloat, ptr %95, i32 0, i32 0
  %764 = load i32, ptr %763, align 4
  %765 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %93, i32 %764)
  %766 = getelementptr inbounds %class.GFloat, ptr %92, i32 0, i32 0
  store i32 %765, ptr %766, align 4
  %767 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %767, ptr align 4 %92, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #7
  %768 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 3
  %769 = call i32 @_ZN5GMath4ZeroEv()
  %770 = getelementptr inbounds %class.GFloat, ptr %97, i32 0, i32 0
  store i32 %769, ptr %770, align 4
  %771 = getelementptr inbounds %class.GFloat, ptr %97, i32 0, i32 0
  %772 = load i32, ptr %771, align 4
  %773 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %768, i32 %772)
  br i1 %773, label %774, label %775

774:                                              ; preds = %726
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1866

775:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 12, ptr %98) #7
  %776 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 12, ptr %99) #7
  %777 = load ptr, ptr %83, align 8, !tbaa !5
  %778 = getelementptr inbounds %class.GVector3, ptr %777, i32 0, i32 0
  %779 = call i32 @_ZN5GMath4ZeroEv()
  %780 = getelementptr inbounds %class.GFloat, ptr %101, i32 0, i32 0
  store i32 %779, ptr %780, align 4
  %781 = getelementptr inbounds %class.GFloat, ptr %101, i32 0, i32 0
  %782 = load i32, ptr %781, align 4
  %783 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %778, i32 %782)
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #7
  br i1 %783, label %784, label %787

784:                                              ; preds = %775
  %785 = call i32 @_ZN5GMath3OneEv()
  %786 = getelementptr inbounds %class.GFloat, ptr %100, i32 0, i32 0
  store i32 %785, ptr %786, align 4
  br label %792

787:                                              ; preds = %775
  %788 = call i32 @_ZN5GMath3OneEv()
  %789 = getelementptr inbounds %class.GFloat, ptr %102, i32 0, i32 0
  store i32 %788, ptr %789, align 4
  %790 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %102)
  %791 = getelementptr inbounds %class.GFloat, ptr %100, i32 0, i32 0
  store i32 %790, ptr %791, align 4
  br label %792

792:                                              ; preds = %787, %784
  %793 = call i32 @_ZN5GMath4ZeroEv()
  %794 = getelementptr inbounds %class.GFloat, ptr %103, i32 0, i32 0
  store i32 %793, ptr %794, align 4
  %795 = call i32 @_ZN5GMath4ZeroEv()
  %796 = getelementptr inbounds %class.GFloat, ptr %104, i32 0, i32 0
  store i32 %795, ptr %796, align 4
  %797 = getelementptr inbounds %class.GFloat, ptr %100, i32 0, i32 0
  %798 = load i32, ptr %797, align 4
  %799 = getelementptr inbounds %class.GFloat, ptr %103, i32 0, i32 0
  %800 = load i32, ptr %799, align 4
  %801 = getelementptr inbounds %class.GFloat, ptr %104, i32 0, i32 0
  %802 = load i32, ptr %801, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %99, i32 %798, i32 %800, i32 %802)
  %803 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %776, ptr noundef nonnull align 4 dereferenceable(12) %99)
  store { i64, i32 } %803, ptr %105, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 8 %105, i64 12, i1 false)
  %804 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 3
  %805 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %804, ptr noundef nonnull align 4 dereferenceable(12) %98)
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %106) #7
  %806 = getelementptr inbounds %class.GVector3, ptr %25, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %107, ptr align 4 %806, i64 4, i1 false), !tbaa.struct !12
  %807 = getelementptr inbounds %class.GVector3, ptr %45, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %108, ptr align 4 %807, i64 4, i1 false), !tbaa.struct !12
  %808 = getelementptr inbounds %class.GVector3, ptr %64, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %109, ptr align 4 %808, i64 4, i1 false), !tbaa.struct !12
  %809 = getelementptr inbounds %class.GFloat, ptr %107, i32 0, i32 0
  %810 = load i32, ptr %809, align 4
  %811 = getelementptr inbounds %class.GFloat, ptr %108, i32 0, i32 0
  %812 = load i32, ptr %811, align 4
  %813 = getelementptr inbounds %class.GFloat, ptr %109, i32 0, i32 0
  %814 = load i32, ptr %813, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %106, i32 %810, i32 %812, i32 %814)
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #7
  %815 = load ptr, ptr %13, align 8, !tbaa !5
  %816 = getelementptr inbounds %class.GVector3, ptr %815, i32 0, i32 1
  %817 = load ptr, ptr %12, align 8, !tbaa !5
  %818 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %106, ptr noundef nonnull align 4 dereferenceable(12) %817)
  %819 = getelementptr inbounds %class.GFloat, ptr %112, i32 0, i32 0
  store i32 %818, ptr %819, align 4
  %820 = getelementptr inbounds %class.GFloat, ptr %112, i32 0, i32 0
  %821 = load i32, ptr %820, align 4
  %822 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %816, i32 %821)
  %823 = getelementptr inbounds %class.GFloat, ptr %111, i32 0, i32 0
  store i32 %822, ptr %823, align 4
  %824 = load ptr, ptr %83, align 8, !tbaa !5
  %825 = getelementptr inbounds %class.GVector3, ptr %824, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %114, ptr align 4 %825, i64 4, i1 false), !tbaa.struct !12
  %826 = getelementptr inbounds %class.GFloat, ptr %114, i32 0, i32 0
  %827 = load i32, ptr %826, align 4
  %828 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %827)
  %829 = getelementptr inbounds %class.GFloat, ptr %113, i32 0, i32 0
  store i32 %828, ptr %829, align 4
  %830 = getelementptr inbounds %class.GFloat, ptr %113, i32 0, i32 0
  %831 = load i32, ptr %830, align 4
  %832 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %111, i32 %831)
  %833 = getelementptr inbounds %class.GFloat, ptr %110, i32 0, i32 0
  store i32 %832, ptr %833, align 4
  %834 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %834, ptr align 4 %110, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  %835 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 4
  %836 = call i32 @_ZN5GMath4ZeroEv()
  %837 = getelementptr inbounds %class.GFloat, ptr %115, i32 0, i32 0
  store i32 %836, ptr %837, align 4
  %838 = getelementptr inbounds %class.GFloat, ptr %115, i32 0, i32 0
  %839 = load i32, ptr %838, align 4
  %840 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %835, i32 %839)
  br i1 %840, label %841, label %842

841:                                              ; preds = %792
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1865

842:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 12, ptr %116) #7
  %843 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 12, ptr %117) #7
  %844 = call i32 @_ZN5GMath4ZeroEv()
  %845 = getelementptr inbounds %class.GFloat, ptr %118, i32 0, i32 0
  store i32 %844, ptr %845, align 4
  %846 = load ptr, ptr %83, align 8, !tbaa !5
  %847 = getelementptr inbounds %class.GVector3, ptr %846, i32 0, i32 1
  %848 = call i32 @_ZN5GMath4ZeroEv()
  %849 = getelementptr inbounds %class.GFloat, ptr %120, i32 0, i32 0
  store i32 %848, ptr %849, align 4
  %850 = getelementptr inbounds %class.GFloat, ptr %120, i32 0, i32 0
  %851 = load i32, ptr %850, align 4
  %852 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %847, i32 %851)
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #7
  br i1 %852, label %853, label %856

853:                                              ; preds = %842
  %854 = call i32 @_ZN5GMath3OneEv()
  %855 = getelementptr inbounds %class.GFloat, ptr %119, i32 0, i32 0
  store i32 %854, ptr %855, align 4
  br label %861

856:                                              ; preds = %842
  %857 = call i32 @_ZN5GMath3OneEv()
  %858 = getelementptr inbounds %class.GFloat, ptr %121, i32 0, i32 0
  store i32 %857, ptr %858, align 4
  %859 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %121)
  %860 = getelementptr inbounds %class.GFloat, ptr %119, i32 0, i32 0
  store i32 %859, ptr %860, align 4
  br label %861

861:                                              ; preds = %856, %853
  %862 = call i32 @_ZN5GMath4ZeroEv()
  %863 = getelementptr inbounds %class.GFloat, ptr %122, i32 0, i32 0
  store i32 %862, ptr %863, align 4
  %864 = getelementptr inbounds %class.GFloat, ptr %118, i32 0, i32 0
  %865 = load i32, ptr %864, align 4
  %866 = getelementptr inbounds %class.GFloat, ptr %119, i32 0, i32 0
  %867 = load i32, ptr %866, align 4
  %868 = getelementptr inbounds %class.GFloat, ptr %122, i32 0, i32 0
  %869 = load i32, ptr %868, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %117, i32 %865, i32 %867, i32 %869)
  %870 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %843, ptr noundef nonnull align 4 dereferenceable(12) %117)
  store { i64, i32 } %870, ptr %123, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 8 %123, i64 12, i1 false)
  %871 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 4
  %872 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %871, ptr noundef nonnull align 4 dereferenceable(12) %116)
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %117) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %116) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %124) #7
  %873 = getelementptr inbounds %class.GVector3, ptr %25, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %125, ptr align 4 %873, i64 4, i1 false), !tbaa.struct !12
  %874 = getelementptr inbounds %class.GVector3, ptr %45, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 4 %874, i64 4, i1 false), !tbaa.struct !12
  %875 = getelementptr inbounds %class.GVector3, ptr %64, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %127, ptr align 4 %875, i64 4, i1 false), !tbaa.struct !12
  %876 = getelementptr inbounds %class.GFloat, ptr %125, i32 0, i32 0
  %877 = load i32, ptr %876, align 4
  %878 = getelementptr inbounds %class.GFloat, ptr %126, i32 0, i32 0
  %879 = load i32, ptr %878, align 4
  %880 = getelementptr inbounds %class.GFloat, ptr %127, i32 0, i32 0
  %881 = load i32, ptr %880, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %124, i32 %877, i32 %879, i32 %881)
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #7
  %882 = load ptr, ptr %13, align 8, !tbaa !5
  %883 = getelementptr inbounds %class.GVector3, ptr %882, i32 0, i32 2
  %884 = load ptr, ptr %12, align 8, !tbaa !5
  %885 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(12) %884)
  %886 = getelementptr inbounds %class.GFloat, ptr %130, i32 0, i32 0
  store i32 %885, ptr %886, align 4
  %887 = getelementptr inbounds %class.GFloat, ptr %130, i32 0, i32 0
  %888 = load i32, ptr %887, align 4
  %889 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %883, i32 %888)
  %890 = getelementptr inbounds %class.GFloat, ptr %129, i32 0, i32 0
  store i32 %889, ptr %890, align 4
  %891 = load ptr, ptr %83, align 8, !tbaa !5
  %892 = getelementptr inbounds %class.GVector3, ptr %891, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 4 %892, i64 4, i1 false), !tbaa.struct !12
  %893 = getelementptr inbounds %class.GFloat, ptr %132, i32 0, i32 0
  %894 = load i32, ptr %893, align 4
  %895 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %894)
  %896 = getelementptr inbounds %class.GFloat, ptr %131, i32 0, i32 0
  store i32 %895, ptr %896, align 4
  %897 = getelementptr inbounds %class.GFloat, ptr %131, i32 0, i32 0
  %898 = load i32, ptr %897, align 4
  %899 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %129, i32 %898)
  %900 = getelementptr inbounds %class.GFloat, ptr %128, i32 0, i32 0
  store i32 %899, ptr %900, align 4
  %901 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %901, ptr align 4 %128, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #7
  %902 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 4
  %903 = call i32 @_ZN5GMath4ZeroEv()
  %904 = getelementptr inbounds %class.GFloat, ptr %133, i32 0, i32 0
  store i32 %903, ptr %904, align 4
  %905 = getelementptr inbounds %class.GFloat, ptr %133, i32 0, i32 0
  %906 = load i32, ptr %905, align 4
  %907 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %902, i32 %906)
  br i1 %907, label %908, label %909

908:                                              ; preds = %861
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1864

909:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 12, ptr %134) #7
  %910 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 12, ptr %135) #7
  %911 = call i32 @_ZN5GMath3OneEv()
  %912 = getelementptr inbounds %class.GFloat, ptr %136, i32 0, i32 0
  store i32 %911, ptr %912, align 4
  %913 = call i32 @_ZN5GMath4ZeroEv()
  %914 = getelementptr inbounds %class.GFloat, ptr %137, i32 0, i32 0
  store i32 %913, ptr %914, align 4
  %915 = load ptr, ptr %83, align 8, !tbaa !5
  %916 = getelementptr inbounds %class.GVector3, ptr %915, i32 0, i32 2
  %917 = call i32 @_ZN5GMath4ZeroEv()
  %918 = getelementptr inbounds %class.GFloat, ptr %139, i32 0, i32 0
  store i32 %917, ptr %918, align 4
  %919 = getelementptr inbounds %class.GFloat, ptr %139, i32 0, i32 0
  %920 = load i32, ptr %919, align 4
  %921 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %916, i32 %920)
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #7
  br i1 %921, label %922, label %925

922:                                              ; preds = %909
  %923 = call i32 @_ZN5GMath3OneEv()
  %924 = getelementptr inbounds %class.GFloat, ptr %138, i32 0, i32 0
  store i32 %923, ptr %924, align 4
  br label %930

925:                                              ; preds = %909
  %926 = call i32 @_ZN5GMath3OneEv()
  %927 = getelementptr inbounds %class.GFloat, ptr %140, i32 0, i32 0
  store i32 %926, ptr %927, align 4
  %928 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %140)
  %929 = getelementptr inbounds %class.GFloat, ptr %138, i32 0, i32 0
  store i32 %928, ptr %929, align 4
  br label %930

930:                                              ; preds = %925, %922
  %931 = getelementptr inbounds %class.GFloat, ptr %136, i32 0, i32 0
  %932 = load i32, ptr %931, align 4
  %933 = getelementptr inbounds %class.GFloat, ptr %137, i32 0, i32 0
  %934 = load i32, ptr %933, align 4
  %935 = getelementptr inbounds %class.GFloat, ptr %138, i32 0, i32 0
  %936 = load i32, ptr %935, align 4
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %135, i32 %932, i32 %934, i32 %936)
  %937 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %910, ptr noundef nonnull align 4 dereferenceable(12) %135)
  store { i64, i32 } %937, ptr %141, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %134, ptr align 8 %141, i64 12, i1 false)
  %938 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 5
  %939 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %938, ptr noundef nonnull align 4 dereferenceable(12) %134)
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %134) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %142) #7
  %940 = load ptr, ptr %13, align 8, !tbaa !5
  %941 = getelementptr inbounds %class.GVector3, ptr %940, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %143, ptr align 4 %941, i64 4, i1 false), !tbaa.struct !12
  %942 = getelementptr inbounds %class.GFloat, ptr %143, i32 0, i32 0
  %943 = load i32, ptr %942, align 4
  %944 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %17, i32 %943)
  store { i64, i32 } %944, ptr %144, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %142, ptr align 8 %144, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %145) #7
  %945 = load ptr, ptr %13, align 8, !tbaa !5
  %946 = getelementptr inbounds %class.GVector3, ptr %945, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %146, ptr align 4 %946, i64 4, i1 false), !tbaa.struct !12
  %947 = getelementptr inbounds %class.GFloat, ptr %146, i32 0, i32 0
  %948 = load i32, ptr %947, align 4
  %949 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %18, i32 %948)
  store { i64, i32 } %949, ptr %147, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %145, ptr align 8 %147, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %148) #7
  %950 = load ptr, ptr %13, align 8, !tbaa !5
  %951 = getelementptr inbounds %class.GVector3, ptr %950, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %149, ptr align 4 %951, i64 4, i1 false), !tbaa.struct !12
  %952 = getelementptr inbounds %class.GFloat, ptr %149, i32 0, i32 0
  %953 = load i32, ptr %952, align 4
  %954 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %19, i32 %953)
  store { i64, i32 } %954, ptr %150, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %148, ptr align 8 %150, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %151) #7
  %955 = load ptr, ptr %13, align 8, !tbaa !5
  %956 = getelementptr inbounds %class.GVector3, ptr %955, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %152, ptr align 4 %956, i64 4, i1 false), !tbaa.struct !12
  %957 = getelementptr inbounds %class.GFloat, ptr %152, i32 0, i32 0
  %958 = load i32, ptr %957, align 4
  %959 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %88, i32 %958)
  store { i64, i32 } %959, ptr %153, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %151, ptr align 8 %153, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %154) #7
  %960 = load ptr, ptr %13, align 8, !tbaa !5
  %961 = getelementptr inbounds %class.GVector3, ptr %960, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %155, ptr align 4 %961, i64 4, i1 false), !tbaa.struct !12
  %962 = getelementptr inbounds %class.GFloat, ptr %155, i32 0, i32 0
  %963 = load i32, ptr %962, align 4
  %964 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %106, i32 %963)
  store { i64, i32 } %964, ptr %156, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %154, ptr align 8 %156, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %157) #7
  %965 = load ptr, ptr %13, align 8, !tbaa !5
  %966 = getelementptr inbounds %class.GVector3, ptr %965, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %158, ptr align 4 %966, i64 4, i1 false), !tbaa.struct !12
  %967 = getelementptr inbounds %class.GFloat, ptr %158, i32 0, i32 0
  %968 = load i32, ptr %967, align 4
  %969 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %124, i32 %968)
  store { i64, i32 } %969, ptr %159, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %157, ptr align 8 %159, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %160) #7
  %970 = load ptr, ptr %12, align 8, !tbaa !5
  %971 = getelementptr inbounds %class.GVector3, ptr %970, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %161, ptr align 4 %971, i64 4, i1 false), !tbaa.struct !12
  %972 = getelementptr inbounds %class.GFloat, ptr %161, i32 0, i32 0
  %973 = load i32, ptr %972, align 4
  %974 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %25, i32 %973)
  store { i64, i32 } %974, ptr %162, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %160, ptr align 8 %162, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %163) #7
  %975 = load ptr, ptr %12, align 8, !tbaa !5
  %976 = getelementptr inbounds %class.GVector3, ptr %975, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %164, ptr align 4 %976, i64 4, i1 false), !tbaa.struct !12
  %977 = getelementptr inbounds %class.GFloat, ptr %164, i32 0, i32 0
  %978 = load i32, ptr %977, align 4
  %979 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %45, i32 %978)
  store { i64, i32 } %979, ptr %165, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %163, ptr align 8 %165, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %166) #7
  %980 = load ptr, ptr %12, align 8, !tbaa !5
  %981 = getelementptr inbounds %class.GVector3, ptr %980, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %167, ptr align 4 %981, i64 4, i1 false), !tbaa.struct !12
  %982 = getelementptr inbounds %class.GFloat, ptr %167, i32 0, i32 0
  %983 = load i32, ptr %982, align 4
  %984 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %64, i32 %983)
  store { i64, i32 } %984, ptr %168, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %166, ptr align 8 %168, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 28, ptr %169) #7
  call void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind writable sret(%class.GTransform_QT) align 4 %169, ptr noundef nonnull align 4 dereferenceable(28) %14)
  call void @llvm.lifetime.start.p0(i64 12, ptr %170) #7
  %985 = load ptr, ptr %12, align 8, !tbaa !5
  %986 = getelementptr inbounds %class.GVector3, ptr %985, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %171, ptr align 4 %986, i64 4, i1 false), !tbaa.struct !12
  %987 = getelementptr inbounds %class.GFloat, ptr %171, i32 0, i32 0
  %988 = load i32, ptr %987, align 4
  %989 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %988, ptr noundef nonnull align 4 dereferenceable(12) %142)
  store { i64, i32 } %989, ptr %172, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %170, ptr align 8 %172, i64 12, i1 false)
  %990 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %991 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %990, ptr noundef nonnull align 4 dereferenceable(12) %170)
  call void @llvm.lifetime.end.p0(i64 12, ptr %170) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %176) #7
  %992 = load ptr, ptr %12, align 8, !tbaa !5
  %993 = getelementptr inbounds %class.GVector3, ptr %992, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %177, ptr align 4 %993, i64 4, i1 false), !tbaa.struct !12
  %994 = getelementptr inbounds %class.GFloat, ptr %177, i32 0, i32 0
  %995 = load i32, ptr %994, align 4
  %996 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %995, ptr noundef nonnull align 4 dereferenceable(12) %151)
  store { i64, i32 } %996, ptr %178, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %176, ptr align 8 %178, i64 12, i1 false)
  %997 = load ptr, ptr %12, align 8, !tbaa !5
  %998 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %176, ptr noundef nonnull align 4 dereferenceable(12) %997)
  %999 = getelementptr inbounds %class.GFloat, ptr %175, i32 0, i32 0
  store i32 %998, ptr %999, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %180) #7
  %1000 = load ptr, ptr %13, align 8, !tbaa !5
  %1001 = getelementptr inbounds %class.GVector3, ptr %1000, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %181, ptr align 4 %1001, i64 4, i1 false), !tbaa.struct !12
  %1002 = getelementptr inbounds %class.GFloat, ptr %181, i32 0, i32 0
  %1003 = load i32, ptr %1002, align 4
  %1004 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %1003, ptr noundef nonnull align 4 dereferenceable(12) %160)
  store { i64, i32 } %1004, ptr %182, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %180, ptr align 8 %182, i64 12, i1 false)
  %1005 = load ptr, ptr %13, align 8, !tbaa !5
  %1006 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %180, ptr noundef nonnull align 4 dereferenceable(12) %1005)
  %1007 = getelementptr inbounds %class.GFloat, ptr %179, i32 0, i32 0
  store i32 %1006, ptr %1007, align 4
  %1008 = getelementptr inbounds %class.GFloat, ptr %179, i32 0, i32 0
  %1009 = load i32, ptr %1008, align 4
  %1010 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %1009)
  %1011 = getelementptr inbounds %class.GFloat, ptr %174, i32 0, i32 0
  store i32 %1010, ptr %1011, align 4
  %1012 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1013 = load ptr, ptr %20, align 8, !tbaa !5
  %1014 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1012, ptr noundef nonnull align 4 dereferenceable(12) %1013)
  %1015 = getelementptr inbounds %class.GFloat, ptr %184, i32 0, i32 0
  store i32 %1014, ptr %1015, align 4
  %1016 = getelementptr inbounds %class.GFloat, ptr %184, i32 0, i32 0
  %1017 = load i32, ptr %1016, align 4
  %1018 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1017)
  %1019 = getelementptr inbounds %class.GFloat, ptr %183, i32 0, i32 0
  store i32 %1018, ptr %1019, align 4
  %1020 = getelementptr inbounds %class.GFloat, ptr %183, i32 0, i32 0
  %1021 = load i32, ptr %1020, align 4
  %1022 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %174, i32 %1021)
  %1023 = getelementptr inbounds %class.GFloat, ptr %173, i32 0, i32 0
  store i32 %1022, ptr %1023, align 4
  %1024 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1024, ptr align 4 %173, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %176) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #7
  %1025 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 6
  %1026 = call i32 @_ZN5GMath4ZeroEv()
  %1027 = getelementptr inbounds %class.GFloat, ptr %185, i32 0, i32 0
  store i32 %1026, ptr %1027, align 4
  %1028 = getelementptr inbounds %class.GFloat, ptr %185, i32 0, i32 0
  %1029 = load i32, ptr %1028, align 4
  %1030 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1025, i32 %1029)
  br i1 %1030, label %1031, label %1032

1031:                                             ; preds = %930
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1032:                                             ; preds = %930
  %1033 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1034 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1033)
  %1035 = getelementptr inbounds %class.GFloat, ptr %186, i32 0, i32 0
  store i32 %1034, ptr %1035, align 4
  %1036 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 6
  %1037 = getelementptr inbounds %class.GFloat, ptr %186, i32 0, i32 0
  %1038 = load i32, ptr %1037, align 4
  %1039 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1036, i32 %1038)
  %1040 = getelementptr inbounds %class.GFloat, ptr %187, i32 0, i32 0
  store i32 %1039, ptr %1040, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #7
  %1041 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1042 = getelementptr inbounds %class.GVector3, ptr %1041, i32 0, i32 1
  %1043 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1044 = getelementptr inbounds %class.GVector3, ptr %1043, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %189, ptr align 4 %1044, i64 4, i1 false), !tbaa.struct !12
  %1045 = getelementptr inbounds %class.GFloat, ptr %189, i32 0, i32 0
  %1046 = load i32, ptr %1045, align 4
  %1047 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1042, i32 %1046)
  %1048 = getelementptr inbounds %class.GFloat, ptr %188, i32 0, i32 0
  store i32 %1047, ptr %1048, align 4
  %1049 = call i32 @_ZN5GMath4ZeroEv()
  %1050 = getelementptr inbounds %class.GFloat, ptr %190, i32 0, i32 0
  store i32 %1049, ptr %1050, align 4
  %1051 = getelementptr inbounds %class.GFloat, ptr %190, i32 0, i32 0
  %1052 = load i32, ptr %1051, align 4
  %1053 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %188, i32 %1052)
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #7
  br i1 %1053, label %1054, label %1059

1054:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 12, ptr %191) #7
  %1055 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1056 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1055)
  store { i64, i32 } %1056, ptr %192, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %191, ptr align 8 %192, i64 12, i1 false)
  %1057 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1058 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1057, ptr noundef nonnull align 4 dereferenceable(12) %191)
  call void @llvm.lifetime.end.p0(i64 12, ptr %191) #7
  br label %1059

1059:                                             ; preds = %1054, %1032
  %1060 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1060)
  call void @llvm.lifetime.start.p0(i64 12, ptr %193) #7
  %1061 = load ptr, ptr %12, align 8, !tbaa !5
  %1062 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %194) #7
  %1063 = load ptr, ptr %13, align 8, !tbaa !5
  %1064 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1063, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1064, ptr %195, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %194, ptr align 8 %195, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %196) #7
  %1065 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 6
  %1066 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %197, ptr align 8 %1066, i64 4, i1 false), !tbaa.struct !12
  %1067 = getelementptr inbounds %class.GFloat, ptr %197, i32 0, i32 0
  %1068 = load i32, ptr %1067, align 4
  %1069 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1065, i32 %1068)
  store { i64, i32 } %1069, ptr %198, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %196, ptr align 8 %198, i64 12, i1 false)
  %1070 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 6
  %1071 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1061, ptr noundef nonnull align 4 dereferenceable(12) %1062, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %194, ptr noundef nonnull align 4 dereferenceable(12) %196, ptr noundef nonnull align 4 dereferenceable(12) %1070)
  store { i64, i32 } %1071, ptr %199, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %193, ptr align 8 %199, i64 12, i1 false)
  %1072 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 6
  %1073 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1072, ptr noundef nonnull align 4 dereferenceable(12) %193)
  call void @llvm.lifetime.end.p0(i64 12, ptr %196) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %194) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %193) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %200) #7
  %1074 = load ptr, ptr %12, align 8, !tbaa !5
  %1075 = getelementptr inbounds %class.GVector3, ptr %1074, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %201, ptr align 4 %1075, i64 4, i1 false), !tbaa.struct !12
  %1076 = getelementptr inbounds %class.GFloat, ptr %201, i32 0, i32 0
  %1077 = load i32, ptr %1076, align 4
  %1078 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %1077, ptr noundef nonnull align 4 dereferenceable(12) %145)
  store { i64, i32 } %1078, ptr %202, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %200, ptr align 8 %202, i64 12, i1 false)
  %1079 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1080 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1079, ptr noundef nonnull align 4 dereferenceable(12) %200)
  call void @llvm.lifetime.end.p0(i64 12, ptr %200) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %203) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %204) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %205) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %206) #7
  %1081 = load ptr, ptr %12, align 8, !tbaa !5
  %1082 = getelementptr inbounds %class.GVector3, ptr %1081, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %207, ptr align 4 %1082, i64 4, i1 false), !tbaa.struct !12
  %1083 = getelementptr inbounds %class.GFloat, ptr %207, i32 0, i32 0
  %1084 = load i32, ptr %1083, align 4
  %1085 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %1084, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store { i64, i32 } %1085, ptr %208, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %206, ptr align 8 %208, i64 12, i1 false)
  %1086 = load ptr, ptr %12, align 8, !tbaa !5
  %1087 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %206, ptr noundef nonnull align 4 dereferenceable(12) %1086)
  %1088 = getelementptr inbounds %class.GFloat, ptr %205, i32 0, i32 0
  store i32 %1087, ptr %1088, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %210) #7
  %1089 = load ptr, ptr %13, align 8, !tbaa !5
  %1090 = getelementptr inbounds %class.GVector3, ptr %1089, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %211, ptr align 4 %1090, i64 4, i1 false), !tbaa.struct !12
  %1091 = getelementptr inbounds %class.GFloat, ptr %211, i32 0, i32 0
  %1092 = load i32, ptr %1091, align 4
  %1093 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1092, ptr noundef nonnull align 4 dereferenceable(12) %160)
  store { i64, i32 } %1093, ptr %212, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %210, ptr align 8 %212, i64 12, i1 false)
  %1094 = load ptr, ptr %13, align 8, !tbaa !5
  %1095 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %210, ptr noundef nonnull align 4 dereferenceable(12) %1094)
  %1096 = getelementptr inbounds %class.GFloat, ptr %209, i32 0, i32 0
  store i32 %1095, ptr %1096, align 4
  %1097 = getelementptr inbounds %class.GFloat, ptr %209, i32 0, i32 0
  %1098 = load i32, ptr %1097, align 4
  %1099 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %205, i32 %1098)
  %1100 = getelementptr inbounds %class.GFloat, ptr %204, i32 0, i32 0
  store i32 %1099, ptr %1100, align 4
  %1101 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1102 = load ptr, ptr %20, align 8, !tbaa !5
  %1103 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1101, ptr noundef nonnull align 4 dereferenceable(12) %1102)
  %1104 = getelementptr inbounds %class.GFloat, ptr %214, i32 0, i32 0
  store i32 %1103, ptr %1104, align 4
  %1105 = getelementptr inbounds %class.GFloat, ptr %214, i32 0, i32 0
  %1106 = load i32, ptr %1105, align 4
  %1107 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1106)
  %1108 = getelementptr inbounds %class.GFloat, ptr %213, i32 0, i32 0
  store i32 %1107, ptr %1108, align 4
  %1109 = getelementptr inbounds %class.GFloat, ptr %213, i32 0, i32 0
  %1110 = load i32, ptr %1109, align 4
  %1111 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %204, i32 %1110)
  %1112 = getelementptr inbounds %class.GFloat, ptr %203, i32 0, i32 0
  store i32 %1111, ptr %1112, align 4
  %1113 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1113, ptr align 4 %203, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %210) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %204) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %203) #7
  %1114 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 7
  %1115 = call i32 @_ZN5GMath4ZeroEv()
  %1116 = getelementptr inbounds %class.GFloat, ptr %215, i32 0, i32 0
  store i32 %1115, ptr %1116, align 4
  %1117 = getelementptr inbounds %class.GFloat, ptr %215, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 4
  %1119 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1114, i32 %1118)
  br i1 %1119, label %1120, label %1121

1120:                                             ; preds = %1059
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1121:                                             ; preds = %1059
  %1122 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1123 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1122)
  %1124 = getelementptr inbounds %class.GFloat, ptr %216, i32 0, i32 0
  store i32 %1123, ptr %1124, align 4
  %1125 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 7
  %1126 = getelementptr inbounds %class.GFloat, ptr %216, i32 0, i32 0
  %1127 = load i32, ptr %1126, align 4
  %1128 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1125, i32 %1127)
  %1129 = getelementptr inbounds %class.GFloat, ptr %217, i32 0, i32 0
  store i32 %1128, ptr %1129, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %218) #7
  %1130 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1131 = getelementptr inbounds %class.GVector3, ptr %1130, i32 0, i32 1
  %1132 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1133 = getelementptr inbounds %class.GVector3, ptr %1132, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %219, ptr align 4 %1133, i64 4, i1 false), !tbaa.struct !12
  %1134 = getelementptr inbounds %class.GFloat, ptr %219, i32 0, i32 0
  %1135 = load i32, ptr %1134, align 4
  %1136 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1131, i32 %1135)
  %1137 = getelementptr inbounds %class.GFloat, ptr %218, i32 0, i32 0
  store i32 %1136, ptr %1137, align 4
  %1138 = call i32 @_ZN5GMath4ZeroEv()
  %1139 = getelementptr inbounds %class.GFloat, ptr %220, i32 0, i32 0
  store i32 %1138, ptr %1139, align 4
  %1140 = getelementptr inbounds %class.GFloat, ptr %220, i32 0, i32 0
  %1141 = load i32, ptr %1140, align 4
  %1142 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %218, i32 %1141)
  call void @llvm.lifetime.end.p0(i64 4, ptr %218) #7
  br i1 %1142, label %1143, label %1148

1143:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 12, ptr %221) #7
  %1144 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1145 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1144)
  store { i64, i32 } %1145, ptr %222, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %221, ptr align 8 %222, i64 12, i1 false)
  %1146 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1147 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1146, ptr noundef nonnull align 4 dereferenceable(12) %221)
  call void @llvm.lifetime.end.p0(i64 12, ptr %221) #7
  br label %1148

1148:                                             ; preds = %1143, %1121
  %1149 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1149)
  call void @llvm.lifetime.start.p0(i64 12, ptr %223) #7
  %1150 = load ptr, ptr %12, align 8, !tbaa !5
  %1151 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %224) #7
  %1152 = load ptr, ptr %13, align 8, !tbaa !5
  %1153 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1152, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1153, ptr %225, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %224, ptr align 8 %225, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %226) #7
  %1154 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 7
  %1155 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %227, ptr align 4 %1155, i64 4, i1 false), !tbaa.struct !12
  %1156 = getelementptr inbounds %class.GFloat, ptr %227, i32 0, i32 0
  %1157 = load i32, ptr %1156, align 4
  %1158 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1154, i32 %1157)
  store { i64, i32 } %1158, ptr %228, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %226, ptr align 8 %228, i64 12, i1 false)
  %1159 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 7
  %1160 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1150, ptr noundef nonnull align 4 dereferenceable(12) %1151, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %18, ptr noundef nonnull align 4 dereferenceable(12) %224, ptr noundef nonnull align 4 dereferenceable(12) %226, ptr noundef nonnull align 4 dereferenceable(12) %1159)
  store { i64, i32 } %1160, ptr %229, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %223, ptr align 8 %229, i64 12, i1 false)
  %1161 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 7
  %1162 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1161, ptr noundef nonnull align 4 dereferenceable(12) %223)
  call void @llvm.lifetime.end.p0(i64 12, ptr %226) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %224) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %223) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %230) #7
  %1163 = load ptr, ptr %12, align 8, !tbaa !5
  %1164 = getelementptr inbounds %class.GVector3, ptr %1163, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %231, ptr align 4 %1164, i64 4, i1 false), !tbaa.struct !12
  %1165 = getelementptr inbounds %class.GFloat, ptr %231, i32 0, i32 0
  %1166 = load i32, ptr %1165, align 4
  %1167 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %1166, ptr noundef nonnull align 4 dereferenceable(12) %148)
  store { i64, i32 } %1167, ptr %232, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %230, ptr align 8 %232, i64 12, i1 false)
  %1168 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1169 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1168, ptr noundef nonnull align 4 dereferenceable(12) %230)
  call void @llvm.lifetime.end.p0(i64 12, ptr %230) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %233) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %234) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %235) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %236) #7
  %1170 = load ptr, ptr %12, align 8, !tbaa !5
  %1171 = getelementptr inbounds %class.GVector3, ptr %1170, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %237, ptr align 4 %1171, i64 4, i1 false), !tbaa.struct !12
  %1172 = getelementptr inbounds %class.GFloat, ptr %237, i32 0, i32 0
  %1173 = load i32, ptr %1172, align 4
  %1174 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %1173, ptr noundef nonnull align 4 dereferenceable(12) %157)
  store { i64, i32 } %1174, ptr %238, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %236, ptr align 8 %238, i64 12, i1 false)
  %1175 = load ptr, ptr %12, align 8, !tbaa !5
  %1176 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %236, ptr noundef nonnull align 4 dereferenceable(12) %1175)
  %1177 = getelementptr inbounds %class.GFloat, ptr %235, i32 0, i32 0
  store i32 %1176, ptr %1177, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %240) #7
  %1178 = load ptr, ptr %13, align 8, !tbaa !5
  %1179 = getelementptr inbounds %class.GVector3, ptr %1178, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %241, ptr align 4 %1179, i64 4, i1 false), !tbaa.struct !12
  %1180 = getelementptr inbounds %class.GFloat, ptr %241, i32 0, i32 0
  %1181 = load i32, ptr %1180, align 4
  %1182 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1181, ptr noundef nonnull align 4 dereferenceable(12) %160)
  store { i64, i32 } %1182, ptr %242, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %240, ptr align 8 %242, i64 12, i1 false)
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %240, ptr noundef nonnull align 4 dereferenceable(12) %1183)
  %1185 = getelementptr inbounds %class.GFloat, ptr %239, i32 0, i32 0
  store i32 %1184, ptr %1185, align 4
  %1186 = getelementptr inbounds %class.GFloat, ptr %239, i32 0, i32 0
  %1187 = load i32, ptr %1186, align 4
  %1188 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %235, i32 %1187)
  %1189 = getelementptr inbounds %class.GFloat, ptr %234, i32 0, i32 0
  store i32 %1188, ptr %1189, align 4
  %1190 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1191 = load ptr, ptr %20, align 8, !tbaa !5
  %1192 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1190, ptr noundef nonnull align 4 dereferenceable(12) %1191)
  %1193 = getelementptr inbounds %class.GFloat, ptr %244, i32 0, i32 0
  store i32 %1192, ptr %1193, align 4
  %1194 = getelementptr inbounds %class.GFloat, ptr %244, i32 0, i32 0
  %1195 = load i32, ptr %1194, align 4
  %1196 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1195)
  %1197 = getelementptr inbounds %class.GFloat, ptr %243, i32 0, i32 0
  store i32 %1196, ptr %1197, align 4
  %1198 = getelementptr inbounds %class.GFloat, ptr %243, i32 0, i32 0
  %1199 = load i32, ptr %1198, align 4
  %1200 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %234, i32 %1199)
  %1201 = getelementptr inbounds %class.GFloat, ptr %233, i32 0, i32 0
  store i32 %1200, ptr %1201, align 4
  %1202 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1202, ptr align 4 %233, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %240) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %236) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %235) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %234) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %233) #7
  %1203 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 8
  %1204 = call i32 @_ZN5GMath4ZeroEv()
  %1205 = getelementptr inbounds %class.GFloat, ptr %245, i32 0, i32 0
  store i32 %1204, ptr %1205, align 4
  %1206 = getelementptr inbounds %class.GFloat, ptr %245, i32 0, i32 0
  %1207 = load i32, ptr %1206, align 4
  %1208 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1203, i32 %1207)
  br i1 %1208, label %1209, label %1210

1209:                                             ; preds = %1148
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1210:                                             ; preds = %1148
  %1211 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1212 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1211)
  %1213 = getelementptr inbounds %class.GFloat, ptr %246, i32 0, i32 0
  store i32 %1212, ptr %1213, align 4
  %1214 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 8
  %1215 = getelementptr inbounds %class.GFloat, ptr %246, i32 0, i32 0
  %1216 = load i32, ptr %1215, align 4
  %1217 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1214, i32 %1216)
  %1218 = getelementptr inbounds %class.GFloat, ptr %247, i32 0, i32 0
  store i32 %1217, ptr %1218, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %248) #7
  %1219 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1220 = getelementptr inbounds %class.GVector3, ptr %1219, i32 0, i32 1
  %1221 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1222 = getelementptr inbounds %class.GVector3, ptr %1221, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %249, ptr align 4 %1222, i64 4, i1 false), !tbaa.struct !12
  %1223 = getelementptr inbounds %class.GFloat, ptr %249, i32 0, i32 0
  %1224 = load i32, ptr %1223, align 4
  %1225 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1220, i32 %1224)
  %1226 = getelementptr inbounds %class.GFloat, ptr %248, i32 0, i32 0
  store i32 %1225, ptr %1226, align 4
  %1227 = call i32 @_ZN5GMath4ZeroEv()
  %1228 = getelementptr inbounds %class.GFloat, ptr %250, i32 0, i32 0
  store i32 %1227, ptr %1228, align 4
  %1229 = getelementptr inbounds %class.GFloat, ptr %250, i32 0, i32 0
  %1230 = load i32, ptr %1229, align 4
  %1231 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %248, i32 %1230)
  call void @llvm.lifetime.end.p0(i64 4, ptr %248) #7
  br i1 %1231, label %1232, label %1237

1232:                                             ; preds = %1210
  call void @llvm.lifetime.start.p0(i64 12, ptr %251) #7
  %1233 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1234 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1233)
  store { i64, i32 } %1234, ptr %252, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %251, ptr align 8 %252, i64 12, i1 false)
  %1235 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1236 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1235, ptr noundef nonnull align 4 dereferenceable(12) %251)
  call void @llvm.lifetime.end.p0(i64 12, ptr %251) #7
  br label %1237

1237:                                             ; preds = %1232, %1210
  %1238 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1238)
  call void @llvm.lifetime.start.p0(i64 12, ptr %253) #7
  %1239 = load ptr, ptr %12, align 8, !tbaa !5
  %1240 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %254) #7
  %1241 = load ptr, ptr %13, align 8, !tbaa !5
  %1242 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1241, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1242, ptr %255, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %254, ptr align 8 %255, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %256) #7
  %1243 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 8
  %1244 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %257, ptr align 16 %1244, i64 4, i1 false), !tbaa.struct !12
  %1245 = getelementptr inbounds %class.GFloat, ptr %257, i32 0, i32 0
  %1246 = load i32, ptr %1245, align 4
  %1247 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1243, i32 %1246)
  store { i64, i32 } %1247, ptr %258, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %256, ptr align 8 %258, i64 12, i1 false)
  %1248 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 8
  %1249 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1239, ptr noundef nonnull align 4 dereferenceable(12) %1240, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %19, ptr noundef nonnull align 4 dereferenceable(12) %254, ptr noundef nonnull align 4 dereferenceable(12) %256, ptr noundef nonnull align 4 dereferenceable(12) %1248)
  store { i64, i32 } %1249, ptr %259, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %253, ptr align 8 %259, i64 12, i1 false)
  %1250 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 8
  %1251 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1250, ptr noundef nonnull align 4 dereferenceable(12) %253)
  call void @llvm.lifetime.end.p0(i64 12, ptr %256) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %254) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %253) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %260) #7
  %1252 = load ptr, ptr %12, align 8, !tbaa !5
  %1253 = getelementptr inbounds %class.GVector3, ptr %1252, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %261, ptr align 4 %1253, i64 4, i1 false), !tbaa.struct !12
  %1254 = getelementptr inbounds %class.GFloat, ptr %261, i32 0, i32 0
  %1255 = load i32, ptr %1254, align 4
  %1256 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %1255, ptr noundef nonnull align 4 dereferenceable(12) %142)
  store { i64, i32 } %1256, ptr %262, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %260, ptr align 8 %262, i64 12, i1 false)
  %1257 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1258 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1257, ptr noundef nonnull align 4 dereferenceable(12) %260)
  call void @llvm.lifetime.end.p0(i64 12, ptr %260) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %263) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %264) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %265) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %266) #7
  %1259 = load ptr, ptr %12, align 8, !tbaa !5
  %1260 = getelementptr inbounds %class.GVector3, ptr %1259, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %267, ptr align 4 %1260, i64 4, i1 false), !tbaa.struct !12
  %1261 = getelementptr inbounds %class.GFloat, ptr %267, i32 0, i32 0
  %1262 = load i32, ptr %1261, align 4
  %1263 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1262, ptr noundef nonnull align 4 dereferenceable(12) %151)
  store { i64, i32 } %1263, ptr %268, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %266, ptr align 8 %268, i64 12, i1 false)
  %1264 = load ptr, ptr %12, align 8, !tbaa !5
  %1265 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %266, ptr noundef nonnull align 4 dereferenceable(12) %1264)
  %1266 = getelementptr inbounds %class.GFloat, ptr %265, i32 0, i32 0
  store i32 %1265, ptr %1266, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %270) #7
  %1267 = load ptr, ptr %13, align 8, !tbaa !5
  %1268 = getelementptr inbounds %class.GVector3, ptr %1267, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %271, ptr align 4 %1268, i64 4, i1 false), !tbaa.struct !12
  %1269 = getelementptr inbounds %class.GFloat, ptr %271, i32 0, i32 0
  %1270 = load i32, ptr %1269, align 4
  %1271 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %1270, ptr noundef nonnull align 4 dereferenceable(12) %163)
  store { i64, i32 } %1271, ptr %272, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %270, ptr align 8 %272, i64 12, i1 false)
  %1272 = load ptr, ptr %13, align 8, !tbaa !5
  %1273 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %270, ptr noundef nonnull align 4 dereferenceable(12) %1272)
  %1274 = getelementptr inbounds %class.GFloat, ptr %269, i32 0, i32 0
  store i32 %1273, ptr %1274, align 4
  %1275 = getelementptr inbounds %class.GFloat, ptr %269, i32 0, i32 0
  %1276 = load i32, ptr %1275, align 4
  %1277 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %265, i32 %1276)
  %1278 = getelementptr inbounds %class.GFloat, ptr %264, i32 0, i32 0
  store i32 %1277, ptr %1278, align 4
  %1279 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1280 = load ptr, ptr %20, align 8, !tbaa !5
  %1281 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1279, ptr noundef nonnull align 4 dereferenceable(12) %1280)
  %1282 = getelementptr inbounds %class.GFloat, ptr %274, i32 0, i32 0
  store i32 %1281, ptr %1282, align 4
  %1283 = getelementptr inbounds %class.GFloat, ptr %274, i32 0, i32 0
  %1284 = load i32, ptr %1283, align 4
  %1285 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1284)
  %1286 = getelementptr inbounds %class.GFloat, ptr %273, i32 0, i32 0
  store i32 %1285, ptr %1286, align 4
  %1287 = getelementptr inbounds %class.GFloat, ptr %273, i32 0, i32 0
  %1288 = load i32, ptr %1287, align 4
  %1289 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %264, i32 %1288)
  %1290 = getelementptr inbounds %class.GFloat, ptr %263, i32 0, i32 0
  store i32 %1289, ptr %1290, align 4
  %1291 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1291, ptr align 4 %263, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %270) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %266) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %265) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %263) #7
  %1292 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 9
  %1293 = call i32 @_ZN5GMath4ZeroEv()
  %1294 = getelementptr inbounds %class.GFloat, ptr %275, i32 0, i32 0
  store i32 %1293, ptr %1294, align 4
  %1295 = getelementptr inbounds %class.GFloat, ptr %275, i32 0, i32 0
  %1296 = load i32, ptr %1295, align 4
  %1297 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1292, i32 %1296)
  br i1 %1297, label %1298, label %1299

1298:                                             ; preds = %1237
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1299:                                             ; preds = %1237
  %1300 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1301 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1300)
  %1302 = getelementptr inbounds %class.GFloat, ptr %276, i32 0, i32 0
  store i32 %1301, ptr %1302, align 4
  %1303 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 9
  %1304 = getelementptr inbounds %class.GFloat, ptr %276, i32 0, i32 0
  %1305 = load i32, ptr %1304, align 4
  %1306 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1303, i32 %1305)
  %1307 = getelementptr inbounds %class.GFloat, ptr %277, i32 0, i32 0
  store i32 %1306, ptr %1307, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %278) #7
  %1308 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1309 = getelementptr inbounds %class.GVector3, ptr %1308, i32 0, i32 2
  %1310 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1311 = getelementptr inbounds %class.GVector3, ptr %1310, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %279, ptr align 4 %1311, i64 4, i1 false), !tbaa.struct !12
  %1312 = getelementptr inbounds %class.GFloat, ptr %279, i32 0, i32 0
  %1313 = load i32, ptr %1312, align 4
  %1314 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1309, i32 %1313)
  %1315 = getelementptr inbounds %class.GFloat, ptr %278, i32 0, i32 0
  store i32 %1314, ptr %1315, align 4
  %1316 = call i32 @_ZN5GMath4ZeroEv()
  %1317 = getelementptr inbounds %class.GFloat, ptr %280, i32 0, i32 0
  store i32 %1316, ptr %1317, align 4
  %1318 = getelementptr inbounds %class.GFloat, ptr %280, i32 0, i32 0
  %1319 = load i32, ptr %1318, align 4
  %1320 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %278, i32 %1319)
  call void @llvm.lifetime.end.p0(i64 4, ptr %278) #7
  br i1 %1320, label %1321, label %1326

1321:                                             ; preds = %1299
  call void @llvm.lifetime.start.p0(i64 12, ptr %281) #7
  %1322 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1323 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1322)
  store { i64, i32 } %1323, ptr %282, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %281, ptr align 8 %282, i64 12, i1 false)
  %1324 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1325 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1324, ptr noundef nonnull align 4 dereferenceable(12) %281)
  call void @llvm.lifetime.end.p0(i64 12, ptr %281) #7
  br label %1326

1326:                                             ; preds = %1321, %1299
  %1327 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1327)
  call void @llvm.lifetime.start.p0(i64 12, ptr %283) #7
  %1328 = load ptr, ptr %12, align 8, !tbaa !5
  %1329 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %284) #7
  %1330 = load ptr, ptr %13, align 8, !tbaa !5
  %1331 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1330, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1331, ptr %285, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %284, ptr align 8 %285, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %286) #7
  %1332 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 9
  %1333 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %287, ptr align 4 %1333, i64 4, i1 false), !tbaa.struct !12
  %1334 = getelementptr inbounds %class.GFloat, ptr %287, i32 0, i32 0
  %1335 = load i32, ptr %1334, align 4
  %1336 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1332, i32 %1335)
  store { i64, i32 } %1336, ptr %288, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %286, ptr align 8 %288, i64 12, i1 false)
  %1337 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 9
  %1338 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1328, ptr noundef nonnull align 4 dereferenceable(12) %1329, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %284, ptr noundef nonnull align 4 dereferenceable(12) %286, ptr noundef nonnull align 4 dereferenceable(12) %1337)
  store { i64, i32 } %1338, ptr %289, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %283, ptr align 8 %289, i64 12, i1 false)
  %1339 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 9
  %1340 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1339, ptr noundef nonnull align 4 dereferenceable(12) %283)
  call void @llvm.lifetime.end.p0(i64 12, ptr %286) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %284) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %283) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %290) #7
  %1341 = load ptr, ptr %12, align 8, !tbaa !5
  %1342 = getelementptr inbounds %class.GVector3, ptr %1341, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %291, ptr align 4 %1342, i64 4, i1 false), !tbaa.struct !12
  %1343 = getelementptr inbounds %class.GFloat, ptr %291, i32 0, i32 0
  %1344 = load i32, ptr %1343, align 4
  %1345 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %1344, ptr noundef nonnull align 4 dereferenceable(12) %145)
  store { i64, i32 } %1345, ptr %292, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %290, ptr align 8 %292, i64 12, i1 false)
  %1346 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1347 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1346, ptr noundef nonnull align 4 dereferenceable(12) %290)
  call void @llvm.lifetime.end.p0(i64 12, ptr %290) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %293) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %294) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %295) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %296) #7
  %1348 = load ptr, ptr %12, align 8, !tbaa !5
  %1349 = getelementptr inbounds %class.GVector3, ptr %1348, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %297, ptr align 4 %1349, i64 4, i1 false), !tbaa.struct !12
  %1350 = getelementptr inbounds %class.GFloat, ptr %297, i32 0, i32 0
  %1351 = load i32, ptr %1350, align 4
  %1352 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1351, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store { i64, i32 } %1352, ptr %298, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %296, ptr align 8 %298, i64 12, i1 false)
  %1353 = load ptr, ptr %12, align 8, !tbaa !5
  %1354 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %296, ptr noundef nonnull align 4 dereferenceable(12) %1353)
  %1355 = getelementptr inbounds %class.GFloat, ptr %295, i32 0, i32 0
  store i32 %1354, ptr %1355, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %300) #7
  %1356 = load ptr, ptr %13, align 8, !tbaa !5
  %1357 = getelementptr inbounds %class.GVector3, ptr %1356, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %301, ptr align 4 %1357, i64 4, i1 false), !tbaa.struct !12
  %1358 = getelementptr inbounds %class.GFloat, ptr %301, i32 0, i32 0
  %1359 = load i32, ptr %1358, align 4
  %1360 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1359, ptr noundef nonnull align 4 dereferenceable(12) %163)
  store { i64, i32 } %1360, ptr %302, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %300, ptr align 8 %302, i64 12, i1 false)
  %1361 = load ptr, ptr %13, align 8, !tbaa !5
  %1362 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %300, ptr noundef nonnull align 4 dereferenceable(12) %1361)
  %1363 = getelementptr inbounds %class.GFloat, ptr %299, i32 0, i32 0
  store i32 %1362, ptr %1363, align 4
  %1364 = getelementptr inbounds %class.GFloat, ptr %299, i32 0, i32 0
  %1365 = load i32, ptr %1364, align 4
  %1366 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %295, i32 %1365)
  %1367 = getelementptr inbounds %class.GFloat, ptr %294, i32 0, i32 0
  store i32 %1366, ptr %1367, align 4
  %1368 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1369 = load ptr, ptr %20, align 8, !tbaa !5
  %1370 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1368, ptr noundef nonnull align 4 dereferenceable(12) %1369)
  %1371 = getelementptr inbounds %class.GFloat, ptr %304, i32 0, i32 0
  store i32 %1370, ptr %1371, align 4
  %1372 = getelementptr inbounds %class.GFloat, ptr %304, i32 0, i32 0
  %1373 = load i32, ptr %1372, align 4
  %1374 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1373)
  %1375 = getelementptr inbounds %class.GFloat, ptr %303, i32 0, i32 0
  store i32 %1374, ptr %1375, align 4
  %1376 = getelementptr inbounds %class.GFloat, ptr %303, i32 0, i32 0
  %1377 = load i32, ptr %1376, align 4
  %1378 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %294, i32 %1377)
  %1379 = getelementptr inbounds %class.GFloat, ptr %293, i32 0, i32 0
  store i32 %1378, ptr %1379, align 4
  %1380 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1380, ptr align 4 %293, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %300) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %296) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %295) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %294) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %293) #7
  %1381 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 10
  %1382 = call i32 @_ZN5GMath4ZeroEv()
  %1383 = getelementptr inbounds %class.GFloat, ptr %305, i32 0, i32 0
  store i32 %1382, ptr %1383, align 4
  %1384 = getelementptr inbounds %class.GFloat, ptr %305, i32 0, i32 0
  %1385 = load i32, ptr %1384, align 4
  %1386 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1381, i32 %1385)
  br i1 %1386, label %1387, label %1388

1387:                                             ; preds = %1326
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1388:                                             ; preds = %1326
  %1389 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1390 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1389)
  %1391 = getelementptr inbounds %class.GFloat, ptr %306, i32 0, i32 0
  store i32 %1390, ptr %1391, align 4
  %1392 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 10
  %1393 = getelementptr inbounds %class.GFloat, ptr %306, i32 0, i32 0
  %1394 = load i32, ptr %1393, align 4
  %1395 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1392, i32 %1394)
  %1396 = getelementptr inbounds %class.GFloat, ptr %307, i32 0, i32 0
  store i32 %1395, ptr %1396, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %308) #7
  %1397 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1398 = getelementptr inbounds %class.GVector3, ptr %1397, i32 0, i32 2
  %1399 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1400 = getelementptr inbounds %class.GVector3, ptr %1399, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %309, ptr align 4 %1400, i64 4, i1 false), !tbaa.struct !12
  %1401 = getelementptr inbounds %class.GFloat, ptr %309, i32 0, i32 0
  %1402 = load i32, ptr %1401, align 4
  %1403 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1398, i32 %1402)
  %1404 = getelementptr inbounds %class.GFloat, ptr %308, i32 0, i32 0
  store i32 %1403, ptr %1404, align 4
  %1405 = call i32 @_ZN5GMath4ZeroEv()
  %1406 = getelementptr inbounds %class.GFloat, ptr %310, i32 0, i32 0
  store i32 %1405, ptr %1406, align 4
  %1407 = getelementptr inbounds %class.GFloat, ptr %310, i32 0, i32 0
  %1408 = load i32, ptr %1407, align 4
  %1409 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %308, i32 %1408)
  call void @llvm.lifetime.end.p0(i64 4, ptr %308) #7
  br i1 %1409, label %1410, label %1415

1410:                                             ; preds = %1388
  call void @llvm.lifetime.start.p0(i64 12, ptr %311) #7
  %1411 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1412 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1411)
  store { i64, i32 } %1412, ptr %312, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %311, ptr align 8 %312, i64 12, i1 false)
  %1413 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1414 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1413, ptr noundef nonnull align 4 dereferenceable(12) %311)
  call void @llvm.lifetime.end.p0(i64 12, ptr %311) #7
  br label %1415

1415:                                             ; preds = %1410, %1388
  %1416 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1416)
  call void @llvm.lifetime.start.p0(i64 12, ptr %313) #7
  %1417 = load ptr, ptr %12, align 8, !tbaa !5
  %1418 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %314) #7
  %1419 = load ptr, ptr %13, align 8, !tbaa !5
  %1420 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1419, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1420, ptr %315, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %314, ptr align 8 %315, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %316) #7
  %1421 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 10
  %1422 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %317, ptr align 8 %1422, i64 4, i1 false), !tbaa.struct !12
  %1423 = getelementptr inbounds %class.GFloat, ptr %317, i32 0, i32 0
  %1424 = load i32, ptr %1423, align 4
  %1425 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1421, i32 %1424)
  store { i64, i32 } %1425, ptr %318, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %316, ptr align 8 %318, i64 12, i1 false)
  %1426 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 10
  %1427 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1417, ptr noundef nonnull align 4 dereferenceable(12) %1418, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %18, ptr noundef nonnull align 4 dereferenceable(12) %314, ptr noundef nonnull align 4 dereferenceable(12) %316, ptr noundef nonnull align 4 dereferenceable(12) %1426)
  store { i64, i32 } %1427, ptr %319, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %313, ptr align 8 %319, i64 12, i1 false)
  %1428 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 10
  %1429 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1428, ptr noundef nonnull align 4 dereferenceable(12) %313)
  call void @llvm.lifetime.end.p0(i64 12, ptr %316) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %314) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %313) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %320) #7
  %1430 = load ptr, ptr %12, align 8, !tbaa !5
  %1431 = getelementptr inbounds %class.GVector3, ptr %1430, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %321, ptr align 4 %1431, i64 4, i1 false), !tbaa.struct !12
  %1432 = getelementptr inbounds %class.GFloat, ptr %321, i32 0, i32 0
  %1433 = load i32, ptr %1432, align 4
  %1434 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %1433, ptr noundef nonnull align 4 dereferenceable(12) %148)
  store { i64, i32 } %1434, ptr %322, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %320, ptr align 8 %322, i64 12, i1 false)
  %1435 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1436 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1435, ptr noundef nonnull align 4 dereferenceable(12) %320)
  call void @llvm.lifetime.end.p0(i64 12, ptr %320) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %323) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %324) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %325) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %326) #7
  %1437 = load ptr, ptr %12, align 8, !tbaa !5
  %1438 = getelementptr inbounds %class.GVector3, ptr %1437, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %327, ptr align 4 %1438, i64 4, i1 false), !tbaa.struct !12
  %1439 = getelementptr inbounds %class.GFloat, ptr %327, i32 0, i32 0
  %1440 = load i32, ptr %1439, align 4
  %1441 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1440, ptr noundef nonnull align 4 dereferenceable(12) %157)
  store { i64, i32 } %1441, ptr %328, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %326, ptr align 8 %328, i64 12, i1 false)
  %1442 = load ptr, ptr %12, align 8, !tbaa !5
  %1443 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %326, ptr noundef nonnull align 4 dereferenceable(12) %1442)
  %1444 = getelementptr inbounds %class.GFloat, ptr %325, i32 0, i32 0
  store i32 %1443, ptr %1444, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %330) #7
  %1445 = load ptr, ptr %13, align 8, !tbaa !5
  %1446 = getelementptr inbounds %class.GVector3, ptr %1445, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %331, ptr align 4 %1446, i64 4, i1 false), !tbaa.struct !12
  %1447 = getelementptr inbounds %class.GFloat, ptr %331, i32 0, i32 0
  %1448 = load i32, ptr %1447, align 4
  %1449 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1448, ptr noundef nonnull align 4 dereferenceable(12) %163)
  store { i64, i32 } %1449, ptr %332, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %330, ptr align 8 %332, i64 12, i1 false)
  %1450 = load ptr, ptr %13, align 8, !tbaa !5
  %1451 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %330, ptr noundef nonnull align 4 dereferenceable(12) %1450)
  %1452 = getelementptr inbounds %class.GFloat, ptr %329, i32 0, i32 0
  store i32 %1451, ptr %1452, align 4
  %1453 = getelementptr inbounds %class.GFloat, ptr %329, i32 0, i32 0
  %1454 = load i32, ptr %1453, align 4
  %1455 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %325, i32 %1454)
  %1456 = getelementptr inbounds %class.GFloat, ptr %324, i32 0, i32 0
  store i32 %1455, ptr %1456, align 4
  %1457 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1458 = load ptr, ptr %20, align 8, !tbaa !5
  %1459 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1457, ptr noundef nonnull align 4 dereferenceable(12) %1458)
  %1460 = getelementptr inbounds %class.GFloat, ptr %334, i32 0, i32 0
  store i32 %1459, ptr %1460, align 4
  %1461 = getelementptr inbounds %class.GFloat, ptr %334, i32 0, i32 0
  %1462 = load i32, ptr %1461, align 4
  %1463 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1462)
  %1464 = getelementptr inbounds %class.GFloat, ptr %333, i32 0, i32 0
  store i32 %1463, ptr %1464, align 4
  %1465 = getelementptr inbounds %class.GFloat, ptr %333, i32 0, i32 0
  %1466 = load i32, ptr %1465, align 4
  %1467 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %324, i32 %1466)
  %1468 = getelementptr inbounds %class.GFloat, ptr %323, i32 0, i32 0
  store i32 %1467, ptr %1468, align 4
  %1469 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1469, ptr align 4 %323, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %330) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %326) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %325) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %324) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %323) #7
  %1470 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 11
  %1471 = call i32 @_ZN5GMath4ZeroEv()
  %1472 = getelementptr inbounds %class.GFloat, ptr %335, i32 0, i32 0
  store i32 %1471, ptr %1472, align 4
  %1473 = getelementptr inbounds %class.GFloat, ptr %335, i32 0, i32 0
  %1474 = load i32, ptr %1473, align 4
  %1475 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1470, i32 %1474)
  br i1 %1475, label %1476, label %1477

1476:                                             ; preds = %1415
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1477:                                             ; preds = %1415
  %1478 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1479 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1478)
  %1480 = getelementptr inbounds %class.GFloat, ptr %336, i32 0, i32 0
  store i32 %1479, ptr %1480, align 4
  %1481 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 11
  %1482 = getelementptr inbounds %class.GFloat, ptr %336, i32 0, i32 0
  %1483 = load i32, ptr %1482, align 4
  %1484 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1481, i32 %1483)
  %1485 = getelementptr inbounds %class.GFloat, ptr %337, i32 0, i32 0
  store i32 %1484, ptr %1485, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %338) #7
  %1486 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1487 = getelementptr inbounds %class.GVector3, ptr %1486, i32 0, i32 2
  %1488 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1489 = getelementptr inbounds %class.GVector3, ptr %1488, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %339, ptr align 4 %1489, i64 4, i1 false), !tbaa.struct !12
  %1490 = getelementptr inbounds %class.GFloat, ptr %339, i32 0, i32 0
  %1491 = load i32, ptr %1490, align 4
  %1492 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1487, i32 %1491)
  %1493 = getelementptr inbounds %class.GFloat, ptr %338, i32 0, i32 0
  store i32 %1492, ptr %1493, align 4
  %1494 = call i32 @_ZN5GMath4ZeroEv()
  %1495 = getelementptr inbounds %class.GFloat, ptr %340, i32 0, i32 0
  store i32 %1494, ptr %1495, align 4
  %1496 = getelementptr inbounds %class.GFloat, ptr %340, i32 0, i32 0
  %1497 = load i32, ptr %1496, align 4
  %1498 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %338, i32 %1497)
  call void @llvm.lifetime.end.p0(i64 4, ptr %338) #7
  br i1 %1498, label %1499, label %1504

1499:                                             ; preds = %1477
  call void @llvm.lifetime.start.p0(i64 12, ptr %341) #7
  %1500 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1501 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1500)
  store { i64, i32 } %1501, ptr %342, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %341, ptr align 8 %342, i64 12, i1 false)
  %1502 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1503 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1502, ptr noundef nonnull align 4 dereferenceable(12) %341)
  call void @llvm.lifetime.end.p0(i64 12, ptr %341) #7
  br label %1504

1504:                                             ; preds = %1499, %1477
  %1505 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1505)
  call void @llvm.lifetime.start.p0(i64 12, ptr %343) #7
  %1506 = load ptr, ptr %12, align 8, !tbaa !5
  %1507 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %344) #7
  %1508 = load ptr, ptr %13, align 8, !tbaa !5
  %1509 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1508, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1509, ptr %345, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %344, ptr align 8 %345, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %346) #7
  %1510 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 11
  %1511 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %347, ptr align 4 %1511, i64 4, i1 false), !tbaa.struct !12
  %1512 = getelementptr inbounds %class.GFloat, ptr %347, i32 0, i32 0
  %1513 = load i32, ptr %1512, align 4
  %1514 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1510, i32 %1513)
  store { i64, i32 } %1514, ptr %348, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %346, ptr align 8 %348, i64 12, i1 false)
  %1515 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 11
  %1516 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1506, ptr noundef nonnull align 4 dereferenceable(12) %1507, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %19, ptr noundef nonnull align 4 dereferenceable(12) %344, ptr noundef nonnull align 4 dereferenceable(12) %346, ptr noundef nonnull align 4 dereferenceable(12) %1515)
  store { i64, i32 } %1516, ptr %349, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %343, ptr align 8 %349, i64 12, i1 false)
  %1517 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 11
  %1518 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1517, ptr noundef nonnull align 4 dereferenceable(12) %343)
  call void @llvm.lifetime.end.p0(i64 12, ptr %346) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %344) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %343) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %350) #7
  %1519 = load ptr, ptr %12, align 8, !tbaa !5
  %1520 = getelementptr inbounds %class.GVector3, ptr %1519, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %351, ptr align 4 %1520, i64 4, i1 false), !tbaa.struct !12
  %1521 = getelementptr inbounds %class.GFloat, ptr %351, i32 0, i32 0
  %1522 = load i32, ptr %1521, align 4
  %1523 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %1522, ptr noundef nonnull align 4 dereferenceable(12) %142)
  store { i64, i32 } %1523, ptr %352, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %350, ptr align 8 %352, i64 12, i1 false)
  %1524 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1525 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1524, ptr noundef nonnull align 4 dereferenceable(12) %350)
  call void @llvm.lifetime.end.p0(i64 12, ptr %350) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %353) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %354) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %355) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %356) #7
  %1526 = load ptr, ptr %12, align 8, !tbaa !5
  %1527 = getelementptr inbounds %class.GVector3, ptr %1526, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %357, ptr align 4 %1527, i64 4, i1 false), !tbaa.struct !12
  %1528 = getelementptr inbounds %class.GFloat, ptr %357, i32 0, i32 0
  %1529 = load i32, ptr %1528, align 4
  %1530 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1529, ptr noundef nonnull align 4 dereferenceable(12) %151)
  store { i64, i32 } %1530, ptr %358, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %356, ptr align 8 %358, i64 12, i1 false)
  %1531 = load ptr, ptr %12, align 8, !tbaa !5
  %1532 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %356, ptr noundef nonnull align 4 dereferenceable(12) %1531)
  %1533 = getelementptr inbounds %class.GFloat, ptr %355, i32 0, i32 0
  store i32 %1532, ptr %1533, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %360) #7
  %1534 = load ptr, ptr %13, align 8, !tbaa !5
  %1535 = getelementptr inbounds %class.GVector3, ptr %1534, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %361, ptr align 4 %1535, i64 4, i1 false), !tbaa.struct !12
  %1536 = getelementptr inbounds %class.GFloat, ptr %361, i32 0, i32 0
  %1537 = load i32, ptr %1536, align 4
  %1538 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %1537, ptr noundef nonnull align 4 dereferenceable(12) %166)
  store { i64, i32 } %1538, ptr %362, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %360, ptr align 8 %362, i64 12, i1 false)
  %1539 = load ptr, ptr %13, align 8, !tbaa !5
  %1540 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %360, ptr noundef nonnull align 4 dereferenceable(12) %1539)
  %1541 = getelementptr inbounds %class.GFloat, ptr %359, i32 0, i32 0
  store i32 %1540, ptr %1541, align 4
  %1542 = getelementptr inbounds %class.GFloat, ptr %359, i32 0, i32 0
  %1543 = load i32, ptr %1542, align 4
  %1544 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %355, i32 %1543)
  %1545 = getelementptr inbounds %class.GFloat, ptr %354, i32 0, i32 0
  store i32 %1544, ptr %1545, align 4
  %1546 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1547 = load ptr, ptr %20, align 8, !tbaa !5
  %1548 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1546, ptr noundef nonnull align 4 dereferenceable(12) %1547)
  %1549 = getelementptr inbounds %class.GFloat, ptr %364, i32 0, i32 0
  store i32 %1548, ptr %1549, align 4
  %1550 = getelementptr inbounds %class.GFloat, ptr %364, i32 0, i32 0
  %1551 = load i32, ptr %1550, align 4
  %1552 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1551)
  %1553 = getelementptr inbounds %class.GFloat, ptr %363, i32 0, i32 0
  store i32 %1552, ptr %1553, align 4
  %1554 = getelementptr inbounds %class.GFloat, ptr %363, i32 0, i32 0
  %1555 = load i32, ptr %1554, align 4
  %1556 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %354, i32 %1555)
  %1557 = getelementptr inbounds %class.GFloat, ptr %353, i32 0, i32 0
  store i32 %1556, ptr %1557, align 4
  %1558 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1558, ptr align 4 %353, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %360) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %356) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %355) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %354) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %353) #7
  %1559 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 12
  %1560 = call i32 @_ZN5GMath4ZeroEv()
  %1561 = getelementptr inbounds %class.GFloat, ptr %365, i32 0, i32 0
  store i32 %1560, ptr %1561, align 4
  %1562 = getelementptr inbounds %class.GFloat, ptr %365, i32 0, i32 0
  %1563 = load i32, ptr %1562, align 4
  %1564 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1559, i32 %1563)
  br i1 %1564, label %1565, label %1566

1565:                                             ; preds = %1504
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1566:                                             ; preds = %1504
  %1567 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1568 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1567)
  %1569 = getelementptr inbounds %class.GFloat, ptr %366, i32 0, i32 0
  store i32 %1568, ptr %1569, align 4
  %1570 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 12
  %1571 = getelementptr inbounds %class.GFloat, ptr %366, i32 0, i32 0
  %1572 = load i32, ptr %1571, align 4
  %1573 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1570, i32 %1572)
  %1574 = getelementptr inbounds %class.GFloat, ptr %367, i32 0, i32 0
  store i32 %1573, ptr %1574, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %368) #7
  %1575 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1576 = getelementptr inbounds %class.GVector3, ptr %1575, i32 0, i32 0
  %1577 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1578 = getelementptr inbounds %class.GVector3, ptr %1577, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %369, ptr align 4 %1578, i64 4, i1 false), !tbaa.struct !12
  %1579 = getelementptr inbounds %class.GFloat, ptr %369, i32 0, i32 0
  %1580 = load i32, ptr %1579, align 4
  %1581 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1576, i32 %1580)
  %1582 = getelementptr inbounds %class.GFloat, ptr %368, i32 0, i32 0
  store i32 %1581, ptr %1582, align 4
  %1583 = call i32 @_ZN5GMath4ZeroEv()
  %1584 = getelementptr inbounds %class.GFloat, ptr %370, i32 0, i32 0
  store i32 %1583, ptr %1584, align 4
  %1585 = getelementptr inbounds %class.GFloat, ptr %370, i32 0, i32 0
  %1586 = load i32, ptr %1585, align 4
  %1587 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %368, i32 %1586)
  call void @llvm.lifetime.end.p0(i64 4, ptr %368) #7
  br i1 %1587, label %1588, label %1593

1588:                                             ; preds = %1566
  call void @llvm.lifetime.start.p0(i64 12, ptr %371) #7
  %1589 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1590 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1589)
  store { i64, i32 } %1590, ptr %372, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %371, ptr align 8 %372, i64 12, i1 false)
  %1591 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1592 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1591, ptr noundef nonnull align 4 dereferenceable(12) %371)
  call void @llvm.lifetime.end.p0(i64 12, ptr %371) #7
  br label %1593

1593:                                             ; preds = %1588, %1566
  %1594 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1594)
  call void @llvm.lifetime.start.p0(i64 12, ptr %373) #7
  %1595 = load ptr, ptr %12, align 8, !tbaa !5
  %1596 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %374) #7
  %1597 = load ptr, ptr %13, align 8, !tbaa !5
  %1598 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1597, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1598, ptr %375, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %374, ptr align 8 %375, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %376) #7
  %1599 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 12
  %1600 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %377, ptr align 16 %1600, i64 4, i1 false), !tbaa.struct !12
  %1601 = getelementptr inbounds %class.GFloat, ptr %377, i32 0, i32 0
  %1602 = load i32, ptr %1601, align 4
  %1603 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1599, i32 %1602)
  store { i64, i32 } %1603, ptr %378, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %376, ptr align 8 %378, i64 12, i1 false)
  %1604 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 12
  %1605 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1595, ptr noundef nonnull align 4 dereferenceable(12) %1596, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %374, ptr noundef nonnull align 4 dereferenceable(12) %376, ptr noundef nonnull align 4 dereferenceable(12) %1604)
  store { i64, i32 } %1605, ptr %379, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %373, ptr align 8 %379, i64 12, i1 false)
  %1606 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 12
  %1607 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1606, ptr noundef nonnull align 4 dereferenceable(12) %373)
  call void @llvm.lifetime.end.p0(i64 12, ptr %376) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %374) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %373) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %380) #7
  %1608 = load ptr, ptr %12, align 8, !tbaa !5
  %1609 = getelementptr inbounds %class.GVector3, ptr %1608, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %381, ptr align 4 %1609, i64 4, i1 false), !tbaa.struct !12
  %1610 = getelementptr inbounds %class.GFloat, ptr %381, i32 0, i32 0
  %1611 = load i32, ptr %1610, align 4
  %1612 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %1611, ptr noundef nonnull align 4 dereferenceable(12) %145)
  store { i64, i32 } %1612, ptr %382, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %380, ptr align 8 %382, i64 12, i1 false)
  %1613 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1614 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1613, ptr noundef nonnull align 4 dereferenceable(12) %380)
  call void @llvm.lifetime.end.p0(i64 12, ptr %380) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %383) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %384) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %385) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %386) #7
  %1615 = load ptr, ptr %12, align 8, !tbaa !5
  %1616 = getelementptr inbounds %class.GVector3, ptr %1615, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %387, ptr align 4 %1616, i64 4, i1 false), !tbaa.struct !12
  %1617 = getelementptr inbounds %class.GFloat, ptr %387, i32 0, i32 0
  %1618 = load i32, ptr %1617, align 4
  %1619 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1618, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store { i64, i32 } %1619, ptr %388, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %386, ptr align 8 %388, i64 12, i1 false)
  %1620 = load ptr, ptr %12, align 8, !tbaa !5
  %1621 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %386, ptr noundef nonnull align 4 dereferenceable(12) %1620)
  %1622 = getelementptr inbounds %class.GFloat, ptr %385, i32 0, i32 0
  store i32 %1621, ptr %1622, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %390) #7
  %1623 = load ptr, ptr %13, align 8, !tbaa !5
  %1624 = getelementptr inbounds %class.GVector3, ptr %1623, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %391, ptr align 4 %1624, i64 4, i1 false), !tbaa.struct !12
  %1625 = getelementptr inbounds %class.GFloat, ptr %391, i32 0, i32 0
  %1626 = load i32, ptr %1625, align 4
  %1627 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %1626, ptr noundef nonnull align 4 dereferenceable(12) %166)
  store { i64, i32 } %1627, ptr %392, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %390, ptr align 8 %392, i64 12, i1 false)
  %1628 = load ptr, ptr %13, align 8, !tbaa !5
  %1629 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %390, ptr noundef nonnull align 4 dereferenceable(12) %1628)
  %1630 = getelementptr inbounds %class.GFloat, ptr %389, i32 0, i32 0
  store i32 %1629, ptr %1630, align 4
  %1631 = getelementptr inbounds %class.GFloat, ptr %389, i32 0, i32 0
  %1632 = load i32, ptr %1631, align 4
  %1633 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %385, i32 %1632)
  %1634 = getelementptr inbounds %class.GFloat, ptr %384, i32 0, i32 0
  store i32 %1633, ptr %1634, align 4
  %1635 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1636 = load ptr, ptr %20, align 8, !tbaa !5
  %1637 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1635, ptr noundef nonnull align 4 dereferenceable(12) %1636)
  %1638 = getelementptr inbounds %class.GFloat, ptr %394, i32 0, i32 0
  store i32 %1637, ptr %1638, align 4
  %1639 = getelementptr inbounds %class.GFloat, ptr %394, i32 0, i32 0
  %1640 = load i32, ptr %1639, align 4
  %1641 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1640)
  %1642 = getelementptr inbounds %class.GFloat, ptr %393, i32 0, i32 0
  store i32 %1641, ptr %1642, align 4
  %1643 = getelementptr inbounds %class.GFloat, ptr %393, i32 0, i32 0
  %1644 = load i32, ptr %1643, align 4
  %1645 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %384, i32 %1644)
  %1646 = getelementptr inbounds %class.GFloat, ptr %383, i32 0, i32 0
  store i32 %1645, ptr %1646, align 4
  %1647 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1647, ptr align 4 %383, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %390) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %386) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %385) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %384) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %383) #7
  %1648 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 13
  %1649 = call i32 @_ZN5GMath4ZeroEv()
  %1650 = getelementptr inbounds %class.GFloat, ptr %395, i32 0, i32 0
  store i32 %1649, ptr %1650, align 4
  %1651 = getelementptr inbounds %class.GFloat, ptr %395, i32 0, i32 0
  %1652 = load i32, ptr %1651, align 4
  %1653 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1648, i32 %1652)
  br i1 %1653, label %1654, label %1655

1654:                                             ; preds = %1593
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1655:                                             ; preds = %1593
  %1656 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1657 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1656)
  %1658 = getelementptr inbounds %class.GFloat, ptr %396, i32 0, i32 0
  store i32 %1657, ptr %1658, align 4
  %1659 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 13
  %1660 = getelementptr inbounds %class.GFloat, ptr %396, i32 0, i32 0
  %1661 = load i32, ptr %1660, align 4
  %1662 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1659, i32 %1661)
  %1663 = getelementptr inbounds %class.GFloat, ptr %397, i32 0, i32 0
  store i32 %1662, ptr %1663, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %398) #7
  %1664 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1665 = getelementptr inbounds %class.GVector3, ptr %1664, i32 0, i32 0
  %1666 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1667 = getelementptr inbounds %class.GVector3, ptr %1666, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %399, ptr align 4 %1667, i64 4, i1 false), !tbaa.struct !12
  %1668 = getelementptr inbounds %class.GFloat, ptr %399, i32 0, i32 0
  %1669 = load i32, ptr %1668, align 4
  %1670 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1665, i32 %1669)
  %1671 = getelementptr inbounds %class.GFloat, ptr %398, i32 0, i32 0
  store i32 %1670, ptr %1671, align 4
  %1672 = call i32 @_ZN5GMath4ZeroEv()
  %1673 = getelementptr inbounds %class.GFloat, ptr %400, i32 0, i32 0
  store i32 %1672, ptr %1673, align 4
  %1674 = getelementptr inbounds %class.GFloat, ptr %400, i32 0, i32 0
  %1675 = load i32, ptr %1674, align 4
  %1676 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %398, i32 %1675)
  call void @llvm.lifetime.end.p0(i64 4, ptr %398) #7
  br i1 %1676, label %1677, label %1682

1677:                                             ; preds = %1655
  call void @llvm.lifetime.start.p0(i64 12, ptr %401) #7
  %1678 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1679 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1678)
  store { i64, i32 } %1679, ptr %402, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %401, ptr align 8 %402, i64 12, i1 false)
  %1680 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1681 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1680, ptr noundef nonnull align 4 dereferenceable(12) %401)
  call void @llvm.lifetime.end.p0(i64 12, ptr %401) #7
  br label %1682

1682:                                             ; preds = %1677, %1655
  %1683 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1683)
  call void @llvm.lifetime.start.p0(i64 12, ptr %403) #7
  %1684 = load ptr, ptr %12, align 8, !tbaa !5
  %1685 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %404) #7
  %1686 = load ptr, ptr %13, align 8, !tbaa !5
  %1687 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1686, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1687, ptr %405, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %404, ptr align 8 %405, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %406) #7
  %1688 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 13
  %1689 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %407, ptr align 4 %1689, i64 4, i1 false), !tbaa.struct !12
  %1690 = getelementptr inbounds %class.GFloat, ptr %407, i32 0, i32 0
  %1691 = load i32, ptr %1690, align 4
  %1692 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1688, i32 %1691)
  store { i64, i32 } %1692, ptr %408, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %406, ptr align 8 %408, i64 12, i1 false)
  %1693 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 13
  %1694 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1684, ptr noundef nonnull align 4 dereferenceable(12) %1685, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %18, ptr noundef nonnull align 4 dereferenceable(12) %404, ptr noundef nonnull align 4 dereferenceable(12) %406, ptr noundef nonnull align 4 dereferenceable(12) %1693)
  store { i64, i32 } %1694, ptr %409, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %403, ptr align 8 %409, i64 12, i1 false)
  %1695 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 13
  %1696 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1695, ptr noundef nonnull align 4 dereferenceable(12) %403)
  call void @llvm.lifetime.end.p0(i64 12, ptr %406) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %404) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %403) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %410) #7
  %1697 = load ptr, ptr %12, align 8, !tbaa !5
  %1698 = getelementptr inbounds %class.GVector3, ptr %1697, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %411, ptr align 4 %1698, i64 4, i1 false), !tbaa.struct !12
  %1699 = getelementptr inbounds %class.GFloat, ptr %411, i32 0, i32 0
  %1700 = load i32, ptr %1699, align 4
  %1701 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %1700, ptr noundef nonnull align 4 dereferenceable(12) %148)
  store { i64, i32 } %1701, ptr %412, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %410, ptr align 8 %412, i64 12, i1 false)
  %1702 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1703 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1702, ptr noundef nonnull align 4 dereferenceable(12) %410)
  call void @llvm.lifetime.end.p0(i64 12, ptr %410) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %413) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %414) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %415) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %416) #7
  %1704 = load ptr, ptr %12, align 8, !tbaa !5
  %1705 = getelementptr inbounds %class.GVector3, ptr %1704, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %417, ptr align 4 %1705, i64 4, i1 false), !tbaa.struct !12
  %1706 = getelementptr inbounds %class.GFloat, ptr %417, i32 0, i32 0
  %1707 = load i32, ptr %1706, align 4
  %1708 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1707, ptr noundef nonnull align 4 dereferenceable(12) %157)
  store { i64, i32 } %1708, ptr %418, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %416, ptr align 8 %418, i64 12, i1 false)
  %1709 = load ptr, ptr %12, align 8, !tbaa !5
  %1710 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %416, ptr noundef nonnull align 4 dereferenceable(12) %1709)
  %1711 = getelementptr inbounds %class.GFloat, ptr %415, i32 0, i32 0
  store i32 %1710, ptr %1711, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %420) #7
  %1712 = load ptr, ptr %13, align 8, !tbaa !5
  %1713 = getelementptr inbounds %class.GVector3, ptr %1712, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %421, ptr align 4 %1713, i64 4, i1 false), !tbaa.struct !12
  %1714 = getelementptr inbounds %class.GFloat, ptr %421, i32 0, i32 0
  %1715 = load i32, ptr %1714, align 4
  %1716 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %1715, ptr noundef nonnull align 4 dereferenceable(12) %166)
  store { i64, i32 } %1716, ptr %422, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %420, ptr align 8 %422, i64 12, i1 false)
  %1717 = load ptr, ptr %13, align 8, !tbaa !5
  %1718 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %420, ptr noundef nonnull align 4 dereferenceable(12) %1717)
  %1719 = getelementptr inbounds %class.GFloat, ptr %419, i32 0, i32 0
  store i32 %1718, ptr %1719, align 4
  %1720 = getelementptr inbounds %class.GFloat, ptr %419, i32 0, i32 0
  %1721 = load i32, ptr %1720, align 4
  %1722 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %415, i32 %1721)
  %1723 = getelementptr inbounds %class.GFloat, ptr %414, i32 0, i32 0
  store i32 %1722, ptr %1723, align 4
  %1724 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1725 = load ptr, ptr %20, align 8, !tbaa !5
  %1726 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %1724, ptr noundef nonnull align 4 dereferenceable(12) %1725)
  %1727 = getelementptr inbounds %class.GFloat, ptr %424, i32 0, i32 0
  store i32 %1726, ptr %1727, align 4
  %1728 = getelementptr inbounds %class.GFloat, ptr %424, i32 0, i32 0
  %1729 = load i32, ptr %1728, align 4
  %1730 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1729)
  %1731 = getelementptr inbounds %class.GFloat, ptr %423, i32 0, i32 0
  store i32 %1730, ptr %1731, align 4
  %1732 = getelementptr inbounds %class.GFloat, ptr %423, i32 0, i32 0
  %1733 = load i32, ptr %1732, align 4
  %1734 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %414, i32 %1733)
  %1735 = getelementptr inbounds %class.GFloat, ptr %413, i32 0, i32 0
  store i32 %1734, ptr %1735, align 4
  %1736 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1736, ptr align 4 %413, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.end.p0(i64 12, ptr %420) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %416) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %415) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %414) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %413) #7
  %1737 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 14
  %1738 = call i32 @_ZN5GMath4ZeroEv()
  %1739 = getelementptr inbounds %class.GFloat, ptr %425, i32 0, i32 0
  store i32 %1738, ptr %1739, align 4
  %1740 = getelementptr inbounds %class.GFloat, ptr %425, i32 0, i32 0
  %1741 = load i32, ptr %1740, align 4
  %1742 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1737, i32 %1741)
  br i1 %1742, label %1743, label %1744

1743:                                             ; preds = %1682
  store i32 -1, ptr %6, align 4
  store i32 1, ptr %38, align 4
  br label %1863

1744:                                             ; preds = %1682
  %1745 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1746 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1745)
  %1747 = getelementptr inbounds %class.GFloat, ptr %426, i32 0, i32 0
  store i32 %1746, ptr %1747, align 4
  %1748 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 14
  %1749 = getelementptr inbounds %class.GFloat, ptr %426, i32 0, i32 0
  %1750 = load i32, ptr %1749, align 4
  %1751 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %1748, i32 %1750)
  %1752 = getelementptr inbounds %class.GFloat, ptr %427, i32 0, i32 0
  store i32 %1751, ptr %1752, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %428) #7
  %1753 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1754 = getelementptr inbounds %class.GVector3, ptr %1753, i32 0, i32 0
  %1755 = getelementptr inbounds %class.GTransform_QT, ptr %14, i32 0, i32 1
  %1756 = getelementptr inbounds %class.GVector3, ptr %1755, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %429, ptr align 4 %1756, i64 4, i1 false), !tbaa.struct !12
  %1757 = getelementptr inbounds %class.GFloat, ptr %429, i32 0, i32 0
  %1758 = load i32, ptr %1757, align 4
  %1759 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1754, i32 %1758)
  %1760 = getelementptr inbounds %class.GFloat, ptr %428, i32 0, i32 0
  store i32 %1759, ptr %1760, align 4
  %1761 = call i32 @_ZN5GMath4ZeroEv()
  %1762 = getelementptr inbounds %class.GFloat, ptr %430, i32 0, i32 0
  store i32 %1761, ptr %1762, align 4
  %1763 = getelementptr inbounds %class.GFloat, ptr %430, i32 0, i32 0
  %1764 = load i32, ptr %1763, align 4
  %1765 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %428, i32 %1764)
  call void @llvm.lifetime.end.p0(i64 4, ptr %428) #7
  br i1 %1765, label %1766, label %1771

1766:                                             ; preds = %1744
  call void @llvm.lifetime.start.p0(i64 12, ptr %431) #7
  %1767 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1768 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1767)
  store { i64, i32 } %1768, ptr %432, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %431, ptr align 8 %432, i64 12, i1 false)
  %1769 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1770 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1769, ptr noundef nonnull align 4 dereferenceable(12) %431)
  call void @llvm.lifetime.end.p0(i64 12, ptr %431) #7
  br label %1771

1771:                                             ; preds = %1766, %1744
  %1772 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %1772)
  call void @llvm.lifetime.start.p0(i64 12, ptr %433) #7
  %1773 = load ptr, ptr %12, align 8, !tbaa !5
  %1774 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %434) #7
  %1775 = load ptr, ptr %13, align 8, !tbaa !5
  %1776 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %1775, ptr noundef nonnull align 4 dereferenceable(28) %169)
  store { i64, i32 } %1776, ptr %435, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %434, ptr align 8 %435, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %436) #7
  %1777 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 14
  %1778 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %437, ptr align 8 %1778, i64 4, i1 false), !tbaa.struct !12
  %1779 = getelementptr inbounds %class.GFloat, ptr %437, i32 0, i32 0
  %1780 = load i32, ptr %1779, align 4
  %1781 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %1777, i32 %1780)
  store { i64, i32 } %1781, ptr %438, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %436, ptr align 8 %438, i64 12, i1 false)
  %1782 = getelementptr inbounds [15 x %class.GVector3], ptr %24, i64 0, i64 14
  %1783 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %1773, ptr noundef nonnull align 4 dereferenceable(12) %1774, ptr noundef nonnull align 4 dereferenceable(28) %14, ptr noundef nonnull align 4 dereferenceable(28) %169, ptr noundef nonnull align 4 dereferenceable(12) %19, ptr noundef nonnull align 4 dereferenceable(12) %434, ptr noundef nonnull align 4 dereferenceable(12) %436, ptr noundef nonnull align 4 dereferenceable(12) %1782)
  store { i64, i32 } %1783, ptr %439, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %433, ptr align 8 %439, i64 12, i1 false)
  %1784 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 14
  %1785 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1784, ptr noundef nonnull align 4 dereferenceable(12) %433)
  call void @llvm.lifetime.end.p0(i64 12, ptr %436) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %434) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %433) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %440) #7
  %1786 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %440, ptr align 16 %1786, i64 4, i1 false), !tbaa.struct !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %441) #7
  store i32 0, ptr %441, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %442) #7
  store i32 1, ptr %442, align 4, !tbaa !10
  br label %1787

1787:                                             ; preds = %1813, %1771
  %1788 = load i32, ptr %442, align 4, !tbaa !10
  %1789 = icmp slt i32 %1788, 15
  br i1 %1789, label %1791, label %1790

1790:                                             ; preds = %1787
  store i32 2, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %442) #7
  br label %1816

1791:                                             ; preds = %1787
  %1792 = load i32, ptr %442, align 4, !tbaa !10
  %1793 = sext i32 %1792 to i64
  %1794 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 %1793
  %1795 = call i32 @_ZN5GMath4ZeroEv()
  %1796 = getelementptr inbounds %class.GFloat, ptr %443, i32 0, i32 0
  store i32 %1795, ptr %1796, align 4
  %1797 = getelementptr inbounds %class.GFloat, ptr %443, i32 0, i32 0
  %1798 = load i32, ptr %1797, align 4
  %1799 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %1794, i32 %1798)
  br i1 %1799, label %1800, label %1812

1800:                                             ; preds = %1791
  %1801 = load i32, ptr %442, align 4, !tbaa !10
  %1802 = sext i32 %1801 to i64
  %1803 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 %1802
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %444, ptr align 4 %440, i64 4, i1 false), !tbaa.struct !12
  %1804 = getelementptr inbounds %class.GFloat, ptr %444, i32 0, i32 0
  %1805 = load i32, ptr %1804, align 4
  %1806 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1803, i32 %1805)
  br i1 %1806, label %1807, label %1812

1807:                                             ; preds = %1800
  %1808 = load i32, ptr %442, align 4, !tbaa !10
  store i32 %1808, ptr %441, align 4, !tbaa !10
  %1809 = load i32, ptr %442, align 4, !tbaa !10
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds [15 x %class.GFloat], ptr %21, i64 0, i64 %1810
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %440, ptr align 4 %1811, i64 4, i1 false), !tbaa.struct !12
  br label %1812

1812:                                             ; preds = %1807, %1800, %1791
  br label %1813

1813:                                             ; preds = %1812
  %1814 = load i32, ptr %442, align 4, !tbaa !10
  %1815 = add nsw i32 %1814, 1
  store i32 %1815, ptr %442, align 4, !tbaa !10
  br label %1787, !llvm.loop !13

1816:                                             ; preds = %1790
  %1817 = load ptr, ptr %11, align 8, !tbaa !5
  %1818 = icmp ne ptr %1817, null
  br i1 %1818, label %1819, label %1861

1819:                                             ; preds = %1816
  %1820 = load i32, ptr %441, align 4, !tbaa !10
  %1821 = icmp slt i32 %1820, 6
  br i1 %1821, label %1822, label %1838

1822:                                             ; preds = %1819
  %1823 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %445) #7
  %1824 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %446) #7
  %1825 = call { i64, i32 } @_ZN8GVector34ZeroEv()
  store { i64, i32 } %1825, ptr %447, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %446, ptr align 8 %447, i64 12, i1 false)
  %1826 = call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1824, ptr noundef nonnull align 4 dereferenceable(12) %446)
  store { i64, i32 } %1826, ptr %448, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %445, ptr align 8 %448, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %449) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %450) #7
  %1827 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %451) #7
  %1828 = load i32, ptr %441, align 4, !tbaa !10
  %1829 = sext i32 %1828 to i64
  %1830 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 %1829
  %1831 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1830)
  store { i64, i32 } %1831, ptr %452, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %451, ptr align 8 %452, i64 12, i1 false)
  %1832 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1827, ptr noundef nonnull align 4 dereferenceable(12) %451)
  store { i64, i32 } %1832, ptr %453, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %450, ptr align 8 %453, i64 12, i1 false)
  %1833 = call { i64, i32 } @_ZNK8GVector312GetNormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %450)
  store { i64, i32 } %1833, ptr %454, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %449, ptr align 8 %454, i64 12, i1 false)
  %1834 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %440)
  %1835 = getelementptr inbounds %class.GFloat, ptr %455, i32 0, i32 0
  store i32 %1834, ptr %1835, align 4
  %1836 = getelementptr inbounds %class.GFloat, ptr %455, i32 0, i32 0
  %1837 = load i32, ptr %1836, align 4
  call void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592) %1823, ptr noundef nonnull align 4 dereferenceable(12) %445, ptr noundef nonnull align 4 dereferenceable(12) %449, i32 %1837, i32 noundef -1)
  call void @llvm.lifetime.end.p0(i64 12, ptr %451) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %450) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %449) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %446) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %445) #7
  br label %1860

1838:                                             ; preds = %1819
  %1839 = load i32, ptr %441, align 4, !tbaa !10
  %1840 = icmp sge i32 %1839, 6
  br i1 %1840, label %1841, label %1859

1841:                                             ; preds = %1838
  %1842 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %456) #7
  %1843 = load ptr, ptr %8, align 8, !tbaa !5
  %1844 = load i32, ptr %441, align 4, !tbaa !10
  %1845 = sext i32 %1844 to i64
  %1846 = getelementptr inbounds [15 x %class.GVector3], ptr %23, i64 0, i64 %1845
  %1847 = call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1843, ptr noundef nonnull align 4 dereferenceable(12) %1846)
  store { i64, i32 } %1847, ptr %457, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %456, ptr align 8 %457, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %458) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %459) #7
  %1848 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %460) #7
  %1849 = load i32, ptr %441, align 4, !tbaa !10
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds [15 x %class.GVector3], ptr %22, i64 0, i64 %1850
  %1852 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1851)
  store { i64, i32 } %1852, ptr %461, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %460, ptr align 8 %461, i64 12, i1 false)
  %1853 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1848, ptr noundef nonnull align 4 dereferenceable(12) %460)
  store { i64, i32 } %1853, ptr %462, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %459, ptr align 8 %462, i64 12, i1 false)
  %1854 = call { i64, i32 } @_ZNK8GVector312GetNormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %459)
  store { i64, i32 } %1854, ptr %463, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %458, ptr align 8 %463, i64 12, i1 false)
  %1855 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %440)
  %1856 = getelementptr inbounds %class.GFloat, ptr %464, i32 0, i32 0
  store i32 %1855, ptr %1856, align 4
  %1857 = getelementptr inbounds %class.GFloat, ptr %464, i32 0, i32 0
  %1858 = load i32, ptr %1857, align 4
  call void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592) %1842, ptr noundef nonnull align 4 dereferenceable(12) %456, ptr noundef nonnull align 4 dereferenceable(12) %458, i32 %1858, i32 noundef -1)
  call void @llvm.lifetime.end.p0(i64 12, ptr %460) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %459) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %458) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %456) #7
  br label %1859

1859:                                             ; preds = %1841, %1838
  br label %1860

1860:                                             ; preds = %1859, %1822
  br label %1861

1861:                                             ; preds = %1860, %1816
  %1862 = load i32, ptr %441, align 4, !tbaa !10
  store i32 %1862, ptr %6, align 4
  store i32 1, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %441) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %440) #7
  br label %1863

1863:                                             ; preds = %1861, %1743, %1654, %1565, %1476, %1387, %1298, %1209, %1120, %1031
  call void @llvm.lifetime.end.p0(i64 28, ptr %169) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %166) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %157) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %154) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %142) #7
  br label %1864

1864:                                             ; preds = %1863, %908
  call void @llvm.lifetime.end.p0(i64 12, ptr %124) #7
  br label %1865

1865:                                             ; preds = %1864, %841
  call void @llvm.lifetime.end.p0(i64 12, ptr %106) #7
  br label %1866

1866:                                             ; preds = %1865, %774
  call void @llvm.lifetime.end.p0(i64 12, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  br label %1867

1867:                                             ; preds = %1866, %705
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #7
  br label %1868

1868:                                             ; preds = %1867, %628
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #7
  br label %1869

1869:                                             ; preds = %1868, %551
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 60, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  %1870 = load i32, ptr %6, align 4
  ret i32 %1870
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i32 @_ZN5GMath3OneEv() #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #1

declare void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), i32, i32 noundef) #6

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

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

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


; 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.GTransform_QT = type { %class.GQuaternion, %class.GVector3 }
%class.GQuaternion = type { %class.GFloat, %class.GFloat, %class.GFloat, %class.GFloat }
%class.GFloat = type { i32 }
%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GMatrix3 = type { [3 x [3 x %class.GFloat]] }

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK13GTransform_QTmlERKS_(ptr dead_on_unwind noalias writable sret(%class.GTransform_QT) align 4, ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind noalias writable sret(%class.GTransform_QT) align 4, ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36), ptr noundef nonnull align 4 dereferenceable(16)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress 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) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath3AbsE6GFloat(i32) local_unnamed_addr #1 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: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; 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 #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, i32 } @_ZN8GVector34ZeroEv() local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14GCollision_Box15Box_Box_ContactERK9GShapeBoxRK13GTransform_QTS2_S5_P17GCollisionContact(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(28) %3, ptr noundef %4) local_unnamed_addr #4 align 2 {
  %6 = alloca %class.GTransform_QT, align 4
  %7 = alloca %class.GTransform_QT, align 4
  %8 = alloca %class.GMatrix3, align 4
  %9 = alloca %class.GVector3, align 4
  %10 = alloca %class.GVector3, align 4
  %11 = alloca %class.GVector3, align 4
  %12 = alloca [15 x %class.GFloat], align 16
  %13 = alloca [15 x %class.GVector3], align 16
  %14 = alloca [15 x %class.GVector3], align 16
  %15 = alloca [15 x %class.GVector3], align 16
  %16 = alloca %class.GVector3, align 4
  %17 = alloca %class.GFloat, align 4
  %18 = alloca %class.GVector3, align 4
  %19 = alloca %class.GFloat, align 4
  %20 = alloca %class.GVector3, align 4
  %21 = alloca %class.GFloat, align 4
  %22 = alloca %class.GVector3, align 4
  %23 = alloca %class.GFloat, align 4
  %24 = alloca %class.GVector3, align 4
  %25 = alloca %class.GFloat, align 4
  %26 = alloca %class.GVector3, align 4
  %27 = alloca %class.GFloat, align 4
  %28 = alloca %class.GVector3, align 8
  %29 = alloca %class.GVector3, align 8
  %30 = alloca %class.GVector3, align 4
  %31 = alloca %class.GFloat, align 4
  %32 = alloca %class.GVector3, align 8
  %33 = alloca %class.GVector3, align 4
  %34 = alloca %class.GFloat, align 4
  %35 = alloca %class.GVector3, align 4
  %36 = alloca %class.GFloat, align 4
  %37 = alloca %class.GVector3, align 8
  %38 = alloca %class.GVector3, align 4
  %39 = alloca %class.GFloat, align 4
  %40 = alloca %class.GVector3, align 4
  %41 = alloca %class.GFloat, align 4
  %42 = alloca %class.GVector3, align 8
  %43 = alloca %class.GVector3, align 4
  %44 = alloca %class.GFloat, align 4
  %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.GTransform_QT, align 4
  %55 = alloca %class.GVector3, align 8
  %56 = alloca %class.GFloat, align 4
  %57 = alloca %class.GFloat, align 4
  %58 = alloca %class.GVector3, align 8
  %59 = alloca %class.GVector3, align 8
  %60 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %67 = alloca %class.GFloat, align 4
  %68 = alloca %class.GVector3, align 8
  %69 = alloca %class.GVector3, align 8
  %70 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %77 = alloca %class.GFloat, align 4
  %78 = alloca %class.GVector3, align 8
  %79 = alloca %class.GVector3, align 8
  %80 = alloca %class.GFloat, align 4
  %81 = alloca %class.GVector3, align 8
  %82 = alloca %class.GVector3, align 8
  %83 = alloca %class.GVector3, align 8
  %84 = alloca %class.GVector3, align 8
  %85 = alloca %class.GVector3, align 8
  %86 = alloca %class.GFloat, align 4
  %87 = alloca %class.GFloat, align 4
  %88 = alloca %class.GVector3, align 8
  %89 = alloca %class.GVector3, align 8
  %90 = alloca %class.GFloat, align 4
  %91 = alloca %class.GVector3, align 8
  %92 = alloca %class.GVector3, align 8
  %93 = alloca %class.GVector3, align 8
  %94 = alloca %class.GVector3, align 8
  %95 = alloca %class.GVector3, align 8
  %96 = alloca %class.GFloat, align 4
  %97 = alloca %class.GFloat, align 4
  %98 = alloca %class.GVector3, align 8
  %99 = alloca %class.GVector3, align 8
  %100 = alloca %class.GFloat, align 4
  %101 = alloca %class.GVector3, align 8
  %102 = alloca %class.GVector3, align 8
  %103 = alloca %class.GVector3, align 8
  %104 = alloca %class.GVector3, align 8
  %105 = alloca %class.GVector3, align 8
  %106 = alloca %class.GFloat, align 4
  %107 = alloca %class.GFloat, align 4
  %108 = alloca %class.GVector3, align 8
  %109 = alloca %class.GVector3, align 8
  %110 = alloca %class.GFloat, align 4
  %111 = alloca %class.GVector3, align 8
  %112 = alloca %class.GVector3, align 8
  %113 = alloca %class.GVector3, align 8
  %114 = alloca %class.GVector3, align 8
  %115 = alloca %class.GVector3, align 8
  %116 = alloca %class.GFloat, align 4
  %117 = alloca %class.GFloat, align 4
  %118 = alloca %class.GVector3, align 8
  %119 = alloca %class.GVector3, align 8
  %120 = alloca %class.GFloat, align 4
  %121 = alloca %class.GVector3, align 8
  %122 = alloca %class.GVector3, align 8
  %123 = alloca %class.GVector3, align 8
  %124 = alloca %class.GVector3, align 8
  %125 = alloca %class.GVector3, align 8
  %126 = alloca %class.GFloat, align 4
  %127 = alloca %class.GFloat, align 4
  %128 = alloca %class.GVector3, align 8
  %129 = alloca %class.GVector3, align 8
  %130 = alloca %class.GFloat, align 4
  %131 = alloca %class.GVector3, align 8
  %132 = alloca %class.GVector3, align 8
  %133 = alloca %class.GVector3, align 8
  %134 = alloca %class.GVector3, align 8
  %135 = alloca %class.GVector3, align 8
  %136 = alloca %class.GFloat, align 4
  %137 = alloca %class.GFloat, align 4
  %138 = alloca %class.GVector3, align 8
  %139 = alloca %class.GVector3, align 8
  %140 = alloca %class.GFloat, align 4
  %141 = alloca %class.GVector3, align 8
  %142 = alloca %class.GVector3, align 8
  %143 = alloca %class.GVector3, align 8
  %144 = alloca %class.GVector3, align 8
  %145 = alloca %class.GFloat, align 4
  %146 = alloca %class.GVector3, align 8
  %147 = alloca %class.GVector3, align 8
  %148 = alloca %class.GVector3, align 8
  %149 = alloca %class.GVector3, align 8
  %150 = alloca %class.GVector3, align 8
  %151 = alloca %class.GVector3, align 8
  %152 = alloca %class.GVector3, align 8
  %153 = alloca %class.GVector3, align 8
  %154 = alloca %class.GVector3, align 8
  %155 = getelementptr inbounds i8, ptr %0, i64 12
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %7) #7
  call void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind nonnull writable sret(%class.GTransform_QT) align 4 %7, ptr noundef nonnull align 4 dereferenceable(28) %1)
  call void @_ZNK13GTransform_QTmlERKS_(ptr dead_on_unwind nonnull writable sret(%class.GTransform_QT) align 4 %6, ptr noundef nonnull align 4 dereferenceable(28) %3, ptr noundef nonnull align 4 dereferenceable(28) %7)
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %8) #7
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %8, ptr noundef nonnull align 4 dereferenceable(16) %6)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #7
  %156 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %8, i32 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %156, i64 12, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #7
  %157 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %8, i32 noundef 1)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %157, i64 12, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #7
  %158 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %8, i32 noundef 2)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %158, i64 12, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %12) #7
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %12)
  %.ptr.1 = getelementptr inbounds i8, ptr %12, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.1)
  %.ptr.2 = getelementptr inbounds i8, ptr %12, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.2)
  %.ptr.3 = getelementptr inbounds i8, ptr %12, i64 12
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.3)
  %.ptr.4 = getelementptr inbounds i8, ptr %12, i64 16
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4)
  %.ptr.5 = getelementptr inbounds i8, ptr %12, i64 20
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.5)
  %.ptr.6 = getelementptr inbounds i8, ptr %12, i64 24
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6)
  %.ptr.7 = getelementptr inbounds i8, ptr %12, i64 28
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7)
  %.ptr.8 = getelementptr inbounds i8, ptr %12, i64 32
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8)
  %.ptr.9 = getelementptr inbounds i8, ptr %12, i64 36
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.9)
  %.ptr.10 = getelementptr inbounds i8, ptr %12, i64 40
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.10)
  %.ptr.11 = getelementptr inbounds i8, ptr %12, i64 44
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.11)
  %.ptr.12 = getelementptr inbounds i8, ptr %12, i64 48
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.12)
  %.ptr.13 = getelementptr inbounds i8, ptr %12, i64 52
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.13)
  %.ptr.14 = getelementptr inbounds i8, ptr %12, i64 56
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.14)
  %159 = getelementptr inbounds i8, ptr %2, i64 12
  call void @llvm.lifetime.start.p0(i64 180, ptr nonnull %13) #7
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %13)
  %.ptr695.1 = getelementptr inbounds i8, ptr %13, i64 12
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.1)
  %.ptr695.2 = getelementptr inbounds i8, ptr %13, i64 24
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.2)
  %.ptr695.3 = getelementptr inbounds i8, ptr %13, i64 36
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.3)
  %.ptr695.4 = getelementptr inbounds i8, ptr %13, i64 48
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.4)
  %.ptr695.5 = getelementptr inbounds i8, ptr %13, i64 60
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.5)
  %.ptr695.6 = getelementptr inbounds i8, ptr %13, i64 72
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6)
  %.ptr695.7 = getelementptr inbounds i8, ptr %13, i64 84
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7)
  %.ptr695.8 = getelementptr inbounds i8, ptr %13, i64 96
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8)
  %.ptr695.9 = getelementptr inbounds i8, ptr %13, i64 108
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9)
  %.ptr695.10 = getelementptr inbounds i8, ptr %13, i64 120
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10)
  %.ptr695.11 = getelementptr inbounds i8, ptr %13, i64 132
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11)
  %.ptr695.12 = getelementptr inbounds i8, ptr %13, i64 144
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12)
  %.ptr695.13 = getelementptr inbounds i8, ptr %13, i64 156
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13)
  %.ptr695.14 = getelementptr inbounds i8, ptr %13, i64 168
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14)
  call void @llvm.lifetime.start.p0(i64 180, ptr nonnull %14) #7
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %14)
  %.ptr699.1 = getelementptr inbounds i8, ptr %14, i64 12
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.1)
  %.ptr699.2 = getelementptr inbounds i8, ptr %14, i64 24
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.2)
  %.ptr699.3 = getelementptr inbounds i8, ptr %14, i64 36
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.3)
  %.ptr699.4 = getelementptr inbounds i8, ptr %14, i64 48
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.4)
  %.ptr699.5 = getelementptr inbounds i8, ptr %14, i64 60
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.5)
  %.ptr699.6 = getelementptr inbounds i8, ptr %14, i64 72
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.6)
  %.ptr699.7 = getelementptr inbounds i8, ptr %14, i64 84
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.7)
  %.ptr699.8 = getelementptr inbounds i8, ptr %14, i64 96
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.8)
  %.ptr699.9 = getelementptr inbounds i8, ptr %14, i64 108
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.9)
  %.ptr699.10 = getelementptr inbounds i8, ptr %14, i64 120
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.10)
  %.ptr699.11 = getelementptr inbounds i8, ptr %14, i64 132
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.11)
  %.ptr699.12 = getelementptr inbounds i8, ptr %14, i64 144
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.12)
  %.ptr699.13 = getelementptr inbounds i8, ptr %14, i64 156
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.13)
  %.ptr699.14 = getelementptr inbounds i8, ptr %14, i64 168
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.14)
  call void @llvm.lifetime.start.p0(i64 180, ptr nonnull %15) #7
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %15)
  %.ptr703.1 = getelementptr inbounds i8, ptr %15, i64 12
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.1)
  %.ptr703.2 = getelementptr inbounds i8, ptr %15, i64 24
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.2)
  %.ptr703.3 = getelementptr inbounds i8, ptr %15, i64 36
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.3)
  %.ptr703.4 = getelementptr inbounds i8, ptr %15, i64 48
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.4)
  %.ptr703.5 = getelementptr inbounds i8, ptr %15, i64 60
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.5)
  %.ptr703.6 = getelementptr inbounds i8, ptr %15, i64 72
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.6)
  %.ptr703.7 = getelementptr inbounds i8, ptr %15, i64 84
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.7)
  %.ptr703.8 = getelementptr inbounds i8, ptr %15, i64 96
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.8)
  %.ptr703.9 = getelementptr inbounds i8, ptr %15, i64 108
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.9)
  %.ptr703.10 = getelementptr inbounds i8, ptr %15, i64 120
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.10)
  %.ptr703.11 = getelementptr inbounds i8, ptr %15, i64 132
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.11)
  %.ptr703.12 = getelementptr inbounds i8, ptr %15, i64 144
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.12)
  %.ptr703.13 = getelementptr inbounds i8, ptr %15, i64 156
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.13)
  %.ptr703.14 = getelementptr inbounds i8, ptr %15, i64 168
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.14)
  %160 = getelementptr inbounds i8, ptr %6, i64 16
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #7
  %.sroa.0566.0.copyload = load i32, ptr %9, align 4, !tbaa !6
  %161 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0566.0.copyload)
  %.sroa.0564.0.copyload = load i32, ptr %10, align 4, !tbaa !6
  %162 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0564.0.copyload)
  %.sroa.0562.0.copyload = load i32, ptr %11, align 4, !tbaa !6
  %163 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0562.0.copyload)
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %16, i32 %161, i32 %162, i32 %163)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #7
  %164 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %16, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %165 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %155, i32 %164)
  store i32 %165, ptr %17, align 4
  %.sroa.0558.0.copyload = load i32, ptr %160, align 4, !tbaa !6
  %166 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0558.0.copyload)
  %167 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 %166)
  store i32 %167, ptr %12, align 16, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #7
  %168 = call i32 @_ZN5GMath4ZeroEv()
  %169 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %168)
  br i1 %169, label %663, label %170

170:                                              ; preds = %5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %18) #7
  %171 = call i32 @_ZN5GMath4ZeroEv()
  %172 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %160, i32 %171)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  %173 = call i32 @_ZN5GMath3OneEv()
  br i1 %172, label %176, label %174

174:                                              ; preds = %170
  store i32 %173, ptr %19, align 4
  %175 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %19)
  br label %176

176:                                              ; preds = %170, %174
  %.sroa.0556.0 = phi i32 [ %175, %174 ], [ %173, %170 ]
  %177 = call i32 @_ZN5GMath4ZeroEv()
  %178 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %18, i32 %.sroa.0556.0, i32 %177, i32 %178)
  %179 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(12) %18)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #7
  %180 = getelementptr inbounds i8, ptr %9, i64 4
  %.sroa.0551.0.copyload = load i32, ptr %180, align 4, !tbaa !6
  %181 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0551.0.copyload)
  %182 = getelementptr inbounds i8, ptr %10, i64 4
  %.sroa.0549.0.copyload = load i32, ptr %182, align 4, !tbaa !6
  %183 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0549.0.copyload)
  %184 = getelementptr inbounds i8, ptr %11, i64 4
  %.sroa.0547.0.copyload = load i32, ptr %184, align 4, !tbaa !6
  %185 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0547.0.copyload)
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %20, i32 %181, i32 %183, i32 %185)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  %186 = getelementptr inbounds i8, ptr %0, i64 16
  %187 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %188 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %186, i32 %187)
  store i32 %188, ptr %21, align 4
  %189 = getelementptr inbounds i8, ptr %6, i64 20
  %.sroa.0543.0.copyload = load i32, ptr %189, align 4, !tbaa !6
  %190 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0543.0.copyload)
  %191 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 %190)
  store i32 %191, ptr %.ptr.1, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  %192 = call i32 @_ZN5GMath4ZeroEv()
  %193 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.1, i32 %192)
  br i1 %193, label %662, label %194

194:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #7
  %195 = call i32 @_ZN5GMath4ZeroEv()
  %196 = call i32 @_ZN5GMath4ZeroEv()
  %197 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %189, i32 %196)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  %198 = call i32 @_ZN5GMath3OneEv()
  br i1 %197, label %201, label %199

199:                                              ; preds = %194
  store i32 %198, ptr %23, align 4
  %200 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %23)
  br label %201

201:                                              ; preds = %194, %199
  %.sroa.0540.0 = phi i32 [ %200, %199 ], [ %198, %194 ]
  %202 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %22, i32 %195, i32 %.sroa.0540.0, i32 %202)
  %203 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.1, ptr noundef nonnull align 4 dereferenceable(12) %22)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %24) #7
  %204 = getelementptr inbounds i8, ptr %9, i64 8
  %.sroa.0536.0.copyload = load i32, ptr %204, align 4, !tbaa !6
  %205 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0536.0.copyload)
  %206 = getelementptr inbounds i8, ptr %10, i64 8
  %.sroa.0534.0.copyload = load i32, ptr %206, align 4, !tbaa !6
  %207 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0534.0.copyload)
  %208 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.0532.0.copyload = load i32, ptr %208, align 4, !tbaa !6
  %209 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0532.0.copyload)
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %24, i32 %205, i32 %207, i32 %209)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  %210 = getelementptr inbounds i8, ptr %0, i64 20
  %211 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %24, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %212 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %210, i32 %211)
  store i32 %212, ptr %25, align 4
  %213 = getelementptr inbounds i8, ptr %6, i64 24
  %.sroa.0528.0.copyload = load i32, ptr %213, align 4, !tbaa !6
  %214 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0528.0.copyload)
  %215 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %25, i32 %214)
  store i32 %215, ptr %.ptr.2, align 8, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  %216 = call i32 @_ZN5GMath4ZeroEv()
  %217 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.2, i32 %216)
  br i1 %217, label %661, label %218

218:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #7
  %219 = call i32 @_ZN5GMath3OneEv()
  %220 = call i32 @_ZN5GMath4ZeroEv()
  %221 = call i32 @_ZN5GMath4ZeroEv()
  %222 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %213, i32 %221)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #7
  %223 = call i32 @_ZN5GMath3OneEv()
  br i1 %222, label %226, label %224

224:                                              ; preds = %218
  store i32 %223, ptr %27, align 4
  %225 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %27)
  br label %226

226:                                              ; preds = %218, %224
  %.sroa.0524.0 = phi i32 [ %225, %224 ], [ %223, %218 ]
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %26, i32 %219, i32 %220, i32 %.sroa.0524.0)
  %227 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.2, ptr noundef nonnull align 4 dereferenceable(12) %26)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #7
  %228 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %160)
  %.fca.0.extract514 = extractvalue { i64, i32 } %228, 0
  %.fca.1.extract515 = extractvalue { i64, i32 } %228, 1
  store i64 %.fca.0.extract514, ptr %29, align 8
  %.sroa.2517.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  store i32 %.fca.1.extract515, ptr %.sroa.2517.0..sroa_idx, align 8
  %229 = call { i64, i32 } @_ZNK11GQuaternion14UnRotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(12) %29)
  %.fca.0.extract510 = extractvalue { i64, i32 } %229, 0
  %.fca.1.extract511 = extractvalue { i64, i32 } %229, 1
  store i64 %.fca.0.extract510, ptr %28, align 8
  %.sroa.2513.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
  store i32 %.fca.1.extract511, ptr %.sroa.2513.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #7
  %.sroa.0509.0.copyload = load i32, ptr %16, align 4, !tbaa !6
  %.sroa.0508.0.copyload = load i32, ptr %20, align 4, !tbaa !6
  %.sroa.0507.0.copyload = load i32, ptr %24, align 4, !tbaa !6
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %30, i32 %.sroa.0509.0.copyload, i32 %.sroa.0508.0.copyload, i32 %.sroa.0507.0.copyload)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #7
  %230 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %30, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %231 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %159, i32 %230)
  store i32 %231, ptr %31, align 4
  %.sroa.0503.0.copyload = load i32, ptr %28, align 8, !tbaa !6
  %232 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0503.0.copyload)
  %233 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %31, i32 %232)
  store i32 %233, ptr %.ptr.3, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #7
  %234 = call i32 @_ZN5GMath4ZeroEv()
  %235 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.3, i32 %234)
  br i1 %235, label %660, label %236

236:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #7
  %237 = call i32 @_ZN5GMath4ZeroEv()
  %238 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %28, i32 %237)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #7
  %239 = call i32 @_ZN5GMath3OneEv()
  br i1 %238, label %242, label %240

240:                                              ; preds = %236
  store i32 %239, ptr %34, align 4
  %241 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %34)
  br label %242

242:                                              ; preds = %236, %240
  %.sroa.0501.0 = phi i32 [ %241, %240 ], [ %239, %236 ]
  %243 = call i32 @_ZN5GMath4ZeroEv()
  %244 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %33, i32 %.sroa.0501.0, i32 %243, i32 %244)
  %245 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(12) %33)
  %.fca.0.extract494 = extractvalue { i64, i32 } %245, 0
  %.fca.1.extract495 = extractvalue { i64, i32 } %245, 1
  store i64 %.fca.0.extract494, ptr %32, align 8
  %.sroa.2497.0..sroa_idx = getelementptr inbounds i8, ptr %32, i64 8
  store i32 %.fca.1.extract495, ptr %.sroa.2497.0..sroa_idx, align 8
  %246 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.3, ptr noundef nonnull align 4 dereferenceable(12) %32)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #7
  %247 = getelementptr inbounds i8, ptr %16, i64 4
  %.sroa.0493.0.copyload = load i32, ptr %247, align 4, !tbaa !6
  %248 = getelementptr inbounds i8, ptr %20, i64 4
  %.sroa.0492.0.copyload = load i32, ptr %248, align 4, !tbaa !6
  %249 = getelementptr inbounds i8, ptr %24, i64 4
  %.sroa.0491.0.copyload = load i32, ptr %249, align 4, !tbaa !6
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %35, i32 %.sroa.0493.0.copyload, i32 %.sroa.0492.0.copyload, i32 %.sroa.0491.0.copyload)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #7
  %250 = getelementptr inbounds i8, ptr %2, i64 16
  %251 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %35, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %252 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %250, i32 %251)
  store i32 %252, ptr %36, align 4
  %253 = getelementptr inbounds i8, ptr %28, i64 4
  %.sroa.0487.0.copyload = load i32, ptr %253, align 4, !tbaa !6
  %254 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0487.0.copyload)
  %255 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %36, i32 %254)
  store i32 %255, ptr %.ptr.4, align 16, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #7
  %256 = call i32 @_ZN5GMath4ZeroEv()
  %257 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4, i32 %256)
  br i1 %257, label %659, label %258

258:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %38) #7
  %259 = call i32 @_ZN5GMath4ZeroEv()
  %260 = call i32 @_ZN5GMath4ZeroEv()
  %261 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %253, i32 %260)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #7
  %262 = call i32 @_ZN5GMath3OneEv()
  br i1 %261, label %265, label %263

263:                                              ; preds = %258
  store i32 %262, ptr %39, align 4
  %264 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %39)
  br label %265

265:                                              ; preds = %258, %263
  %.sroa.0484.0 = phi i32 [ %264, %263 ], [ %262, %258 ]
  %266 = call i32 @_ZN5GMath4ZeroEv()
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %38, i32 %259, i32 %.sroa.0484.0, i32 %266)
  %267 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(12) %38)
  %.fca.0.extract478 = extractvalue { i64, i32 } %267, 0
  %.fca.1.extract479 = extractvalue { i64, i32 } %267, 1
  store i64 %.fca.0.extract478, ptr %37, align 8
  %.sroa.2481.0..sroa_idx = getelementptr inbounds i8, ptr %37, i64 8
  store i32 %.fca.1.extract479, ptr %.sroa.2481.0..sroa_idx, align 8
  %268 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.4, ptr noundef nonnull align 4 dereferenceable(12) %37)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #7
  %269 = getelementptr inbounds i8, ptr %16, i64 8
  %.sroa.0477.0.copyload = load i32, ptr %269, align 4, !tbaa !6
  %270 = getelementptr inbounds i8, ptr %20, i64 8
  %.sroa.0476.0.copyload = load i32, ptr %270, align 4, !tbaa !6
  %271 = getelementptr inbounds i8, ptr %24, i64 8
  %.sroa.0475.0.copyload = load i32, ptr %271, align 4, !tbaa !6
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %40, i32 %.sroa.0477.0.copyload, i32 %.sroa.0476.0.copyload, i32 %.sroa.0475.0.copyload)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #7
  %272 = getelementptr inbounds i8, ptr %2, i64 20
  %273 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %274 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %272, i32 %273)
  store i32 %274, ptr %41, align 4
  %.sroa.0471.0.copyload = load i32, ptr %.sroa.2513.0..sroa_idx, align 8, !tbaa !6
  %275 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0471.0.copyload)
  %276 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %41, i32 %275)
  store i32 %276, ptr %.ptr.5, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #7
  %277 = call i32 @_ZN5GMath4ZeroEv()
  %278 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4, i32 %277)
  br i1 %278, label %658, label %279

279:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %43) #7
  %280 = call i32 @_ZN5GMath3OneEv()
  %281 = call i32 @_ZN5GMath4ZeroEv()
  %282 = call i32 @_ZN5GMath4ZeroEv()
  %283 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.sroa.2513.0..sroa_idx, i32 %282)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #7
  %284 = call i32 @_ZN5GMath3OneEv()
  br i1 %283, label %287, label %285

285:                                              ; preds = %279
  store i32 %284, ptr %44, align 4
  %286 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %44)
  br label %287

287:                                              ; preds = %279, %285
  %.sroa.0467.0 = phi i32 [ %286, %285 ], [ %284, %279 ]
  call void @_ZN8GVector3C2E6GFloatS0_S0_(ptr noundef nonnull align 4 dereferenceable(12) %43, i32 %280, i32 %281, i32 %.sroa.0467.0)
  %288 = call { i64, i32 } @_ZNK11GQuaternion12RotateVectorERK8GVector3(ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(12) %43)
  %.fca.0.extract462 = extractvalue { i64, i32 } %288, 0
  %.fca.1.extract463 = extractvalue { i64, i32 } %288, 1
  store i64 %.fca.0.extract462, ptr %42, align 8
  %.sroa.2465.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 8
  store i32 %.fca.1.extract463, ptr %.sroa.2465.0..sroa_idx, align 8
  %289 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.5, ptr noundef nonnull align 4 dereferenceable(12) %42)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %45) #7
  %.sroa.0461.0.copyload = load i32, ptr %159, align 4, !tbaa !6
  %290 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %9, i32 %.sroa.0461.0.copyload)
  %.fca.0.extract457 = extractvalue { i64, i32 } %290, 0
  %.fca.1.extract458 = extractvalue { i64, i32 } %290, 1
  store i64 %.fca.0.extract457, ptr %45, align 8
  %.sroa.2460.0..sroa_idx = getelementptr inbounds i8, ptr %45, i64 8
  store i32 %.fca.1.extract458, ptr %.sroa.2460.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %46) #7
  %.sroa.0456.0.copyload = load i32, ptr %250, align 8, !tbaa !6
  %291 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %10, i32 %.sroa.0456.0.copyload)
  %.fca.0.extract452 = extractvalue { i64, i32 } %291, 0
  %.fca.1.extract453 = extractvalue { i64, i32 } %291, 1
  store i64 %.fca.0.extract452, ptr %46, align 8
  %.sroa.2455.0..sroa_idx = getelementptr inbounds i8, ptr %46, i64 8
  store i32 %.fca.1.extract453, ptr %.sroa.2455.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %47) #7
  %.sroa.0451.0.copyload = load i32, ptr %272, align 4, !tbaa !6
  %292 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %11, i32 %.sroa.0451.0.copyload)
  %.fca.0.extract447 = extractvalue { i64, i32 } %292, 0
  %.fca.1.extract448 = extractvalue { i64, i32 } %292, 1
  store i64 %.fca.0.extract447, ptr %47, align 8
  %.sroa.2450.0..sroa_idx = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %.fca.1.extract448, ptr %.sroa.2450.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %48) #7
  %.sroa.0446.0.copyload = load i32, ptr %159, align 4, !tbaa !6
  %293 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %30, i32 %.sroa.0446.0.copyload)
  %.fca.0.extract442 = extractvalue { i64, i32 } %293, 0
  %.fca.1.extract443 = extractvalue { i64, i32 } %293, 1
  store i64 %.fca.0.extract442, ptr %48, align 8
  %.sroa.2445.0..sroa_idx = getelementptr inbounds i8, ptr %48, i64 8
  store i32 %.fca.1.extract443, ptr %.sroa.2445.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #7
  %.sroa.0441.0.copyload = load i32, ptr %250, align 8, !tbaa !6
  %294 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %35, i32 %.sroa.0441.0.copyload)
  %.fca.0.extract437 = extractvalue { i64, i32 } %294, 0
  %.fca.1.extract438 = extractvalue { i64, i32 } %294, 1
  store i64 %.fca.0.extract437, ptr %49, align 8
  %.sroa.2440.0..sroa_idx = getelementptr inbounds i8, ptr %49, i64 8
  store i32 %.fca.1.extract438, ptr %.sroa.2440.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %50) #7
  %.sroa.0436.0.copyload = load i32, ptr %272, align 4, !tbaa !6
  %295 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %40, i32 %.sroa.0436.0.copyload)
  %.fca.0.extract432 = extractvalue { i64, i32 } %295, 0
  %.fca.1.extract433 = extractvalue { i64, i32 } %295, 1
  store i64 %.fca.0.extract432, ptr %50, align 8
  %.sroa.2435.0..sroa_idx = getelementptr inbounds i8, ptr %50, i64 8
  store i32 %.fca.1.extract433, ptr %.sroa.2435.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #7
  %.sroa.0431.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %296 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %16, i32 %.sroa.0431.0.copyload)
  %.fca.0.extract427 = extractvalue { i64, i32 } %296, 0
  %.fca.1.extract428 = extractvalue { i64, i32 } %296, 1
  store i64 %.fca.0.extract427, ptr %51, align 8
  %.sroa.2430.0..sroa_idx = getelementptr inbounds i8, ptr %51, i64 8
  store i32 %.fca.1.extract428, ptr %.sroa.2430.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %52) #7
  %.sroa.0426.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %297 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %20, i32 %.sroa.0426.0.copyload)
  %.fca.0.extract422 = extractvalue { i64, i32 } %297, 0
  %.fca.1.extract423 = extractvalue { i64, i32 } %297, 1
  store i64 %.fca.0.extract422, ptr %52, align 8
  %.sroa.2425.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 8
  store i32 %.fca.1.extract423, ptr %.sroa.2425.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %53) #7
  %.sroa.0421.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %298 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %24, i32 %.sroa.0421.0.copyload)
  %.fca.0.extract417 = extractvalue { i64, i32 } %298, 0
  %.fca.1.extract418 = extractvalue { i64, i32 } %298, 1
  store i64 %.fca.0.extract417, ptr %53, align 8
  %.sroa.2420.0..sroa_idx = getelementptr inbounds i8, ptr %53, i64 8
  store i32 %.fca.1.extract418, ptr %.sroa.2420.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %54) #7
  call void @_ZNK13GTransform_QT15GetInverse_fastEv(ptr dead_on_unwind nonnull writable sret(%class.GTransform_QT) align 4 %54, ptr noundef nonnull align 4 dereferenceable(28) %6)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %55) #7
  %.sroa.0416.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %299 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %.sroa.0416.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %45)
  %.fca.0.extract412 = extractvalue { i64, i32 } %299, 0
  %.fca.1.extract413 = extractvalue { i64, i32 } %299, 1
  store i64 %.fca.0.extract412, ptr %55, align 8
  %.sroa.2415.0..sroa_idx = getelementptr inbounds i8, ptr %55, i64 8
  store i32 %.fca.1.extract413, ptr %.sroa.2415.0..sroa_idx, align 8
  %300 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6, ptr noundef nonnull align 4 dereferenceable(12) %55)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #7
  %.sroa.0410.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %301 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0410.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %48)
  %.fca.0.extract406 = extractvalue { i64, i32 } %301, 0
  %.fca.1.extract407 = extractvalue { i64, i32 } %301, 1
  store i64 %.fca.0.extract406, ptr %58, align 8
  %.sroa.2409.0..sroa_idx = getelementptr inbounds i8, ptr %58, i64 8
  store i32 %.fca.1.extract407, ptr %.sroa.2409.0..sroa_idx, align 8
  %302 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %58, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %302, ptr %57, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %59) #7
  %.sroa.0404.0.copyload = load i32, ptr %159, align 4, !tbaa !6
  %303 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0404.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %51)
  %.fca.0.extract400 = extractvalue { i64, i32 } %303, 0
  %.fca.1.extract401 = extractvalue { i64, i32 } %303, 1
  store i64 %.fca.0.extract400, ptr %59, align 8
  %.sroa.2403.0..sroa_idx = getelementptr inbounds i8, ptr %59, i64 8
  store i32 %.fca.1.extract401, ptr %.sroa.2403.0..sroa_idx, align 8
  %304 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %305 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %57, i32 %304)
  store i32 %305, ptr %56, align 4
  %306 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %307 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %306)
  %308 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %56, i32 %307)
  store i32 %308, ptr %.ptr.6, align 8, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #7
  %309 = call i32 @_ZN5GMath4ZeroEv()
  %310 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6, i32 %309)
  br i1 %310, label %657, label %311

311:                                              ; preds = %287
  %312 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6)
  %313 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6, i32 %312)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #7
  %314 = getelementptr inbounds i8, ptr %13, i64 76
  %.sroa.0394.0.copyload = load i32, ptr %189, align 4, !tbaa !6
  %315 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %314, i32 %.sroa.0394.0.copyload)
  store i32 %315, ptr %60, align 4
  %316 = call i32 @_ZN5GMath4ZeroEv()
  %317 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %60, i32 %316)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #7
  br i1 %317, label %318, label %321

318:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %61) #7
  %319 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6)
  %.fca.0.extract389 = extractvalue { i64, i32 } %319, 0
  %.fca.1.extract390 = extractvalue { i64, i32 } %319, 1
  store i64 %.fca.0.extract389, ptr %61, align 8
  %.sroa.2392.0..sroa_idx = getelementptr inbounds i8, ptr %61, i64 8
  store i32 %.fca.1.extract390, ptr %.sroa.2392.0..sroa_idx, align 8
  %320 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6, ptr noundef nonnull align 4 dereferenceable(12) %61)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %61) #7
  br label %321

321:                                              ; preds = %318, %311
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %63) #7
  %322 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract385 = extractvalue { i64, i32 } %322, 0
  %.fca.1.extract386 = extractvalue { i64, i32 } %322, 1
  store i64 %.fca.0.extract385, ptr %63, align 8
  %.sroa.2388.0..sroa_idx = getelementptr inbounds i8, ptr %63, i64 8
  store i32 %.fca.1.extract386, ptr %.sroa.2388.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %64) #7
  %.sroa.0384.0.copyload = load i32, ptr %.ptr.6, align 8, !tbaa !6
  %323 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.6, i32 %.sroa.0384.0.copyload)
  %.fca.0.extract380 = extractvalue { i64, i32 } %323, 0
  %.fca.1.extract381 = extractvalue { i64, i32 } %323, 1
  store i64 %.fca.0.extract380, ptr %64, align 8
  %.sroa.2383.0..sroa_idx = getelementptr inbounds i8, ptr %64, i64 8
  store i32 %.fca.1.extract381, ptr %.sroa.2383.0..sroa_idx, align 8
  %324 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %63, ptr noundef nonnull align 4 dereferenceable(12) %64, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.6)
  %.fca.0.extract376 = extractvalue { i64, i32 } %324, 0
  %.fca.1.extract377 = extractvalue { i64, i32 } %324, 1
  store i64 %.fca.0.extract376, ptr %62, align 8
  %.sroa.2379.0..sroa_idx = getelementptr inbounds i8, ptr %62, i64 8
  store i32 %.fca.1.extract377, ptr %.sroa.2379.0..sroa_idx, align 8
  %325 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.6, ptr noundef nonnull align 4 dereferenceable(12) %62)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %62) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %65) #7
  %.sroa.0375.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %326 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %.sroa.0375.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %46)
  %.fca.0.extract371 = extractvalue { i64, i32 } %326, 0
  %.fca.1.extract372 = extractvalue { i64, i32 } %326, 1
  store i64 %.fca.0.extract371, ptr %65, align 8
  %.sroa.2374.0..sroa_idx = getelementptr inbounds i8, ptr %65, i64 8
  store i32 %.fca.1.extract372, ptr %.sroa.2374.0..sroa_idx, align 8
  %327 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7, ptr noundef nonnull align 4 dereferenceable(12) %65)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %68) #7
  %.sroa.0369.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %328 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0369.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %49)
  %.fca.0.extract365 = extractvalue { i64, i32 } %328, 0
  %.fca.1.extract366 = extractvalue { i64, i32 } %328, 1
  store i64 %.fca.0.extract365, ptr %68, align 8
  %.sroa.2368.0..sroa_idx = getelementptr inbounds i8, ptr %68, i64 8
  store i32 %.fca.1.extract366, ptr %.sroa.2368.0..sroa_idx, align 8
  %329 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %68, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %329, ptr %67, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %69) #7
  %.sroa.0363.0.copyload = load i32, ptr %250, align 8, !tbaa !6
  %330 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0363.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %51)
  %.fca.0.extract359 = extractvalue { i64, i32 } %330, 0
  %.fca.1.extract360 = extractvalue { i64, i32 } %330, 1
  store i64 %.fca.0.extract359, ptr %69, align 8
  %.sroa.2362.0..sroa_idx = getelementptr inbounds i8, ptr %69, i64 8
  store i32 %.fca.1.extract360, ptr %.sroa.2362.0..sroa_idx, align 8
  %331 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %69, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %332 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %67, i32 %331)
  store i32 %332, ptr %66, align 4
  %333 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %334 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %333)
  %335 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %66, i32 %334)
  store i32 %335, ptr %.ptr.7, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #7
  %336 = call i32 @_ZN5GMath4ZeroEv()
  %337 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7, i32 %336)
  br i1 %337, label %657, label %338

338:                                              ; preds = %321
  %339 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7)
  %340 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7, i32 %339)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %70) #7
  %341 = getelementptr inbounds i8, ptr %13, i64 88
  %.sroa.0353.0.copyload = load i32, ptr %189, align 4, !tbaa !6
  %342 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %341, i32 %.sroa.0353.0.copyload)
  store i32 %342, ptr %70, align 4
  %343 = call i32 @_ZN5GMath4ZeroEv()
  %344 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %70, i32 %343)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #7
  br i1 %344, label %345, label %348

345:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %71) #7
  %346 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7)
  %.fca.0.extract348 = extractvalue { i64, i32 } %346, 0
  %.fca.1.extract349 = extractvalue { i64, i32 } %346, 1
  store i64 %.fca.0.extract348, ptr %71, align 8
  %.sroa.2351.0..sroa_idx = getelementptr inbounds i8, ptr %71, i64 8
  store i32 %.fca.1.extract349, ptr %.sroa.2351.0..sroa_idx, align 8
  %347 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7, ptr noundef nonnull align 4 dereferenceable(12) %71)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %71) #7
  br label %348

348:                                              ; preds = %345, %338
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %73) #7
  %349 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract344 = extractvalue { i64, i32 } %349, 0
  %.fca.1.extract345 = extractvalue { i64, i32 } %349, 1
  store i64 %.fca.0.extract344, ptr %73, align 8
  %.sroa.2347.0..sroa_idx = getelementptr inbounds i8, ptr %73, i64 8
  store i32 %.fca.1.extract345, ptr %.sroa.2347.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %74) #7
  %.sroa.0343.0.copyload = load i32, ptr %.ptr.7, align 4, !tbaa !6
  %350 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.7, i32 %.sroa.0343.0.copyload)
  %.fca.0.extract339 = extractvalue { i64, i32 } %350, 0
  %.fca.1.extract340 = extractvalue { i64, i32 } %350, 1
  store i64 %.fca.0.extract339, ptr %74, align 8
  %.sroa.2342.0..sroa_idx = getelementptr inbounds i8, ptr %74, i64 8
  store i32 %.fca.1.extract340, ptr %.sroa.2342.0..sroa_idx, align 8
  %351 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %73, ptr noundef nonnull align 4 dereferenceable(12) %74, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.7)
  %.fca.0.extract335 = extractvalue { i64, i32 } %351, 0
  %.fca.1.extract336 = extractvalue { i64, i32 } %351, 1
  store i64 %.fca.0.extract335, ptr %72, align 8
  %.sroa.2338.0..sroa_idx = getelementptr inbounds i8, ptr %72, i64 8
  store i32 %.fca.1.extract336, ptr %.sroa.2338.0..sroa_idx, align 8
  %352 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.7, ptr noundef nonnull align 4 dereferenceable(12) %72)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %73) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %75) #7
  %.sroa.0334.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %353 = call { i64, i32 } @_ZL7Cross_X6GFloatRK8GVector3(i32 %.sroa.0334.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %47)
  %.fca.0.extract330 = extractvalue { i64, i32 } %353, 0
  %.fca.1.extract331 = extractvalue { i64, i32 } %353, 1
  store i64 %.fca.0.extract330, ptr %75, align 8
  %.sroa.2333.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8
  store i32 %.fca.1.extract331, ptr %.sroa.2333.0..sroa_idx, align 8
  %354 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8, ptr noundef nonnull align 4 dereferenceable(12) %75)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %75) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %76) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %78) #7
  %.sroa.0328.0.copyload = load i32, ptr %155, align 4, !tbaa !6
  %355 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0328.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %50)
  %.fca.0.extract324 = extractvalue { i64, i32 } %355, 0
  %.fca.1.extract325 = extractvalue { i64, i32 } %355, 1
  store i64 %.fca.0.extract324, ptr %78, align 8
  %.sroa.2327.0..sroa_idx = getelementptr inbounds i8, ptr %78, i64 8
  store i32 %.fca.1.extract325, ptr %.sroa.2327.0..sroa_idx, align 8
  %356 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %78, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %356, ptr %77, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %79) #7
  %.sroa.0322.0.copyload = load i32, ptr %272, align 4, !tbaa !6
  %357 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.0322.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %51)
  %.fca.0.extract318 = extractvalue { i64, i32 } %357, 0
  %.fca.1.extract319 = extractvalue { i64, i32 } %357, 1
  store i64 %.fca.0.extract318, ptr %79, align 8
  %.sroa.2321.0..sroa_idx = getelementptr inbounds i8, ptr %79, i64 8
  store i32 %.fca.1.extract319, ptr %.sroa.2321.0..sroa_idx, align 8
  %358 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %79, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %359 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %77, i32 %358)
  store i32 %359, ptr %76, align 4
  %360 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %361 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %360)
  %362 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %76, i32 %361)
  store i32 %362, ptr %.ptr.8, align 16, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #7
  %363 = call i32 @_ZN5GMath4ZeroEv()
  %364 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8, i32 %363)
  br i1 %364, label %657, label %365

365:                                              ; preds = %348
  %366 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8)
  %367 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8, i32 %366)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %80) #7
  %368 = getelementptr inbounds i8, ptr %13, i64 100
  %.sroa.0312.0.copyload = load i32, ptr %189, align 4, !tbaa !6
  %369 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %368, i32 %.sroa.0312.0.copyload)
  store i32 %369, ptr %80, align 4
  %370 = call i32 @_ZN5GMath4ZeroEv()
  %371 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %80, i32 %370)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %80) #7
  br i1 %371, label %372, label %375

372:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %81) #7
  %373 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8)
  %.fca.0.extract307 = extractvalue { i64, i32 } %373, 0
  %.fca.1.extract308 = extractvalue { i64, i32 } %373, 1
  store i64 %.fca.0.extract307, ptr %81, align 8
  %.sroa.2310.0..sroa_idx = getelementptr inbounds i8, ptr %81, i64 8
  store i32 %.fca.1.extract308, ptr %.sroa.2310.0..sroa_idx, align 8
  %374 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8, ptr noundef nonnull align 4 dereferenceable(12) %81)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %81) #7
  br label %375

375:                                              ; preds = %372, %365
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %83) #7
  %376 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract303 = extractvalue { i64, i32 } %376, 0
  %.fca.1.extract304 = extractvalue { i64, i32 } %376, 1
  store i64 %.fca.0.extract303, ptr %83, align 8
  %.sroa.2306.0..sroa_idx = getelementptr inbounds i8, ptr %83, i64 8
  store i32 %.fca.1.extract304, ptr %.sroa.2306.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %84) #7
  %.sroa.0302.0.copyload = load i32, ptr %.ptr.8, align 16, !tbaa !6
  %377 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.8, i32 %.sroa.0302.0.copyload)
  %.fca.0.extract298 = extractvalue { i64, i32 } %377, 0
  %.fca.1.extract299 = extractvalue { i64, i32 } %377, 1
  store i64 %.fca.0.extract298, ptr %84, align 8
  %.sroa.2301.0..sroa_idx = getelementptr inbounds i8, ptr %84, i64 8
  store i32 %.fca.1.extract299, ptr %.sroa.2301.0..sroa_idx, align 8
  %378 = call { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %83, ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.8)
  %.fca.0.extract294 = extractvalue { i64, i32 } %378, 0
  %.fca.1.extract295 = extractvalue { i64, i32 } %378, 1
  store i64 %.fca.0.extract294, ptr %82, align 8
  %.sroa.2297.0..sroa_idx = getelementptr inbounds i8, ptr %82, i64 8
  store i32 %.fca.1.extract295, ptr %.sroa.2297.0..sroa_idx, align 8
  %379 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.8, ptr noundef nonnull align 4 dereferenceable(12) %82)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %85) #7
  %.sroa.0293.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %380 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %.sroa.0293.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %45)
  %.fca.0.extract289 = extractvalue { i64, i32 } %380, 0
  %.fca.1.extract290 = extractvalue { i64, i32 } %380, 1
  store i64 %.fca.0.extract289, ptr %85, align 8
  %.sroa.2292.0..sroa_idx = getelementptr inbounds i8, ptr %85, i64 8
  store i32 %.fca.1.extract290, ptr %.sroa.2292.0..sroa_idx, align 8
  %381 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9, ptr noundef nonnull align 4 dereferenceable(12) %85)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %85) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %86) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %88) #7
  %.sroa.0287.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %382 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0287.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %48)
  %.fca.0.extract283 = extractvalue { i64, i32 } %382, 0
  %.fca.1.extract284 = extractvalue { i64, i32 } %382, 1
  store i64 %.fca.0.extract283, ptr %88, align 8
  %.sroa.2286.0..sroa_idx = getelementptr inbounds i8, ptr %88, i64 8
  store i32 %.fca.1.extract284, ptr %.sroa.2286.0..sroa_idx, align 8
  %383 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %88, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %383, ptr %87, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %89) #7
  %.sroa.0281.0.copyload = load i32, ptr %159, align 4, !tbaa !6
  %384 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0281.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %52)
  %.fca.0.extract277 = extractvalue { i64, i32 } %384, 0
  %.fca.1.extract278 = extractvalue { i64, i32 } %384, 1
  store i64 %.fca.0.extract277, ptr %89, align 8
  %.sroa.2280.0..sroa_idx = getelementptr inbounds i8, ptr %89, i64 8
  store i32 %.fca.1.extract278, ptr %.sroa.2280.0..sroa_idx, align 8
  %385 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %89, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %386 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %87, i32 %385)
  store i32 %386, ptr %86, align 4
  %387 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %388 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %387)
  %389 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %86, i32 %388)
  store i32 %389, ptr %.ptr.9, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %89) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %86) #7
  %390 = call i32 @_ZN5GMath4ZeroEv()
  %391 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.9, i32 %390)
  br i1 %391, label %657, label %392

392:                                              ; preds = %375
  %393 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9)
  %394 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.9, i32 %393)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %90) #7
  %395 = getelementptr inbounds i8, ptr %13, i64 116
  %.sroa.0271.0.copyload = load i32, ptr %213, align 4, !tbaa !6
  %396 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %395, i32 %.sroa.0271.0.copyload)
  store i32 %396, ptr %90, align 4
  %397 = call i32 @_ZN5GMath4ZeroEv()
  %398 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %90, i32 %397)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #7
  br i1 %398, label %399, label %402

399:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %91) #7
  %400 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9)
  %.fca.0.extract266 = extractvalue { i64, i32 } %400, 0
  %.fca.1.extract267 = extractvalue { i64, i32 } %400, 1
  store i64 %.fca.0.extract266, ptr %91, align 8
  %.sroa.2269.0..sroa_idx = getelementptr inbounds i8, ptr %91, i64 8
  store i32 %.fca.1.extract267, ptr %.sroa.2269.0..sroa_idx, align 8
  %401 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9, ptr noundef nonnull align 4 dereferenceable(12) %91)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %91) #7
  br label %402

402:                                              ; preds = %399, %392
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %92) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %93) #7
  %403 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract262 = extractvalue { i64, i32 } %403, 0
  %.fca.1.extract263 = extractvalue { i64, i32 } %403, 1
  store i64 %.fca.0.extract262, ptr %93, align 8
  %.sroa.2265.0..sroa_idx = getelementptr inbounds i8, ptr %93, i64 8
  store i32 %.fca.1.extract263, ptr %.sroa.2265.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %94) #7
  %.sroa.0261.0.copyload = load i32, ptr %.ptr.9, align 4, !tbaa !6
  %404 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.9, i32 %.sroa.0261.0.copyload)
  %.fca.0.extract257 = extractvalue { i64, i32 } %404, 0
  %.fca.1.extract258 = extractvalue { i64, i32 } %404, 1
  store i64 %.fca.0.extract257, ptr %94, align 8
  %.sroa.2260.0..sroa_idx = getelementptr inbounds i8, ptr %94, i64 8
  store i32 %.fca.1.extract258, ptr %.sroa.2260.0..sroa_idx, align 8
  %405 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %93, ptr noundef nonnull align 4 dereferenceable(12) %94, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.9)
  %.fca.0.extract253 = extractvalue { i64, i32 } %405, 0
  %.fca.1.extract254 = extractvalue { i64, i32 } %405, 1
  store i64 %.fca.0.extract253, ptr %92, align 8
  %.sroa.2256.0..sroa_idx = getelementptr inbounds i8, ptr %92, i64 8
  store i32 %.fca.1.extract254, ptr %.sroa.2256.0..sroa_idx, align 8
  %406 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.9, ptr noundef nonnull align 4 dereferenceable(12) %92)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %92) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %95) #7
  %.sroa.0252.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %407 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %.sroa.0252.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %46)
  %.fca.0.extract248 = extractvalue { i64, i32 } %407, 0
  %.fca.1.extract249 = extractvalue { i64, i32 } %407, 1
  store i64 %.fca.0.extract248, ptr %95, align 8
  %.sroa.2251.0..sroa_idx = getelementptr inbounds i8, ptr %95, i64 8
  store i32 %.fca.1.extract249, ptr %.sroa.2251.0..sroa_idx, align 8
  %408 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10, ptr noundef nonnull align 4 dereferenceable(12) %95)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %95) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %96) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %97) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %98) #7
  %.sroa.0246.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %409 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0246.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %49)
  %.fca.0.extract242 = extractvalue { i64, i32 } %409, 0
  %.fca.1.extract243 = extractvalue { i64, i32 } %409, 1
  store i64 %.fca.0.extract242, ptr %98, align 8
  %.sroa.2245.0..sroa_idx = getelementptr inbounds i8, ptr %98, i64 8
  store i32 %.fca.1.extract243, ptr %.sroa.2245.0..sroa_idx, align 8
  %410 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %98, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %410, ptr %97, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %99) #7
  %.sroa.0240.0.copyload = load i32, ptr %250, align 8, !tbaa !6
  %411 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0240.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %52)
  %.fca.0.extract236 = extractvalue { i64, i32 } %411, 0
  %.fca.1.extract237 = extractvalue { i64, i32 } %411, 1
  store i64 %.fca.0.extract236, ptr %99, align 8
  %.sroa.2239.0..sroa_idx = getelementptr inbounds i8, ptr %99, i64 8
  store i32 %.fca.1.extract237, ptr %.sroa.2239.0..sroa_idx, align 8
  %412 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %99, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %413 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %97, i32 %412)
  store i32 %413, ptr %96, align 4
  %414 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %415 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %414)
  %416 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %96, i32 %415)
  store i32 %416, ptr %.ptr.10, align 8, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %99) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %98) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %96) #7
  %417 = call i32 @_ZN5GMath4ZeroEv()
  %418 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.10, i32 %417)
  br i1 %418, label %657, label %419

419:                                              ; preds = %402
  %420 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10)
  %421 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.10, i32 %420)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %100) #7
  %422 = getelementptr inbounds i8, ptr %13, i64 128
  %.sroa.0230.0.copyload = load i32, ptr %213, align 4, !tbaa !6
  %423 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %422, i32 %.sroa.0230.0.copyload)
  store i32 %423, ptr %100, align 4
  %424 = call i32 @_ZN5GMath4ZeroEv()
  %425 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %100, i32 %424)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %100) #7
  br i1 %425, label %426, label %429

426:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %101) #7
  %427 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10)
  %.fca.0.extract225 = extractvalue { i64, i32 } %427, 0
  %.fca.1.extract226 = extractvalue { i64, i32 } %427, 1
  store i64 %.fca.0.extract225, ptr %101, align 8
  %.sroa.2228.0..sroa_idx = getelementptr inbounds i8, ptr %101, i64 8
  store i32 %.fca.1.extract226, ptr %.sroa.2228.0..sroa_idx, align 8
  %428 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10, ptr noundef nonnull align 4 dereferenceable(12) %101)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %101) #7
  br label %429

429:                                              ; preds = %426, %419
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %103) #7
  %430 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract221 = extractvalue { i64, i32 } %430, 0
  %.fca.1.extract222 = extractvalue { i64, i32 } %430, 1
  store i64 %.fca.0.extract221, ptr %103, align 8
  %.sroa.2224.0..sroa_idx = getelementptr inbounds i8, ptr %103, i64 8
  store i32 %.fca.1.extract222, ptr %.sroa.2224.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %104) #7
  %.sroa.0220.0.copyload = load i32, ptr %.ptr.10, align 8, !tbaa !6
  %431 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.10, i32 %.sroa.0220.0.copyload)
  %.fca.0.extract216 = extractvalue { i64, i32 } %431, 0
  %.fca.1.extract217 = extractvalue { i64, i32 } %431, 1
  store i64 %.fca.0.extract216, ptr %104, align 8
  %.sroa.2219.0..sroa_idx = getelementptr inbounds i8, ptr %104, i64 8
  store i32 %.fca.1.extract217, ptr %.sroa.2219.0..sroa_idx, align 8
  %432 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %103, ptr noundef nonnull align 4 dereferenceable(12) %104, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.10)
  %.fca.0.extract212 = extractvalue { i64, i32 } %432, 0
  %.fca.1.extract213 = extractvalue { i64, i32 } %432, 1
  store i64 %.fca.0.extract212, ptr %102, align 8
  %.sroa.2215.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 8
  store i32 %.fca.1.extract213, ptr %.sroa.2215.0..sroa_idx, align 8
  %433 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.10, ptr noundef nonnull align 4 dereferenceable(12) %102)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %104) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %103) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %102) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %105) #7
  %.sroa.0211.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %434 = call { i64, i32 } @_ZL7Cross_Y6GFloatRK8GVector3(i32 %.sroa.0211.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %47)
  %.fca.0.extract207 = extractvalue { i64, i32 } %434, 0
  %.fca.1.extract208 = extractvalue { i64, i32 } %434, 1
  store i64 %.fca.0.extract207, ptr %105, align 8
  %.sroa.2210.0..sroa_idx = getelementptr inbounds i8, ptr %105, i64 8
  store i32 %.fca.1.extract208, ptr %.sroa.2210.0..sroa_idx, align 8
  %435 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11, ptr noundef nonnull align 4 dereferenceable(12) %105)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %105) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %106) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %107) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %108) #7
  %.sroa.0205.0.copyload = load i32, ptr %186, align 8, !tbaa !6
  %436 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0205.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %50)
  %.fca.0.extract201 = extractvalue { i64, i32 } %436, 0
  %.fca.1.extract202 = extractvalue { i64, i32 } %436, 1
  store i64 %.fca.0.extract201, ptr %108, align 8
  %.sroa.2204.0..sroa_idx = getelementptr inbounds i8, ptr %108, i64 8
  store i32 %.fca.1.extract202, ptr %.sroa.2204.0..sroa_idx, align 8
  %437 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %108, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %437, ptr %107, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %109) #7
  %.sroa.0199.0.copyload = load i32, ptr %272, align 4, !tbaa !6
  %438 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.0199.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %52)
  %.fca.0.extract195 = extractvalue { i64, i32 } %438, 0
  %.fca.1.extract196 = extractvalue { i64, i32 } %438, 1
  store i64 %.fca.0.extract195, ptr %109, align 8
  %.sroa.2198.0..sroa_idx = getelementptr inbounds i8, ptr %109, i64 8
  store i32 %.fca.1.extract196, ptr %.sroa.2198.0..sroa_idx, align 8
  %439 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %109, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %440 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %107, i32 %439)
  store i32 %440, ptr %106, align 4
  %441 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %442 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %441)
  %443 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %106, i32 %442)
  store i32 %443, ptr %.ptr.11, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %109) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %108) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %107) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %106) #7
  %444 = call i32 @_ZN5GMath4ZeroEv()
  %445 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.11, i32 %444)
  br i1 %445, label %657, label %446

446:                                              ; preds = %429
  %447 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11)
  %448 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.11, i32 %447)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %110) #7
  %449 = getelementptr inbounds i8, ptr %13, i64 140
  %.sroa.0189.0.copyload = load i32, ptr %213, align 4, !tbaa !6
  %450 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %449, i32 %.sroa.0189.0.copyload)
  store i32 %450, ptr %110, align 4
  %451 = call i32 @_ZN5GMath4ZeroEv()
  %452 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %110, i32 %451)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %110) #7
  br i1 %452, label %453, label %456

453:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %111) #7
  %454 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11)
  %.fca.0.extract184 = extractvalue { i64, i32 } %454, 0
  %.fca.1.extract185 = extractvalue { i64, i32 } %454, 1
  store i64 %.fca.0.extract184, ptr %111, align 8
  %.sroa.2187.0..sroa_idx = getelementptr inbounds i8, ptr %111, i64 8
  store i32 %.fca.1.extract185, ptr %.sroa.2187.0..sroa_idx, align 8
  %455 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11, ptr noundef nonnull align 4 dereferenceable(12) %111)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %111) #7
  br label %456

456:                                              ; preds = %453, %446
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %112) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %113) #7
  %457 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract180 = extractvalue { i64, i32 } %457, 0
  %.fca.1.extract181 = extractvalue { i64, i32 } %457, 1
  store i64 %.fca.0.extract180, ptr %113, align 8
  %.sroa.2183.0..sroa_idx = getelementptr inbounds i8, ptr %113, i64 8
  store i32 %.fca.1.extract181, ptr %.sroa.2183.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %114) #7
  %.sroa.0179.0.copyload = load i32, ptr %.ptr.11, align 4, !tbaa !6
  %458 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.11, i32 %.sroa.0179.0.copyload)
  %.fca.0.extract175 = extractvalue { i64, i32 } %458, 0
  %.fca.1.extract176 = extractvalue { i64, i32 } %458, 1
  store i64 %.fca.0.extract175, ptr %114, align 8
  %.sroa.2178.0..sroa_idx = getelementptr inbounds i8, ptr %114, i64 8
  store i32 %.fca.1.extract176, ptr %.sroa.2178.0..sroa_idx, align 8
  %459 = call { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %113, ptr noundef nonnull align 4 dereferenceable(12) %114, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.11)
  %.fca.0.extract171 = extractvalue { i64, i32 } %459, 0
  %.fca.1.extract172 = extractvalue { i64, i32 } %459, 1
  store i64 %.fca.0.extract171, ptr %112, align 8
  %.sroa.2174.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 8
  store i32 %.fca.1.extract172, ptr %.sroa.2174.0..sroa_idx, align 8
  %460 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.11, ptr noundef nonnull align 4 dereferenceable(12) %112)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %114) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %113) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %112) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %115) #7
  %.sroa.0170.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %461 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %.sroa.0170.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %45)
  %.fca.0.extract166 = extractvalue { i64, i32 } %461, 0
  %.fca.1.extract167 = extractvalue { i64, i32 } %461, 1
  store i64 %.fca.0.extract166, ptr %115, align 8
  %.sroa.2169.0..sroa_idx = getelementptr inbounds i8, ptr %115, i64 8
  store i32 %.fca.1.extract167, ptr %.sroa.2169.0..sroa_idx, align 8
  %462 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12, ptr noundef nonnull align 4 dereferenceable(12) %115)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %115) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %116) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %117) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %118) #7
  %.sroa.0164.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %463 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.0164.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %48)
  %.fca.0.extract160 = extractvalue { i64, i32 } %463, 0
  %.fca.1.extract161 = extractvalue { i64, i32 } %463, 1
  store i64 %.fca.0.extract160, ptr %118, align 8
  %.sroa.2163.0..sroa_idx = getelementptr inbounds i8, ptr %118, i64 8
  store i32 %.fca.1.extract161, ptr %.sroa.2163.0..sroa_idx, align 8
  %464 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %118, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %464, ptr %117, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %119) #7
  %.sroa.0158.0.copyload = load i32, ptr %159, align 4, !tbaa !6
  %465 = call { i64, i32 } @_ZL10Cross_AbsX6GFloatRK8GVector3(i32 %.sroa.0158.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %53)
  %.fca.0.extract154 = extractvalue { i64, i32 } %465, 0
  %.fca.1.extract155 = extractvalue { i64, i32 } %465, 1
  store i64 %.fca.0.extract154, ptr %119, align 8
  %.sroa.2157.0..sroa_idx = getelementptr inbounds i8, ptr %119, i64 8
  store i32 %.fca.1.extract155, ptr %.sroa.2157.0..sroa_idx, align 8
  %466 = call i32 @_ZL8Dot_No_XRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %119, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %467 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %117, i32 %466)
  store i32 %467, ptr %116, align 4
  %468 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %469 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %468)
  %470 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %116, i32 %469)
  store i32 %470, ptr %.ptr.12, align 16, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %119) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %118) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %117) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %116) #7
  %471 = call i32 @_ZN5GMath4ZeroEv()
  %472 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.12, i32 %471)
  br i1 %472, label %657, label %473

473:                                              ; preds = %456
  %474 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12)
  %475 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.12, i32 %474)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %120) #7
  %.sroa.0148.0.copyload = load i32, ptr %160, align 4, !tbaa !6
  %476 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr695.12, i32 %.sroa.0148.0.copyload)
  store i32 %476, ptr %120, align 4
  %477 = call i32 @_ZN5GMath4ZeroEv()
  %478 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %120, i32 %477)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %120) #7
  br i1 %478, label %479, label %482

479:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %121) #7
  %480 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12)
  %.fca.0.extract143 = extractvalue { i64, i32 } %480, 0
  %.fca.1.extract144 = extractvalue { i64, i32 } %480, 1
  store i64 %.fca.0.extract143, ptr %121, align 8
  %.sroa.2146.0..sroa_idx = getelementptr inbounds i8, ptr %121, i64 8
  store i32 %.fca.1.extract144, ptr %.sroa.2146.0..sroa_idx, align 8
  %481 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12, ptr noundef nonnull align 4 dereferenceable(12) %121)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %121) #7
  br label %482

482:                                              ; preds = %479, %473
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %122) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %123) #7
  %483 = call { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract139 = extractvalue { i64, i32 } %483, 0
  %.fca.1.extract140 = extractvalue { i64, i32 } %483, 1
  store i64 %.fca.0.extract139, ptr %123, align 8
  %.sroa.2142.0..sroa_idx = getelementptr inbounds i8, ptr %123, i64 8
  store i32 %.fca.1.extract140, ptr %.sroa.2142.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %124) #7
  %.sroa.0138.0.copyload = load i32, ptr %.ptr.12, align 16, !tbaa !6
  %484 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.12, i32 %.sroa.0138.0.copyload)
  %.fca.0.extract134 = extractvalue { i64, i32 } %484, 0
  %.fca.1.extract135 = extractvalue { i64, i32 } %484, 1
  store i64 %.fca.0.extract134, ptr %124, align 8
  %.sroa.2137.0..sroa_idx = getelementptr inbounds i8, ptr %124, i64 8
  store i32 %.fca.1.extract135, ptr %.sroa.2137.0..sroa_idx, align 8
  %485 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %123, ptr noundef nonnull align 4 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.12)
  %.fca.0.extract130 = extractvalue { i64, i32 } %485, 0
  %.fca.1.extract131 = extractvalue { i64, i32 } %485, 1
  store i64 %.fca.0.extract130, ptr %122, align 8
  %.sroa.2133.0..sroa_idx = getelementptr inbounds i8, ptr %122, i64 8
  store i32 %.fca.1.extract131, ptr %.sroa.2133.0..sroa_idx, align 8
  %486 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.12, ptr noundef nonnull align 4 dereferenceable(12) %122)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %124) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %123) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %122) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %125) #7
  %.sroa.0129.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %487 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %.sroa.0129.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %46)
  %.fca.0.extract125 = extractvalue { i64, i32 } %487, 0
  %.fca.1.extract126 = extractvalue { i64, i32 } %487, 1
  store i64 %.fca.0.extract125, ptr %125, align 8
  %.sroa.2128.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 8
  store i32 %.fca.1.extract126, ptr %.sroa.2128.0..sroa_idx, align 8
  %488 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13, ptr noundef nonnull align 4 dereferenceable(12) %125)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %125) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %126) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %127) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %128) #7
  %.sroa.0123.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %489 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.0123.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %49)
  %.fca.0.extract119 = extractvalue { i64, i32 } %489, 0
  %.fca.1.extract120 = extractvalue { i64, i32 } %489, 1
  store i64 %.fca.0.extract119, ptr %128, align 8
  %.sroa.2122.0..sroa_idx = getelementptr inbounds i8, ptr %128, i64 8
  store i32 %.fca.1.extract120, ptr %.sroa.2122.0..sroa_idx, align 8
  %490 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %128, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %490, ptr %127, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %129) #7
  %.sroa.0117.0.copyload = load i32, ptr %250, align 8, !tbaa !6
  %491 = call { i64, i32 } @_ZL10Cross_AbsY6GFloatRK8GVector3(i32 %.sroa.0117.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %53)
  %.fca.0.extract113 = extractvalue { i64, i32 } %491, 0
  %.fca.1.extract114 = extractvalue { i64, i32 } %491, 1
  store i64 %.fca.0.extract113, ptr %129, align 8
  %.sroa.2116.0..sroa_idx = getelementptr inbounds i8, ptr %129, i64 8
  store i32 %.fca.1.extract114, ptr %.sroa.2116.0..sroa_idx, align 8
  %492 = call i32 @_ZL8Dot_No_YRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %129, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %493 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %127, i32 %492)
  store i32 %493, ptr %126, align 4
  %494 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %495 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %494)
  %496 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %126, i32 %495)
  store i32 %496, ptr %.ptr.13, align 4, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %129) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %128) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %127) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %126) #7
  %497 = call i32 @_ZN5GMath4ZeroEv()
  %498 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.13, i32 %497)
  br i1 %498, label %657, label %499

499:                                              ; preds = %482
  %500 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13)
  %501 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.13, i32 %500)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %130) #7
  %.sroa.0107.0.copyload = load i32, ptr %160, align 4, !tbaa !6
  %502 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr695.13, i32 %.sroa.0107.0.copyload)
  store i32 %502, ptr %130, align 4
  %503 = call i32 @_ZN5GMath4ZeroEv()
  %504 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %130, i32 %503)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %130) #7
  br i1 %504, label %505, label %508

505:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %131) #7
  %506 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13)
  %.fca.0.extract102 = extractvalue { i64, i32 } %506, 0
  %.fca.1.extract103 = extractvalue { i64, i32 } %506, 1
  store i64 %.fca.0.extract102, ptr %131, align 8
  %.sroa.2105.0..sroa_idx = getelementptr inbounds i8, ptr %131, i64 8
  store i32 %.fca.1.extract103, ptr %.sroa.2105.0..sroa_idx, align 8
  %507 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13, ptr noundef nonnull align 4 dereferenceable(12) %131)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %131) #7
  br label %508

508:                                              ; preds = %505, %499
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %132) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %133) #7
  %509 = call { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract98 = extractvalue { i64, i32 } %509, 0
  %.fca.1.extract99 = extractvalue { i64, i32 } %509, 1
  store i64 %.fca.0.extract98, ptr %133, align 8
  %.sroa.2101.0..sroa_idx = getelementptr inbounds i8, ptr %133, i64 8
  store i32 %.fca.1.extract99, ptr %.sroa.2101.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %134) #7
  %.sroa.097.0.copyload = load i32, ptr %.ptr.13, align 4, !tbaa !6
  %510 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.13, i32 %.sroa.097.0.copyload)
  %.fca.0.extract93 = extractvalue { i64, i32 } %510, 0
  %.fca.1.extract94 = extractvalue { i64, i32 } %510, 1
  store i64 %.fca.0.extract93, ptr %134, align 8
  %.sroa.296.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 8
  store i32 %.fca.1.extract94, ptr %.sroa.296.0..sroa_idx, align 8
  %511 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %133, ptr noundef nonnull align 4 dereferenceable(12) %134, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.13)
  %.fca.0.extract89 = extractvalue { i64, i32 } %511, 0
  %.fca.1.extract90 = extractvalue { i64, i32 } %511, 1
  store i64 %.fca.0.extract89, ptr %132, align 8
  %.sroa.292.0..sroa_idx = getelementptr inbounds i8, ptr %132, i64 8
  store i32 %.fca.1.extract90, ptr %.sroa.292.0..sroa_idx, align 8
  %512 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.13, ptr noundef nonnull align 4 dereferenceable(12) %132)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %134) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %133) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %132) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %135) #7
  %.sroa.088.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %513 = call { i64, i32 } @_ZL7Cross_Z6GFloatRK8GVector3(i32 %.sroa.088.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %47)
  %.fca.0.extract84 = extractvalue { i64, i32 } %513, 0
  %.fca.1.extract85 = extractvalue { i64, i32 } %513, 1
  store i64 %.fca.0.extract84, ptr %135, align 8
  %.sroa.287.0..sroa_idx = getelementptr inbounds i8, ptr %135, i64 8
  store i32 %.fca.1.extract85, ptr %.sroa.287.0..sroa_idx, align 8
  %514 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14, ptr noundef nonnull align 4 dereferenceable(12) %135)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %135) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %136) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %137) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %138) #7
  %.sroa.082.0.copyload = load i32, ptr %210, align 4, !tbaa !6
  %515 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.082.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %50)
  %.fca.0.extract78 = extractvalue { i64, i32 } %515, 0
  %.fca.1.extract79 = extractvalue { i64, i32 } %515, 1
  store i64 %.fca.0.extract78, ptr %138, align 8
  %.sroa.281.0..sroa_idx = getelementptr inbounds i8, ptr %138, i64 8
  store i32 %.fca.1.extract79, ptr %.sroa.281.0..sroa_idx, align 8
  %516 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %138, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %516, ptr %137, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %139) #7
  %.sroa.076.0.copyload = load i32, ptr %272, align 4, !tbaa !6
  %517 = call { i64, i32 } @_ZL10Cross_AbsZ6GFloatRK8GVector3(i32 %.sroa.076.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %53)
  %.fca.0.extract72 = extractvalue { i64, i32 } %517, 0
  %.fca.1.extract73 = extractvalue { i64, i32 } %517, 1
  store i64 %.fca.0.extract72, ptr %139, align 8
  %.sroa.275.0..sroa_idx = getelementptr inbounds i8, ptr %139, i64 8
  store i32 %.fca.1.extract73, ptr %.sroa.275.0..sroa_idx, align 8
  %518 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %139, ptr noundef nonnull align 4 dereferenceable(12) %159)
  %519 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %137, i32 %518)
  store i32 %519, ptr %136, align 4
  %520 = call i32 @_ZL8Dot_No_ZRK8GVector3S1_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14, ptr noundef nonnull align 4 dereferenceable(12) %160)
  %521 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %520)
  %522 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %136, i32 %521)
  store i32 %522, ptr %.ptr.14, align 8, !tbaa !6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %139) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %138) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %137) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %136) #7
  %523 = call i32 @_ZN5GMath4ZeroEv()
  %524 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.14, i32 %523)
  br i1 %524, label %657, label %525

525:                                              ; preds = %508
  %526 = call i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14)
  %527 = call i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.14, i32 %526)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %140) #7
  %.sroa.066.0.copyload = load i32, ptr %160, align 4, !tbaa !6
  %528 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr695.14, i32 %.sroa.066.0.copyload)
  store i32 %528, ptr %140, align 4
  %529 = call i32 @_ZN5GMath4ZeroEv()
  %530 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %140, i32 %529)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %140) #7
  br i1 %530, label %531, label %534

531:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %141) #7
  %532 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14)
  %.fca.0.extract61 = extractvalue { i64, i32 } %532, 0
  %.fca.1.extract62 = extractvalue { i64, i32 } %532, 1
  store i64 %.fca.0.extract61, ptr %141, align 8
  %.sroa.264.0..sroa_idx = getelementptr inbounds i8, ptr %141, i64 8
  store i32 %.fca.1.extract62, ptr %.sroa.264.0..sroa_idx, align 8
  %533 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14, ptr noundef nonnull align 4 dereferenceable(12) %141)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %141) #7
  br label %534

534:                                              ; preds = %531, %525
  call void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %142) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %143) #7
  %535 = call { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %54)
  %.fca.0.extract57 = extractvalue { i64, i32 } %535, 0
  %.fca.1.extract58 = extractvalue { i64, i32 } %535, 1
  store i64 %.fca.0.extract57, ptr %143, align 8
  %.sroa.260.0..sroa_idx = getelementptr inbounds i8, ptr %143, i64 8
  store i32 %.fca.1.extract58, ptr %.sroa.260.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %144) #7
  %.sroa.056.0.copyload = load i32, ptr %.ptr.14, align 8, !tbaa !6
  %536 = call { i64, i32 } @_ZNK8GVector3mlE6GFloat(ptr noundef nonnull align 4 dereferenceable(12) %.ptr695.14, i32 %.sroa.056.0.copyload)
  %.fca.0.extract52 = extractvalue { i64, i32 } %536, 0
  %.fca.1.extract53 = extractvalue { i64, i32 } %536, 1
  store i64 %.fca.0.extract52, ptr %144, align 8
  %.sroa.255.0..sroa_idx = getelementptr inbounds i8, ptr %144, i64 8
  store i32 %.fca.1.extract53, ptr %.sroa.255.0..sroa_idx, align 8
  %537 = call { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(28) %6, ptr noundef nonnull align 4 dereferenceable(28) %54, ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %143, ptr noundef nonnull align 4 dereferenceable(12) %144, ptr noundef nonnull align 4 dereferenceable(12) %.ptr703.14)
  %.fca.0.extract48 = extractvalue { i64, i32 } %537, 0
  %.fca.1.extract49 = extractvalue { i64, i32 } %537, 1
  store i64 %.fca.0.extract48, ptr %142, align 8
  %.sroa.251.0..sroa_idx = getelementptr inbounds i8, ptr %142, i64 8
  store i32 %.fca.1.extract49, ptr %.sroa.251.0..sroa_idx, align 8
  %538 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %.ptr699.14, ptr noundef nonnull align 4 dereferenceable(12) %142)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %144) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %143) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %142) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %145) #7
  %539 = load i32, ptr %12, align 16, !tbaa !6
  store i32 %539, ptr %145, align 4, !tbaa !6
  %540 = call i32 @_ZN5GMath4ZeroEv()
  %541 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.1, i32 %540)
  br i1 %541, label %542, label %546

542:                                              ; preds = %534
  %543 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.1, i32 %539)
  br i1 %543, label %544, label %546

544:                                              ; preds = %542
  %545 = load i32, ptr %.ptr.1, align 4, !tbaa !6
  store i32 %545, ptr %145, align 4, !tbaa !6
  br label %546

546:                                              ; preds = %534, %542, %544
  %.sroa.035.0.copyload.1 = phi i32 [ %545, %544 ], [ %539, %542 ], [ %539, %534 ]
  %.1689 = phi i32 [ 1, %544 ], [ 0, %542 ], [ 0, %534 ]
  %547 = call i32 @_ZN5GMath4ZeroEv()
  %548 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.2, i32 %547)
  br i1 %548, label %549, label %553

549:                                              ; preds = %546
  %550 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.2, i32 %.sroa.035.0.copyload.1)
  br i1 %550, label %551, label %553

551:                                              ; preds = %549
  %552 = load i32, ptr %.ptr.2, align 8, !tbaa !6
  store i32 %552, ptr %145, align 4, !tbaa !6
  br label %553

553:                                              ; preds = %551, %549, %546
  %.sroa.035.0.copyload.2 = phi i32 [ %552, %551 ], [ %.sroa.035.0.copyload.1, %549 ], [ %.sroa.035.0.copyload.1, %546 ]
  %.1689.1 = phi i32 [ 2, %551 ], [ %.1689, %549 ], [ %.1689, %546 ]
  %554 = call i32 @_ZN5GMath4ZeroEv()
  %555 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.3, i32 %554)
  br i1 %555, label %556, label %560

556:                                              ; preds = %553
  %557 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.3, i32 %.sroa.035.0.copyload.2)
  br i1 %557, label %558, label %560

558:                                              ; preds = %556
  %559 = load i32, ptr %.ptr.3, align 4, !tbaa !6
  store i32 %559, ptr %145, align 4, !tbaa !6
  br label %560

560:                                              ; preds = %558, %556, %553
  %.sroa.035.0.copyload.3 = phi i32 [ %559, %558 ], [ %.sroa.035.0.copyload.2, %556 ], [ %.sroa.035.0.copyload.2, %553 ]
  %.1689.2 = phi i32 [ 3, %558 ], [ %.1689.1, %556 ], [ %.1689.1, %553 ]
  %561 = call i32 @_ZN5GMath4ZeroEv()
  %562 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4, i32 %561)
  br i1 %562, label %563, label %567

563:                                              ; preds = %560
  %564 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4, i32 %.sroa.035.0.copyload.3)
  br i1 %564, label %565, label %567

565:                                              ; preds = %563
  %566 = load i32, ptr %.ptr.4, align 16, !tbaa !6
  store i32 %566, ptr %145, align 4, !tbaa !6
  br label %567

567:                                              ; preds = %565, %563, %560
  %.sroa.035.0.copyload.4 = phi i32 [ %566, %565 ], [ %.sroa.035.0.copyload.3, %563 ], [ %.sroa.035.0.copyload.3, %560 ]
  %.1689.3 = phi i32 [ 4, %565 ], [ %.1689.2, %563 ], [ %.1689.2, %560 ]
  %568 = call i32 @_ZN5GMath4ZeroEv()
  %569 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.5, i32 %568)
  br i1 %569, label %570, label %574

570:                                              ; preds = %567
  %571 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.5, i32 %.sroa.035.0.copyload.4)
  br i1 %571, label %572, label %574

572:                                              ; preds = %570
  %573 = load i32, ptr %.ptr.5, align 4, !tbaa !6
  store i32 %573, ptr %145, align 4, !tbaa !6
  br label %574

574:                                              ; preds = %572, %570, %567
  %.sroa.035.0.copyload.5 = phi i32 [ %573, %572 ], [ %.sroa.035.0.copyload.4, %570 ], [ %.sroa.035.0.copyload.4, %567 ]
  %.1689.4 = phi i32 [ 5, %572 ], [ %.1689.3, %570 ], [ %.1689.3, %567 ]
  %575 = call i32 @_ZN5GMath4ZeroEv()
  %576 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6, i32 %575)
  br i1 %576, label %577, label %581

577:                                              ; preds = %574
  %578 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6, i32 %.sroa.035.0.copyload.5)
  br i1 %578, label %579, label %581

579:                                              ; preds = %577
  %580 = load i32, ptr %.ptr.6, align 8, !tbaa !6
  store i32 %580, ptr %145, align 4, !tbaa !6
  br label %581

581:                                              ; preds = %579, %577, %574
  %.sroa.035.0.copyload.6 = phi i32 [ %580, %579 ], [ %.sroa.035.0.copyload.5, %577 ], [ %.sroa.035.0.copyload.5, %574 ]
  %.1689.5 = phi i32 [ 6, %579 ], [ %.1689.4, %577 ], [ %.1689.4, %574 ]
  %582 = call i32 @_ZN5GMath4ZeroEv()
  %583 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7, i32 %582)
  br i1 %583, label %584, label %588

584:                                              ; preds = %581
  %585 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7, i32 %.sroa.035.0.copyload.6)
  br i1 %585, label %586, label %588

586:                                              ; preds = %584
  %587 = load i32, ptr %.ptr.7, align 4, !tbaa !6
  store i32 %587, ptr %145, align 4, !tbaa !6
  br label %588

588:                                              ; preds = %586, %584, %581
  %.sroa.035.0.copyload.7 = phi i32 [ %587, %586 ], [ %.sroa.035.0.copyload.6, %584 ], [ %.sroa.035.0.copyload.6, %581 ]
  %.1689.6 = phi i32 [ 7, %586 ], [ %.1689.5, %584 ], [ %.1689.5, %581 ]
  %589 = call i32 @_ZN5GMath4ZeroEv()
  %590 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8, i32 %589)
  br i1 %590, label %591, label %595

591:                                              ; preds = %588
  %592 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8, i32 %.sroa.035.0.copyload.7)
  br i1 %592, label %593, label %595

593:                                              ; preds = %591
  %594 = load i32, ptr %.ptr.8, align 16, !tbaa !6
  store i32 %594, ptr %145, align 4, !tbaa !6
  br label %595

595:                                              ; preds = %593, %591, %588
  %.sroa.035.0.copyload.8 = phi i32 [ %594, %593 ], [ %.sroa.035.0.copyload.7, %591 ], [ %.sroa.035.0.copyload.7, %588 ]
  %.1689.7 = phi i32 [ 8, %593 ], [ %.1689.6, %591 ], [ %.1689.6, %588 ]
  %596 = call i32 @_ZN5GMath4ZeroEv()
  %597 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.9, i32 %596)
  br i1 %597, label %598, label %602

598:                                              ; preds = %595
  %599 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.9, i32 %.sroa.035.0.copyload.8)
  br i1 %599, label %600, label %602

600:                                              ; preds = %598
  %601 = load i32, ptr %.ptr.9, align 4, !tbaa !6
  store i32 %601, ptr %145, align 4, !tbaa !6
  br label %602

602:                                              ; preds = %600, %598, %595
  %.sroa.035.0.copyload.9 = phi i32 [ %601, %600 ], [ %.sroa.035.0.copyload.8, %598 ], [ %.sroa.035.0.copyload.8, %595 ]
  %.1689.8 = phi i32 [ 9, %600 ], [ %.1689.7, %598 ], [ %.1689.7, %595 ]
  %603 = call i32 @_ZN5GMath4ZeroEv()
  %604 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.10, i32 %603)
  br i1 %604, label %605, label %609

605:                                              ; preds = %602
  %606 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.10, i32 %.sroa.035.0.copyload.9)
  br i1 %606, label %607, label %609

607:                                              ; preds = %605
  %608 = load i32, ptr %.ptr.10, align 8, !tbaa !6
  store i32 %608, ptr %145, align 4, !tbaa !6
  br label %609

609:                                              ; preds = %607, %605, %602
  %.sroa.035.0.copyload.10 = phi i32 [ %608, %607 ], [ %.sroa.035.0.copyload.9, %605 ], [ %.sroa.035.0.copyload.9, %602 ]
  %.1689.9 = phi i32 [ 10, %607 ], [ %.1689.8, %605 ], [ %.1689.8, %602 ]
  %610 = call i32 @_ZN5GMath4ZeroEv()
  %611 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.11, i32 %610)
  br i1 %611, label %612, label %616

612:                                              ; preds = %609
  %613 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.11, i32 %.sroa.035.0.copyload.10)
  br i1 %613, label %614, label %616

614:                                              ; preds = %612
  %615 = load i32, ptr %.ptr.11, align 4, !tbaa !6
  store i32 %615, ptr %145, align 4, !tbaa !6
  br label %616

616:                                              ; preds = %614, %612, %609
  %.sroa.035.0.copyload.11 = phi i32 [ %615, %614 ], [ %.sroa.035.0.copyload.10, %612 ], [ %.sroa.035.0.copyload.10, %609 ]
  %.1689.10 = phi i32 [ 11, %614 ], [ %.1689.9, %612 ], [ %.1689.9, %609 ]
  %617 = call i32 @_ZN5GMath4ZeroEv()
  %618 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.12, i32 %617)
  br i1 %618, label %619, label %623

619:                                              ; preds = %616
  %620 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.12, i32 %.sroa.035.0.copyload.11)
  br i1 %620, label %621, label %623

621:                                              ; preds = %619
  %622 = load i32, ptr %.ptr.12, align 16, !tbaa !6
  store i32 %622, ptr %145, align 4, !tbaa !6
  br label %623

623:                                              ; preds = %621, %619, %616
  %.sroa.035.0.copyload.12 = phi i32 [ %622, %621 ], [ %.sroa.035.0.copyload.11, %619 ], [ %.sroa.035.0.copyload.11, %616 ]
  %.1689.11 = phi i32 [ 12, %621 ], [ %.1689.10, %619 ], [ %.1689.10, %616 ]
  %624 = call i32 @_ZN5GMath4ZeroEv()
  %625 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.13, i32 %624)
  br i1 %625, label %626, label %630

626:                                              ; preds = %623
  %627 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.13, i32 %.sroa.035.0.copyload.12)
  br i1 %627, label %628, label %630

628:                                              ; preds = %626
  %629 = load i32, ptr %.ptr.13, align 4, !tbaa !6
  store i32 %629, ptr %145, align 4, !tbaa !6
  br label %630

630:                                              ; preds = %628, %626, %623
  %.sroa.035.0.copyload.13 = phi i32 [ %629, %628 ], [ %.sroa.035.0.copyload.12, %626 ], [ %.sroa.035.0.copyload.12, %623 ]
  %.1689.12 = phi i32 [ 13, %628 ], [ %.1689.11, %626 ], [ %.1689.11, %623 ]
  %631 = call i32 @_ZN5GMath4ZeroEv()
  %632 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.14, i32 %631)
  br i1 %632, label %633, label %635

633:                                              ; preds = %630
  %634 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.14, i32 %.sroa.035.0.copyload.13)
  br i1 %634, label %.thread, label %635

635:                                              ; preds = %633, %630
  %.not = icmp eq ptr %4, null
  br i1 %.not, label %656, label %637

.thread:                                          ; preds = %633
  %636 = load i32, ptr %.ptr.14, align 8, !tbaa !6
  store i32 %636, ptr %145, align 4, !tbaa !6
  %.not722 = icmp eq ptr %4, null
  br i1 %.not722, label %656, label %.thread725

637:                                              ; preds = %635
  %638 = icmp ult i32 %.1689.12, 6
  br i1 %638, label %639, label %.thread725

639:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %146) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %147) #7
  %640 = call { i64, i32 } @_ZN8GVector34ZeroEv()
  %.fca.0.extract31 = extractvalue { i64, i32 } %640, 0
  %.fca.1.extract32 = extractvalue { i64, i32 } %640, 1
  store i64 %.fca.0.extract31, ptr %147, align 8
  %.sroa.234.0..sroa_idx = getelementptr inbounds i8, ptr %147, i64 8
  store i32 %.fca.1.extract32, ptr %.sroa.234.0..sroa_idx, align 8
  %641 = call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %147)
  %.fca.0.extract27 = extractvalue { i64, i32 } %641, 0
  %.fca.1.extract28 = extractvalue { i64, i32 } %641, 1
  store i64 %.fca.0.extract27, ptr %146, align 8
  %.sroa.230.0..sroa_idx = getelementptr inbounds i8, ptr %146, i64 8
  store i32 %.fca.1.extract28, ptr %.sroa.230.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %148) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %149) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %150) #7
  %642 = zext nneg i32 %.1689.12 to i64
  %643 = getelementptr inbounds [15 x %class.GVector3], ptr %13, i64 0, i64 %642
  %644 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %643)
  %.fca.0.extract23 = extractvalue { i64, i32 } %644, 0
  %.fca.1.extract24 = extractvalue { i64, i32 } %644, 1
  store i64 %.fca.0.extract23, ptr %150, align 8
  %.sroa.226.0..sroa_idx = getelementptr inbounds i8, ptr %150, i64 8
  store i32 %.fca.1.extract24, ptr %.sroa.226.0..sroa_idx, align 8
  %645 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract19 = extractvalue { i64, i32 } %645, 0
  %.fca.1.extract20 = extractvalue { i64, i32 } %645, 1
  store i64 %.fca.0.extract19, ptr %149, align 8
  %.sroa.222.0..sroa_idx = getelementptr inbounds i8, ptr %149, i64 8
  store i32 %.fca.1.extract20, ptr %.sroa.222.0..sroa_idx, align 8
  %646 = call { i64, i32 } @_ZNK8GVector312GetNormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %149)
  %.fca.0.extract15 = extractvalue { i64, i32 } %646, 0
  %.fca.1.extract16 = extractvalue { i64, i32 } %646, 1
  store i64 %.fca.0.extract15, ptr %148, align 8
  %.sroa.218.0..sroa_idx = getelementptr inbounds i8, ptr %148, i64 8
  store i32 %.fca.1.extract16, ptr %.sroa.218.0..sroa_idx, align 8
  %647 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %145)
  call void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %148, i32 %647, i32 noundef -1)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %150) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %149) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %148) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %147) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %146) #7
  br label %656

.thread725:                                       ; preds = %.thread, %637
  %.1689.13723727 = phi i32 [ %.1689.12, %637 ], [ 14, %.thread ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %151) #7
  %648 = zext nneg i32 %.1689.13723727 to i64
  %649 = getelementptr inbounds [15 x %class.GVector3], ptr %14, i64 0, i64 %648
  %650 = call { i64, i32 } @_ZNK13GTransform_QT17TransformPositionERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %649)
  %.fca.0.extract10 = extractvalue { i64, i32 } %650, 0
  %.fca.1.extract11 = extractvalue { i64, i32 } %650, 1
  store i64 %.fca.0.extract10, ptr %151, align 8
  %.sroa.213.0..sroa_idx = getelementptr inbounds i8, ptr %151, 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 %152) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %153) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %154) #7
  %651 = getelementptr inbounds [15 x %class.GVector3], ptr %13, i64 0, i64 %648
  %652 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %651)
  %.fca.0.extract6 = extractvalue { i64, i32 } %652, 0
  %.fca.1.extract7 = extractvalue { i64, i32 } %652, 1
  store i64 %.fca.0.extract6, ptr %154, align 8
  %.sroa.29.0..sroa_idx = getelementptr inbounds i8, ptr %154, i64 8
  store i32 %.fca.1.extract7, ptr %.sroa.29.0..sroa_idx, align 8
  %653 = call { i64, i32 } @_ZNK13GTransform_QT15TransformNormalERK8GVector3(ptr noundef nonnull align 4 dereferenceable(28) %1, ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract2 = extractvalue { i64, i32 } %653, 0
  %.fca.1.extract3 = extractvalue { i64, i32 } %653, 1
  store i64 %.fca.0.extract2, ptr %153, align 8
  %.sroa.25.0..sroa_idx = getelementptr inbounds i8, ptr %153, i64 8
  store i32 %.fca.1.extract3, ptr %.sroa.25.0..sroa_idx, align 8
  %654 = call { i64, i32 } @_ZNK8GVector312GetNormalizeEv(ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract = extractvalue { i64, i32 } %654, 0
  %.fca.1.extract = extractvalue { i64, i32 } %654, 1
  store i64 %.fca.0.extract, ptr %152, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %152, i64 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %655 = call i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4) %145)
  call void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %152, i32 %655, i32 noundef -1)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %154) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %153) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %152) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %151) #7
  br label %656

656:                                              ; preds = %.thread, %639, %.thread725, %635
  %.1689.13724 = phi i32 [ 14, %.thread ], [ %.1689.12, %639 ], [ %.1689.13723727, %.thread725 ], [ %.1689.12, %635 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %145) #7
  br label %657

657:                                              ; preds = %508, %482, %456, %429, %402, %375, %348, %321, %287, %656
  %.0 = phi i32 [ %.1689.13724, %656 ], [ -1, %287 ], [ -1, %321 ], [ -1, %348 ], [ -1, %375 ], [ -1, %402 ], [ -1, %429 ], [ -1, %456 ], [ -1, %482 ], [ -1, %508 ]
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %45) #7
  br label %658

658:                                              ; preds = %265, %657
  %.1 = phi i32 [ %.0, %657 ], [ -1, %265 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #7
  br label %659

659:                                              ; preds = %242, %658
  %.2 = phi i32 [ %.1, %658 ], [ -1, %242 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #7
  br label %660

660:                                              ; preds = %226, %659
  %.3 = phi i32 [ %.2, %659 ], [ -1, %226 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #7
  br label %661

661:                                              ; preds = %201, %660
  %.4 = phi i32 [ %.3, %660 ], [ -1, %201 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #7
  br label %662

662:                                              ; preds = %176, %661
  %.5 = phi i32 [ %.4, %661 ], [ -1, %176 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #7
  br label %663

663:                                              ; preds = %5, %662
  %.6 = phi i32 [ %.5, %662 ], [ -1, %5 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 180, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %6) #7
  ret i32 %.6
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatngEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK8GVector34SizeEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN6GFloatdVES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8GVector39NormalizeEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AXRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_XRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_YRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL11BPosStart_ZRK8GVector3RK13GTransform_QT(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AYRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden { i64, i32 } @_ZL13EdgeInsect_AZRK8GVector3S1_RK13GTransform_QTS4_S1_S1_S1_RS_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1

declare void @_ZN17GCollisionContact15AddContactPointERK8GVector3S2_6GFloatj(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), i32, i32 noundef) local_unnamed_addr #6

; 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 #4 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { "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 #7 = { 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 = !{i64 0, i64 4, !6, i64 4, i64 4, !6, i64 8, i64 4, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LoopRotatePass,SCCPPass,SROAPass,SimplifyCFGPass