; 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.GFloat = type { i32 }
%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GMatrix3 = type { [3 x [3 x %class.GFloat]] }
%class.GTransform_QT = type { %class.GQuaternion, %class.GVector3 }
%class.GQuaternion = type { %class.GFloat, %class.GFloat, %class.GFloat, %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: 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 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 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #5 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() #5 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: 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 i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4), i32) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14GCollision_Box18Box_Box_Contact_PXERK9GShapeBoxRK13GTransform_QTS2_S5_P17GCollisionContactRb(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, ptr noundef nonnull align 1 dereferenceable(1) %5) #5 align 2 {
  %7 = alloca i32, align 4
  %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 [3 x [3 x %class.GFloat]], align 16
  %15 = alloca [3 x [3 x %class.GFloat]], align 16
  %16 = alloca [3 x %class.GFloat], align 4
  %17 = alloca [6 x %class.GFloat], align 16
  %18 = alloca [6 x %class.GFloat], align 16
  %19 = alloca %class.GFloat, align 4
  %20 = alloca %class.GVector3, align 4
  %21 = alloca { i64, i32 }, align 8
  %22 = alloca %class.GMatrix3, align 4
  %23 = alloca %class.GMatrix3, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %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 %class.GFloat, align 4
  %39 = alloca %class.GFloat, 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.GFloat, 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.GFloat, 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 i32, align 4
  %64 = alloca %class.GFloat, 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.GFloat, 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 %class.GFloat, align 4
  %84 = alloca %class.GFloat, align 4
  %85 = alloca %class.GFloat, align 4
  %86 = alloca %class.GFloat, align 4
  %87 = alloca %class.GFloat, align 4
  %88 = alloca %class.GFloat, 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.GFloat, align 4
  %99 = alloca %class.GFloat, 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 %class.GFloat, align 4
  %106 = alloca %class.GFloat, 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.GFloat, align 4
  %117 = alloca %class.GFloat, 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 %class.GFloat, align 4
  %124 = alloca %class.GFloat, 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.GFloat, align 4
  %135 = alloca %class.GFloat, 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 %class.GFloat, align 4
  %142 = alloca %class.GFloat, align 4
  %143 = alloca %class.GFloat, align 4
  %144 = alloca %class.GFloat, align 4
  %145 = alloca %class.GFloat, align 4
  %146 = alloca %class.GFloat, align 4
  %147 = alloca %class.GFloat, align 4
  %148 = alloca %class.GFloat, align 4
  %149 = alloca %class.GFloat, align 4
  %150 = alloca %class.GFloat, align 4
  %151 = alloca %class.GFloat, align 4
  %152 = alloca %class.GFloat, align 4
  %153 = alloca %class.GFloat, align 4
  %154 = alloca %class.GFloat, align 4
  %155 = alloca %class.GFloat, align 4
  %156 = alloca %class.GFloat, align 4
  %157 = alloca %class.GFloat, align 4
  %158 = alloca %class.GFloat, align 4
  %159 = alloca %class.GFloat, align 4
  %160 = alloca %class.GFloat, align 4
  %161 = alloca %class.GFloat, align 4
  %162 = alloca %class.GFloat, align 4
  %163 = alloca %class.GFloat, align 4
  %164 = alloca %class.GFloat, align 4
  %165 = alloca %class.GFloat, align 4
  %166 = alloca %class.GFloat, align 4
  %167 = alloca %class.GFloat, align 4
  %168 = alloca %class.GFloat, align 4
  %169 = alloca %class.GFloat, align 4
  %170 = alloca %class.GFloat, align 4
  %171 = alloca %class.GFloat, align 4
  %172 = alloca %class.GFloat, align 4
  %173 = alloca %class.GFloat, align 4
  %174 = alloca %class.GFloat, align 4
  %175 = alloca %class.GFloat, align 4
  %176 = alloca %class.GFloat, align 4
  %177 = alloca %class.GFloat, align 4
  %178 = alloca %class.GFloat, align 4
  %179 = alloca %class.GFloat, align 4
  %180 = alloca %class.GFloat, align 4
  %181 = alloca %class.GFloat, align 4
  %182 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %192 = alloca %class.GFloat, align 4
  %193 = alloca %class.GFloat, align 4
  %194 = alloca %class.GFloat, align 4
  %195 = alloca %class.GFloat, align 4
  %196 = alloca %class.GFloat, align 4
  %197 = alloca %class.GFloat, align 4
  %198 = alloca %class.GFloat, align 4
  %199 = alloca %class.GFloat, align 4
  %200 = alloca %class.GFloat, align 4
  %201 = alloca %class.GFloat, align 4
  %202 = alloca %class.GFloat, align 4
  %203 = alloca %class.GFloat, align 4
  %204 = alloca %class.GFloat, align 4
  %205 = alloca %class.GFloat, align 4
  %206 = alloca %class.GFloat, align 4
  %207 = alloca %class.GFloat, align 4
  %208 = alloca %class.GFloat, align 4
  %209 = alloca %class.GFloat, align 4
  %210 = alloca %class.GFloat, align 4
  %211 = alloca %class.GFloat, align 4
  %212 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %222 = alloca %class.GFloat, align 4
  %223 = alloca %class.GFloat, align 4
  %224 = alloca %class.GFloat, align 4
  %225 = alloca %class.GFloat, align 4
  %226 = alloca %class.GFloat, align 4
  %227 = alloca %class.GFloat, align 4
  %228 = alloca %class.GFloat, align 4
  %229 = alloca %class.GFloat, align 4
  %230 = alloca %class.GFloat, align 4
  %231 = alloca %class.GFloat, align 4
  %232 = alloca %class.GFloat, align 4
  %233 = alloca %class.GFloat, align 4
  %234 = alloca %class.GFloat, align 4
  %235 = alloca %class.GFloat, align 4
  %236 = alloca %class.GFloat, align 4
  %237 = alloca %class.GFloat, align 4
  %238 = alloca %class.GFloat, align 4
  %239 = alloca %class.GFloat, align 4
  %240 = alloca %class.GFloat, align 4
  %241 = alloca %class.GFloat, align 4
  %242 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %252 = alloca %class.GFloat, align 4
  %253 = alloca %class.GFloat, align 4
  %254 = alloca %class.GFloat, align 4
  %255 = alloca %class.GFloat, align 4
  %256 = alloca %class.GFloat, align 4
  %257 = alloca %class.GFloat, align 4
  %258 = alloca %class.GFloat, align 4
  %259 = alloca %class.GFloat, align 4
  %260 = alloca %class.GFloat, align 4
  %261 = alloca %class.GFloat, align 4
  %262 = alloca %class.GFloat, align 4
  %263 = alloca %class.GFloat, align 4
  %264 = alloca %class.GFloat, align 4
  %265 = alloca %class.GFloat, align 4
  %266 = alloca %class.GFloat, align 4
  %267 = alloca %class.GFloat, align 4
  %268 = alloca %class.GFloat, align 4
  %269 = alloca %class.GFloat, align 4
  %270 = alloca %class.GFloat, align 4
  %271 = alloca %class.GFloat, align 4
  %272 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %282 = alloca %class.GFloat, align 4
  %283 = alloca %class.GFloat, align 4
  %284 = alloca %class.GFloat, align 4
  %285 = alloca %class.GFloat, align 4
  %286 = alloca %class.GFloat, align 4
  %287 = alloca %class.GFloat, align 4
  %288 = alloca %class.GFloat, align 4
  %289 = alloca %class.GFloat, align 4
  %290 = alloca %class.GFloat, align 4
  %291 = alloca %class.GFloat, align 4
  %292 = alloca %class.GFloat, align 4
  %293 = alloca %class.GFloat, align 4
  %294 = alloca %class.GFloat, align 4
  %295 = alloca %class.GFloat, align 4
  %296 = alloca %class.GFloat, align 4
  %297 = alloca %class.GFloat, align 4
  %298 = alloca %class.GFloat, align 4
  %299 = alloca %class.GFloat, align 4
  %300 = alloca %class.GFloat, align 4
  %301 = alloca %class.GFloat, align 4
  %302 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %312 = alloca %class.GFloat, align 4
  %313 = alloca %class.GFloat, align 4
  %314 = alloca %class.GFloat, align 4
  %315 = alloca %class.GFloat, align 4
  %316 = alloca %class.GFloat, align 4
  %317 = alloca %class.GFloat, align 4
  %318 = alloca %class.GFloat, align 4
  %319 = alloca %class.GFloat, align 4
  %320 = alloca %class.GFloat, align 4
  %321 = alloca %class.GFloat, align 4
  %322 = alloca %class.GFloat, align 4
  %323 = alloca %class.GFloat, align 4
  %324 = alloca %class.GFloat, align 4
  %325 = alloca %class.GFloat, align 4
  %326 = alloca %class.GFloat, align 4
  %327 = alloca %class.GFloat, align 4
  %328 = alloca %class.GFloat, align 4
  %329 = alloca %class.GFloat, align 4
  %330 = alloca %class.GFloat, align 4
  %331 = alloca %class.GFloat, align 4
  %332 = alloca %class.GFloat, align 4
  %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.GFloat, align 4
  %342 = alloca %class.GFloat, align 4
  %343 = alloca %class.GFloat, align 4
  %344 = alloca %class.GFloat, align 4
  %345 = alloca %class.GFloat, align 4
  %346 = alloca %class.GFloat, align 4
  %347 = alloca %class.GFloat, align 4
  %348 = alloca %class.GFloat, align 4
  %349 = alloca %class.GFloat, align 4
  %350 = alloca %class.GFloat, align 4
  %351 = alloca %class.GFloat, align 4
  %352 = alloca %class.GFloat, align 4
  %353 = alloca %class.GFloat, align 4
  %354 = alloca %class.GFloat, align 4
  %355 = alloca i32, align 4
  %356 = alloca i32, align 4
  %357 = alloca %class.GFloat, align 4
  %358 = alloca %class.GFloat, align 4
  %359 = alloca %class.GFloat, align 4
  %360 = alloca i32, align 4
  %361 = alloca %class.GFloat, align 4
  %362 = alloca %class.GTransform_QT, align 4
  %363 = alloca %class.GMatrix3, align 4
  %364 = alloca %class.GVector3, align 4
  %365 = alloca %class.GVector3, align 4
  %366 = alloca %class.GVector3, align 4
  %367 = alloca %class.GFloat, align 4
  %368 = alloca { i64, i32 }, align 8
  %369 = alloca { i64, i32 }, align 8
  %370 = alloca %class.GVector3, align 4
  %371 = alloca { i64, i32 }, align 8
  %372 = alloca %class.GVector3, align 4
  %373 = alloca { i64, i32 }, align 8
  %374 = alloca %class.GVector3, align 4
  %375 = alloca { i64, i32 }, align 8
  %376 = alloca %class.GVector3, align 4
  %377 = alloca %class.GVector3, align 4
  %378 = alloca %class.GFloat, align 4
  %379 = alloca { i64, i32 }, align 8
  %380 = alloca { i64, i32 }, align 8
  %381 = alloca %class.GQuaternion, align 4
  %382 = alloca %class.GVector3, align 4
  %383 = alloca { i64, i32 }, align 8
  %384 = alloca %class.GFloat, align 4
  %385 = alloca %class.GFloat, align 4
  %386 = alloca %class.GFloat, align 4
  %387 = alloca %class.GVector3, align 4
  %388 = alloca %class.GVector3, align 4
  %389 = alloca %class.GFloat, align 4
  %390 = alloca { i64, i32 }, align 8
  %391 = alloca { i64, i32 }, align 8
  %392 = alloca %class.GVector3, align 4
  %393 = alloca { i64, i32 }, align 8
  %394 = alloca %class.GVector3, align 4
  %395 = alloca { i64, i32 }, align 8
  %396 = alloca %class.GVector3, align 4
  %397 = alloca { i64, i32 }, align 8
  %398 = alloca %class.GVector3, align 4
  %399 = alloca %class.GVector3, align 4
  %400 = alloca %class.GFloat, align 4
  %401 = alloca { i64, i32 }, align 8
  %402 = alloca { i64, i32 }, align 8
  %403 = alloca %class.GQuaternion, align 4
  %404 = alloca %class.GVector3, align 4
  %405 = alloca { i64, i32 }, align 8
  %406 = alloca %class.GFloat, align 4
  %407 = alloca %class.GFloat, align 4
  %408 = alloca %class.GFloat, align 4
  %409 = alloca %class.GVector3, align 4
  %410 = alloca %class.GVector3, align 4
  %411 = alloca %class.GFloat, align 4
  %412 = alloca { i64, i32 }, align 8
  %413 = alloca { i64, i32 }, align 8
  %414 = alloca %class.GVector3, align 4
  %415 = alloca { i64, i32 }, align 8
  %416 = alloca %class.GVector3, align 4
  %417 = alloca { i64, i32 }, align 8
  %418 = alloca %class.GVector3, align 4
  %419 = alloca { i64, i32 }, align 8
  %420 = alloca %class.GVector3, align 4
  %421 = alloca %class.GVector3, align 4
  %422 = alloca %class.GFloat, align 4
  %423 = alloca { i64, i32 }, align 8
  %424 = alloca { i64, i32 }, align 8
  %425 = alloca %class.GQuaternion, align 4
  %426 = alloca %class.GVector3, align 4
  %427 = alloca { i64, i32 }, align 8
  %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 { i64, i32 }, align 8
  %435 = alloca %class.GVector3, align 4
  %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.GQuaternion, align 4
  %441 = alloca %class.GVector3, align 4
  %442 = alloca { i64, i32 }, align 8
  %443 = alloca %class.GVector3, align 4
  %444 = alloca %class.GVector3, align 4
  %445 = alloca %class.GFloat, align 4
  %446 = alloca { i64, i32 }, align 8
  %447 = alloca { i64, i32 }, align 8
  %448 = alloca %class.GFloat, align 4
  %449 = alloca %class.GFloat, align 4
  %450 = alloca %class.GFloat, align 4
  %451 = alloca %class.GVector3, align 4
  %452 = alloca { i64, i32 }, align 8
  %453 = alloca %class.GVector3, align 4
  %454 = alloca { i64, i32 }, align 8
  %455 = alloca %class.GVector3, align 4
  %456 = alloca %class.GVector3, align 4
  %457 = alloca %class.GFloat, align 4
  %458 = alloca { i64, i32 }, align 8
  %459 = alloca { i64, i32 }, align 8
  %460 = alloca %class.GVector3, align 4
  %461 = alloca { i64, i32 }, align 8
  %462 = alloca %class.GVector3, align 4
  %463 = alloca %class.GVector3, align 4
  %464 = alloca %class.GFloat, align 4
  %465 = alloca { i64, i32 }, align 8
  %466 = alloca { i64, i32 }, align 8
  %467 = alloca %class.GQuaternion, align 4
  %468 = alloca %class.GFloat, align 4
  %469 = alloca %class.GFloat, align 4
  %470 = alloca %class.GFloat, align 4
  %471 = alloca %class.GVector3, align 4
  %472 = alloca { i64, i32 }, align 8
  %473 = alloca %class.GVector3, align 4
  %474 = alloca { i64, i32 }, align 8
  %475 = alloca %class.GVector3, align 4
  %476 = alloca %class.GVector3, align 4
  %477 = alloca %class.GFloat, align 4
  %478 = alloca { i64, i32 }, align 8
  %479 = alloca { i64, i32 }, align 8
  %480 = alloca %class.GVector3, align 4
  %481 = alloca { i64, i32 }, align 8
  %482 = alloca %class.GVector3, align 4
  %483 = alloca %class.GVector3, align 4
  %484 = alloca %class.GFloat, align 4
  %485 = alloca { i64, i32 }, align 8
  %486 = alloca { i64, i32 }, align 8
  %487 = alloca %class.GQuaternion, align 4
  %488 = alloca %class.GFloat, align 4
  %489 = alloca %class.GFloat, align 4
  %490 = alloca %class.GFloat, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 36, ptr %14) #7
  %491 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i32 0, i32 0, i32 0
  %492 = getelementptr inbounds %class.GFloat, ptr %491, i64 9
  br label %493

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

497:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 36, ptr %15) #7
  %498 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i32 0, i32 0, i32 0
  %499 = getelementptr inbounds %class.GFloat, ptr %498, i64 9
  br label %500

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

504:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #7
  %505 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i32 0, i32 0
  %506 = getelementptr inbounds %class.GFloat, ptr %505, i64 3
  br label %507

507:                                              ; preds = %507, %504
  %508 = phi ptr [ %505, %504 ], [ %509, %507 ]
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %508)
  %509 = getelementptr inbounds %class.GFloat, ptr %508, i64 1
  %510 = icmp eq ptr %509, %506
  br i1 %510, label %511, label %507

511:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #7
  %512 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i32 0, i32 0
  %513 = getelementptr inbounds %class.GFloat, ptr %512, i64 6
  br label %514

514:                                              ; preds = %514, %511
  %515 = phi ptr [ %512, %511 ], [ %516, %514 ]
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %515)
  %516 = getelementptr inbounds %class.GFloat, ptr %515, i64 1
  %517 = icmp eq ptr %516, %513
  br i1 %517, label %518, label %514

518:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  %519 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i32 0, i32 0
  %520 = getelementptr inbounds %class.GFloat, ptr %519, i64 6
  br label %521

521:                                              ; preds = %521, %518
  %522 = phi ptr [ %519, %518 ], [ %523, %521 ]
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %522)
  %523 = getelementptr inbounds %class.GFloat, ptr %522, i64 1
  %524 = icmp eq ptr %523, %520
  br i1 %524, label %525, label %521

525:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %526 = call i32 @_ZN5GMath4ZeroEv()
  %527 = getelementptr inbounds %class.GFloat, ptr %19, i32 0, i32 0
  store i32 %526, ptr %527, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #7
  %528 = load ptr, ptr %11, align 8, !tbaa !5
  %529 = getelementptr inbounds %class.GTransform_QT, ptr %528, i32 0, i32 1
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = getelementptr inbounds %class.GTransform_QT, ptr %530, i32 0, i32 1
  %532 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %529, ptr noundef nonnull align 4 dereferenceable(12) %531)
  store { i64, i32 } %532, ptr %21, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %21, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 36, ptr %22) #7
  %533 = load ptr, ptr %9, align 8, !tbaa !5
  %534 = getelementptr inbounds %class.GTransform_QT, ptr %533, i32 0, i32 0
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %22, ptr noundef nonnull align 4 dereferenceable(16) %534)
  call void @llvm.lifetime.start.p0(i64 36, ptr %23) #7
  %535 = load ptr, ptr %11, align 8, !tbaa !5
  %536 = getelementptr inbounds %class.GTransform_QT, ptr %535, i32 0, i32 0
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %23, ptr noundef nonnull align 4 dereferenceable(16) %536)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %537 = load ptr, ptr %8, align 8, !tbaa !5
  %538 = getelementptr inbounds %class.GShapeBox, ptr %537, i32 0, i32 1
  store ptr %538, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %539 = load ptr, ptr %10, align 8, !tbaa !5
  %540 = getelementptr inbounds %class.GShapeBox, ptr %539, i32 0, i32 1
  store ptr %540, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %541 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %22, i32 noundef 0)
  store ptr %541, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %542 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %22, i32 noundef 1)
  store ptr %542, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %543 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %22, i32 noundef 2)
  store ptr %543, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %544 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %23, i32 noundef 0)
  store ptr %544, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %545 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %23, i32 noundef 1)
  store ptr %545, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %546 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %23, i32 noundef 2)
  store ptr %546, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %547 = load ptr, ptr %26, align 8, !tbaa !5
  %548 = load ptr, ptr %29, align 8, !tbaa !5
  %549 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %547, ptr noundef nonnull align 4 dereferenceable(12) %548)
  %550 = getelementptr inbounds %class.GFloat, ptr %32, i32 0, i32 0
  store i32 %549, ptr %550, align 4
  %551 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %552 = getelementptr inbounds [3 x %class.GFloat], ptr %551, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %552, ptr align 4 %32, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %553 = load ptr, ptr %26, align 8, !tbaa !5
  %554 = load ptr, ptr %30, align 8, !tbaa !5
  %555 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %553, ptr noundef nonnull align 4 dereferenceable(12) %554)
  %556 = getelementptr inbounds %class.GFloat, ptr %33, i32 0, i32 0
  store i32 %555, ptr %556, align 4
  %557 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %558 = getelementptr inbounds [3 x %class.GFloat], ptr %557, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %558, ptr align 4 %33, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %559 = load ptr, ptr %26, align 8, !tbaa !5
  %560 = load ptr, ptr %31, align 8, !tbaa !5
  %561 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %559, ptr noundef nonnull align 4 dereferenceable(12) %560)
  %562 = getelementptr inbounds %class.GFloat, ptr %34, i32 0, i32 0
  store i32 %561, ptr %562, align 4
  %563 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %564 = getelementptr inbounds [3 x %class.GFloat], ptr %563, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %564, ptr align 4 %34, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %565 = load ptr, ptr %26, align 8, !tbaa !5
  %566 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %565, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %567 = getelementptr inbounds %class.GFloat, ptr %35, i32 0, i32 0
  store i32 %566, ptr %567, align 4
  %568 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %568, ptr align 4 %35, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  %569 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %570 = getelementptr inbounds %class.GFloat, ptr %37, i32 0, i32 0
  store i32 %569, ptr %570, align 4
  %571 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %572 = getelementptr inbounds [3 x %class.GFloat], ptr %571, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 16 %572, i64 4, i1 false), !tbaa.struct !9
  %573 = getelementptr inbounds %class.GFloat, ptr %39, i32 0, i32 0
  %574 = load i32, ptr %573, align 4
  %575 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %574)
  %576 = getelementptr inbounds %class.GFloat, ptr %38, i32 0, i32 0
  store i32 %575, ptr %576, align 4
  %577 = getelementptr inbounds %class.GFloat, ptr %38, i32 0, i32 0
  %578 = load i32, ptr %577, align 4
  %579 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %37, i32 %578)
  %580 = getelementptr inbounds %class.GFloat, ptr %36, i32 0, i32 0
  store i32 %579, ptr %580, align 4
  %581 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %582 = getelementptr inbounds [3 x %class.GFloat], ptr %581, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %582, ptr align 4 %36, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %583 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %584 = getelementptr inbounds %class.GFloat, ptr %41, i32 0, i32 0
  store i32 %583, ptr %584, align 4
  %585 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %586 = getelementptr inbounds [3 x %class.GFloat], ptr %585, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %586, i64 4, i1 false), !tbaa.struct !9
  %587 = getelementptr inbounds %class.GFloat, ptr %43, i32 0, i32 0
  %588 = load i32, ptr %587, align 4
  %589 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %588)
  %590 = getelementptr inbounds %class.GFloat, ptr %42, i32 0, i32 0
  store i32 %589, ptr %590, align 4
  %591 = getelementptr inbounds %class.GFloat, ptr %42, i32 0, i32 0
  %592 = load i32, ptr %591, align 4
  %593 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %41, i32 %592)
  %594 = getelementptr inbounds %class.GFloat, ptr %40, i32 0, i32 0
  store i32 %593, ptr %594, align 4
  %595 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %596 = getelementptr inbounds [3 x %class.GFloat], ptr %595, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %596, ptr align 4 %40, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %597 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %598 = getelementptr inbounds %class.GFloat, ptr %45, i32 0, i32 0
  store i32 %597, ptr %598, align 4
  %599 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %600 = getelementptr inbounds [3 x %class.GFloat], ptr %599, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 8 %600, i64 4, i1 false), !tbaa.struct !9
  %601 = getelementptr inbounds %class.GFloat, ptr %47, i32 0, i32 0
  %602 = load i32, ptr %601, align 4
  %603 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %602)
  %604 = getelementptr inbounds %class.GFloat, ptr %46, i32 0, i32 0
  store i32 %603, ptr %604, align 4
  %605 = getelementptr inbounds %class.GFloat, ptr %46, i32 0, i32 0
  %606 = load i32, ptr %605, align 4
  %607 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %45, i32 %606)
  %608 = getelementptr inbounds %class.GFloat, ptr %44, i32 0, i32 0
  store i32 %607, ptr %608, align 4
  %609 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %610 = getelementptr inbounds [3 x %class.GFloat], ptr %609, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %610, ptr align 4 %44, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  %611 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %612 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %612, ptr align 4 %611, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %613 = load ptr, ptr %24, align 8, !tbaa !5
  %614 = getelementptr inbounds %class.GVector3, ptr %613, i32 0, i32 0
  %615 = load ptr, ptr %25, align 8, !tbaa !5
  %616 = getelementptr inbounds %class.GVector3, ptr %615, i32 0, i32 0
  %617 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %618 = getelementptr inbounds [3 x %class.GFloat], ptr %617, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 16 %618, i64 4, i1 false), !tbaa.struct !9
  %619 = getelementptr inbounds %class.GFloat, ptr %52, i32 0, i32 0
  %620 = load i32, ptr %619, align 4
  %621 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %616, i32 %620)
  %622 = getelementptr inbounds %class.GFloat, ptr %51, i32 0, i32 0
  store i32 %621, ptr %622, align 4
  %623 = getelementptr inbounds %class.GFloat, ptr %51, i32 0, i32 0
  %624 = load i32, ptr %623, align 4
  %625 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %614, i32 %624)
  %626 = getelementptr inbounds %class.GFloat, ptr %50, i32 0, i32 0
  store i32 %625, ptr %626, align 4
  %627 = load ptr, ptr %25, align 8, !tbaa !5
  %628 = getelementptr inbounds %class.GVector3, ptr %627, i32 0, i32 1
  %629 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %630 = getelementptr inbounds [3 x %class.GFloat], ptr %629, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 4 %630, i64 4, i1 false), !tbaa.struct !9
  %631 = getelementptr inbounds %class.GFloat, ptr %54, i32 0, i32 0
  %632 = load i32, ptr %631, align 4
  %633 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %628, i32 %632)
  %634 = getelementptr inbounds %class.GFloat, ptr %53, i32 0, i32 0
  store i32 %633, ptr %634, align 4
  %635 = getelementptr inbounds %class.GFloat, ptr %53, i32 0, i32 0
  %636 = load i32, ptr %635, align 4
  %637 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %50, i32 %636)
  %638 = getelementptr inbounds %class.GFloat, ptr %49, i32 0, i32 0
  store i32 %637, ptr %638, align 4
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = getelementptr inbounds %class.GVector3, ptr %639, i32 0, i32 2
  %641 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %642 = getelementptr inbounds [3 x %class.GFloat], ptr %641, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 8 %642, i64 4, i1 false), !tbaa.struct !9
  %643 = getelementptr inbounds %class.GFloat, ptr %56, i32 0, i32 0
  %644 = load i32, ptr %643, align 4
  %645 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %640, i32 %644)
  %646 = getelementptr inbounds %class.GFloat, ptr %55, i32 0, i32 0
  store i32 %645, ptr %646, align 4
  %647 = getelementptr inbounds %class.GFloat, ptr %55, i32 0, i32 0
  %648 = load i32, ptr %647, align 4
  %649 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %49, i32 %648)
  %650 = getelementptr inbounds %class.GFloat, ptr %48, i32 0, i32 0
  store i32 %649, ptr %650, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  %651 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 16 %651, i64 4, i1 false), !tbaa.struct !9
  %652 = getelementptr inbounds %class.GFloat, ptr %60, i32 0, i32 0
  %653 = load i32, ptr %652, align 4
  %654 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %653)
  %655 = getelementptr inbounds %class.GFloat, ptr %59, i32 0, i32 0
  store i32 %654, ptr %655, align 4
  %656 = getelementptr inbounds %class.GFloat, ptr %59, i32 0, i32 0
  %657 = load i32, ptr %656, align 4
  %658 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %657)
  %659 = getelementptr inbounds %class.GFloat, ptr %58, i32 0, i32 0
  store i32 %658, ptr %659, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %61, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %660 = getelementptr inbounds %class.GFloat, ptr %61, i32 0, i32 0
  %661 = load i32, ptr %660, align 4
  %662 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %58, i32 %661)
  %663 = getelementptr inbounds %class.GFloat, ptr %57, i32 0, i32 0
  store i32 %662, ptr %663, align 4
  %664 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %664, ptr align 4 %57, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  %665 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 0
  %666 = call i32 @_ZN5GMath4ZeroEv()
  %667 = getelementptr inbounds %class.GFloat, ptr %62, i32 0, i32 0
  store i32 %666, ptr %667, align 4
  %668 = getelementptr inbounds %class.GFloat, ptr %62, i32 0, i32 0
  %669 = load i32, ptr %668, align 4
  %670 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %665, i32 %669)
  br i1 %670, label %671, label %672

671:                                              ; preds = %525
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

672:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #7
  %673 = load ptr, ptr %27, align 8, !tbaa !5
  %674 = load ptr, ptr %29, align 8, !tbaa !5
  %675 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %673, ptr noundef nonnull align 4 dereferenceable(12) %674)
  %676 = getelementptr inbounds %class.GFloat, ptr %64, i32 0, i32 0
  store i32 %675, ptr %676, align 4
  %677 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %678 = getelementptr inbounds [3 x %class.GFloat], ptr %677, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %678, ptr align 4 %64, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  %679 = load ptr, ptr %27, align 8, !tbaa !5
  %680 = load ptr, ptr %30, align 8, !tbaa !5
  %681 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %679, ptr noundef nonnull align 4 dereferenceable(12) %680)
  %682 = getelementptr inbounds %class.GFloat, ptr %65, i32 0, i32 0
  store i32 %681, ptr %682, align 4
  %683 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %684 = getelementptr inbounds [3 x %class.GFloat], ptr %683, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %684, ptr align 4 %65, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  %685 = load ptr, ptr %27, align 8, !tbaa !5
  %686 = load ptr, ptr %31, align 8, !tbaa !5
  %687 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %685, ptr noundef nonnull align 4 dereferenceable(12) %686)
  %688 = getelementptr inbounds %class.GFloat, ptr %66, i32 0, i32 0
  store i32 %687, ptr %688, align 4
  %689 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %690 = getelementptr inbounds [3 x %class.GFloat], ptr %689, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %690, ptr align 4 %66, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #7
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %691, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %693 = getelementptr inbounds %class.GFloat, ptr %67, i32 0, i32 0
  store i32 %692, ptr %693, align 4
  %694 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %694, ptr align 4 %67, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  %695 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %696 = getelementptr inbounds %class.GFloat, ptr %69, i32 0, i32 0
  store i32 %695, ptr %696, align 4
  %697 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %698 = getelementptr inbounds [3 x %class.GFloat], ptr %697, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 4 %698, i64 4, i1 false), !tbaa.struct !9
  %699 = getelementptr inbounds %class.GFloat, ptr %71, i32 0, i32 0
  %700 = load i32, ptr %699, align 4
  %701 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %700)
  %702 = getelementptr inbounds %class.GFloat, ptr %70, i32 0, i32 0
  store i32 %701, ptr %702, align 4
  %703 = getelementptr inbounds %class.GFloat, ptr %70, i32 0, i32 0
  %704 = load i32, ptr %703, align 4
  %705 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %69, i32 %704)
  %706 = getelementptr inbounds %class.GFloat, ptr %68, i32 0, i32 0
  store i32 %705, ptr %706, align 4
  %707 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %708 = getelementptr inbounds [3 x %class.GFloat], ptr %707, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %708, ptr align 4 %68, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  %709 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %710 = getelementptr inbounds %class.GFloat, ptr %73, i32 0, i32 0
  store i32 %709, ptr %710, align 4
  %711 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %712 = getelementptr inbounds [3 x %class.GFloat], ptr %711, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 4 %712, i64 4, i1 false), !tbaa.struct !9
  %713 = getelementptr inbounds %class.GFloat, ptr %75, i32 0, i32 0
  %714 = load i32, ptr %713, align 4
  %715 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %714)
  %716 = getelementptr inbounds %class.GFloat, ptr %74, i32 0, i32 0
  store i32 %715, ptr %716, align 4
  %717 = getelementptr inbounds %class.GFloat, ptr %74, i32 0, i32 0
  %718 = load i32, ptr %717, align 4
  %719 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %73, i32 %718)
  %720 = getelementptr inbounds %class.GFloat, ptr %72, i32 0, i32 0
  store i32 %719, ptr %720, align 4
  %721 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %722 = getelementptr inbounds [3 x %class.GFloat], ptr %721, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %722, ptr align 4 %72, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #7
  %723 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %724 = getelementptr inbounds %class.GFloat, ptr %77, i32 0, i32 0
  store i32 %723, ptr %724, align 4
  %725 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %726 = getelementptr inbounds [3 x %class.GFloat], ptr %725, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %726, i64 4, i1 false), !tbaa.struct !9
  %727 = getelementptr inbounds %class.GFloat, ptr %79, i32 0, i32 0
  %728 = load i32, ptr %727, align 4
  %729 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %728)
  %730 = getelementptr inbounds %class.GFloat, ptr %78, i32 0, i32 0
  store i32 %729, ptr %730, align 4
  %731 = getelementptr inbounds %class.GFloat, ptr %78, i32 0, i32 0
  %732 = load i32, ptr %731, align 4
  %733 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %77, i32 %732)
  %734 = getelementptr inbounds %class.GFloat, ptr %76, i32 0, i32 0
  store i32 %733, ptr %734, align 4
  %735 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %736 = getelementptr inbounds [3 x %class.GFloat], ptr %735, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %736, ptr align 4 %76, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  %737 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %738 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %738, ptr align 4 %737, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #7
  %739 = load ptr, ptr %24, align 8, !tbaa !5
  %740 = getelementptr inbounds %class.GVector3, ptr %739, i32 0, i32 1
  %741 = load ptr, ptr %25, align 8, !tbaa !5
  %742 = getelementptr inbounds %class.GVector3, ptr %741, i32 0, i32 0
  %743 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %744 = getelementptr inbounds [3 x %class.GFloat], ptr %743, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %84, ptr align 4 %744, i64 4, i1 false), !tbaa.struct !9
  %745 = getelementptr inbounds %class.GFloat, ptr %84, i32 0, i32 0
  %746 = load i32, ptr %745, align 4
  %747 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %742, i32 %746)
  %748 = getelementptr inbounds %class.GFloat, ptr %83, i32 0, i32 0
  store i32 %747, ptr %748, align 4
  %749 = getelementptr inbounds %class.GFloat, ptr %83, i32 0, i32 0
  %750 = load i32, ptr %749, align 4
  %751 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %740, i32 %750)
  %752 = getelementptr inbounds %class.GFloat, ptr %82, i32 0, i32 0
  store i32 %751, ptr %752, align 4
  %753 = load ptr, ptr %25, align 8, !tbaa !5
  %754 = getelementptr inbounds %class.GVector3, ptr %753, i32 0, i32 1
  %755 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %756 = getelementptr inbounds [3 x %class.GFloat], ptr %755, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 4 %756, i64 4, i1 false), !tbaa.struct !9
  %757 = getelementptr inbounds %class.GFloat, ptr %86, i32 0, i32 0
  %758 = load i32, ptr %757, align 4
  %759 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %754, i32 %758)
  %760 = getelementptr inbounds %class.GFloat, ptr %85, i32 0, i32 0
  store i32 %759, ptr %760, align 4
  %761 = getelementptr inbounds %class.GFloat, ptr %85, i32 0, i32 0
  %762 = load i32, ptr %761, align 4
  %763 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %82, i32 %762)
  %764 = getelementptr inbounds %class.GFloat, ptr %81, i32 0, i32 0
  store i32 %763, ptr %764, align 4
  %765 = load ptr, ptr %25, align 8, !tbaa !5
  %766 = getelementptr inbounds %class.GVector3, ptr %765, i32 0, i32 2
  %767 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %768 = getelementptr inbounds [3 x %class.GFloat], ptr %767, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %88, ptr align 4 %768, i64 4, i1 false), !tbaa.struct !9
  %769 = getelementptr inbounds %class.GFloat, ptr %88, i32 0, i32 0
  %770 = load i32, ptr %769, align 4
  %771 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %766, i32 %770)
  %772 = getelementptr inbounds %class.GFloat, ptr %87, i32 0, i32 0
  store i32 %771, ptr %772, align 4
  %773 = getelementptr inbounds %class.GFloat, ptr %87, i32 0, i32 0
  %774 = load i32, ptr %773, align 4
  %775 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %81, i32 %774)
  %776 = getelementptr inbounds %class.GFloat, ptr %80, i32 0, i32 0
  store i32 %775, ptr %776, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %80, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #7
  %777 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %92, ptr align 4 %777, i64 4, i1 false), !tbaa.struct !9
  %778 = getelementptr inbounds %class.GFloat, ptr %92, i32 0, i32 0
  %779 = load i32, ptr %778, align 4
  %780 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %779)
  %781 = getelementptr inbounds %class.GFloat, ptr %91, i32 0, i32 0
  store i32 %780, ptr %781, align 4
  %782 = getelementptr inbounds %class.GFloat, ptr %91, i32 0, i32 0
  %783 = load i32, ptr %782, align 4
  %784 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %783)
  %785 = getelementptr inbounds %class.GFloat, ptr %90, i32 0, i32 0
  store i32 %784, ptr %785, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %93, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %786 = getelementptr inbounds %class.GFloat, ptr %93, i32 0, i32 0
  %787 = load i32, ptr %786, align 4
  %788 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %90, i32 %787)
  %789 = getelementptr inbounds %class.GFloat, ptr %89, i32 0, i32 0
  store i32 %788, ptr %789, align 4
  %790 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %790, ptr align 4 %89, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  %791 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 1
  %792 = call i32 @_ZN5GMath4ZeroEv()
  %793 = getelementptr inbounds %class.GFloat, ptr %94, i32 0, i32 0
  store i32 %792, ptr %793, align 4
  %794 = getelementptr inbounds %class.GFloat, ptr %94, i32 0, i32 0
  %795 = load i32, ptr %794, align 4
  %796 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %791, i32 %795)
  br i1 %796, label %797, label %798

797:                                              ; preds = %672
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

798:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  %799 = load ptr, ptr %28, align 8, !tbaa !5
  %800 = load ptr, ptr %29, align 8, !tbaa !5
  %801 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %799, ptr noundef nonnull align 4 dereferenceable(12) %800)
  %802 = getelementptr inbounds %class.GFloat, ptr %95, i32 0, i32 0
  store i32 %801, ptr %802, align 4
  %803 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %804 = getelementptr inbounds [3 x %class.GFloat], ptr %803, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %804, ptr align 4 %95, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #7
  %805 = load ptr, ptr %28, align 8, !tbaa !5
  %806 = load ptr, ptr %30, align 8, !tbaa !5
  %807 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %805, ptr noundef nonnull align 4 dereferenceable(12) %806)
  %808 = getelementptr inbounds %class.GFloat, ptr %96, i32 0, i32 0
  store i32 %807, ptr %808, align 4
  %809 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %810 = getelementptr inbounds [3 x %class.GFloat], ptr %809, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %810, ptr align 4 %96, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #7
  %811 = load ptr, ptr %28, align 8, !tbaa !5
  %812 = load ptr, ptr %31, align 8, !tbaa !5
  %813 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %811, ptr noundef nonnull align 4 dereferenceable(12) %812)
  %814 = getelementptr inbounds %class.GFloat, ptr %97, i32 0, i32 0
  store i32 %813, ptr %814, align 4
  %815 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %816 = getelementptr inbounds [3 x %class.GFloat], ptr %815, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %816, ptr align 4 %97, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #7
  %817 = load ptr, ptr %28, align 8, !tbaa !5
  %818 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %817, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %819 = getelementptr inbounds %class.GFloat, ptr %98, i32 0, i32 0
  store i32 %818, ptr %819, align 4
  %820 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %820, ptr align 4 %98, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #7
  %821 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %822 = getelementptr inbounds %class.GFloat, ptr %100, i32 0, i32 0
  store i32 %821, ptr %822, align 4
  %823 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %824 = getelementptr inbounds [3 x %class.GFloat], ptr %823, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %102, ptr align 8 %824, i64 4, i1 false), !tbaa.struct !9
  %825 = getelementptr inbounds %class.GFloat, ptr %102, i32 0, i32 0
  %826 = load i32, ptr %825, align 4
  %827 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %826)
  %828 = getelementptr inbounds %class.GFloat, ptr %101, i32 0, i32 0
  store i32 %827, ptr %828, align 4
  %829 = getelementptr inbounds %class.GFloat, ptr %101, i32 0, i32 0
  %830 = load i32, ptr %829, align 4
  %831 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %100, i32 %830)
  %832 = getelementptr inbounds %class.GFloat, ptr %99, i32 0, i32 0
  store i32 %831, ptr %832, align 4
  %833 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %834 = getelementptr inbounds [3 x %class.GFloat], ptr %833, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %834, ptr align 4 %99, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #7
  %835 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %836 = getelementptr inbounds %class.GFloat, ptr %104, i32 0, i32 0
  store i32 %835, ptr %836, align 4
  %837 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %838 = getelementptr inbounds [3 x %class.GFloat], ptr %837, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %106, ptr align 4 %838, i64 4, i1 false), !tbaa.struct !9
  %839 = getelementptr inbounds %class.GFloat, ptr %106, i32 0, i32 0
  %840 = load i32, ptr %839, align 4
  %841 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %840)
  %842 = getelementptr inbounds %class.GFloat, ptr %105, i32 0, i32 0
  store i32 %841, ptr %842, align 4
  %843 = getelementptr inbounds %class.GFloat, ptr %105, i32 0, i32 0
  %844 = load i32, ptr %843, align 4
  %845 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %104, i32 %844)
  %846 = getelementptr inbounds %class.GFloat, ptr %103, i32 0, i32 0
  store i32 %845, ptr %846, align 4
  %847 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %848 = getelementptr inbounds [3 x %class.GFloat], ptr %847, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %848, ptr align 4 %103, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #7
  %849 = call i32 @_ZN5GMath11Inv_1000000Ev()
  %850 = getelementptr inbounds %class.GFloat, ptr %108, i32 0, i32 0
  store i32 %849, ptr %850, align 4
  %851 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %852 = getelementptr inbounds [3 x %class.GFloat], ptr %851, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %110, ptr align 8 %852, i64 4, i1 false), !tbaa.struct !9
  %853 = getelementptr inbounds %class.GFloat, ptr %110, i32 0, i32 0
  %854 = load i32, ptr %853, align 4
  %855 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %854)
  %856 = getelementptr inbounds %class.GFloat, ptr %109, i32 0, i32 0
  store i32 %855, ptr %856, align 4
  %857 = getelementptr inbounds %class.GFloat, ptr %109, i32 0, i32 0
  %858 = load i32, ptr %857, align 4
  %859 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %108, i32 %858)
  %860 = getelementptr inbounds %class.GFloat, ptr %107, i32 0, i32 0
  store i32 %859, ptr %860, align 4
  %861 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %862 = getelementptr inbounds [3 x %class.GFloat], ptr %861, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %862, ptr align 4 %107, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #7
  %863 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %864 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %864, ptr align 4 %863, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #7
  %865 = load ptr, ptr %24, align 8, !tbaa !5
  %866 = getelementptr inbounds %class.GVector3, ptr %865, i32 0, i32 2
  %867 = load ptr, ptr %25, align 8, !tbaa !5
  %868 = getelementptr inbounds %class.GVector3, ptr %867, i32 0, i32 0
  %869 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %870 = getelementptr inbounds [3 x %class.GFloat], ptr %869, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %115, ptr align 8 %870, i64 4, i1 false), !tbaa.struct !9
  %871 = getelementptr inbounds %class.GFloat, ptr %115, i32 0, i32 0
  %872 = load i32, ptr %871, align 4
  %873 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %868, i32 %872)
  %874 = getelementptr inbounds %class.GFloat, ptr %114, i32 0, i32 0
  store i32 %873, ptr %874, align 4
  %875 = getelementptr inbounds %class.GFloat, ptr %114, i32 0, i32 0
  %876 = load i32, ptr %875, align 4
  %877 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %866, i32 %876)
  %878 = getelementptr inbounds %class.GFloat, ptr %113, i32 0, i32 0
  store i32 %877, ptr %878, align 4
  %879 = load ptr, ptr %25, align 8, !tbaa !5
  %880 = getelementptr inbounds %class.GVector3, ptr %879, i32 0, i32 1
  %881 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %882 = getelementptr inbounds [3 x %class.GFloat], ptr %881, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 4 %882, i64 4, i1 false), !tbaa.struct !9
  %883 = getelementptr inbounds %class.GFloat, ptr %117, i32 0, i32 0
  %884 = load i32, ptr %883, align 4
  %885 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %880, i32 %884)
  %886 = getelementptr inbounds %class.GFloat, ptr %116, i32 0, i32 0
  store i32 %885, ptr %886, align 4
  %887 = getelementptr inbounds %class.GFloat, ptr %116, i32 0, i32 0
  %888 = load i32, ptr %887, align 4
  %889 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %113, i32 %888)
  %890 = getelementptr inbounds %class.GFloat, ptr %112, i32 0, i32 0
  store i32 %889, ptr %890, align 4
  %891 = load ptr, ptr %25, align 8, !tbaa !5
  %892 = getelementptr inbounds %class.GVector3, ptr %891, i32 0, i32 2
  %893 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %894 = getelementptr inbounds [3 x %class.GFloat], ptr %893, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %119, ptr align 8 %894, i64 4, i1 false), !tbaa.struct !9
  %895 = getelementptr inbounds %class.GFloat, ptr %119, i32 0, i32 0
  %896 = load i32, ptr %895, align 4
  %897 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %892, i32 %896)
  %898 = getelementptr inbounds %class.GFloat, ptr %118, i32 0, i32 0
  store i32 %897, ptr %898, align 4
  %899 = getelementptr inbounds %class.GFloat, ptr %118, i32 0, i32 0
  %900 = load i32, ptr %899, align 4
  %901 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %112, i32 %900)
  %902 = getelementptr inbounds %class.GFloat, ptr %111, i32 0, i32 0
  store i32 %901, ptr %902, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %111, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #7
  %903 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %123, ptr align 8 %903, i64 4, i1 false), !tbaa.struct !9
  %904 = getelementptr inbounds %class.GFloat, ptr %123, i32 0, i32 0
  %905 = load i32, ptr %904, align 4
  %906 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %905)
  %907 = getelementptr inbounds %class.GFloat, ptr %122, i32 0, i32 0
  store i32 %906, ptr %907, align 4
  %908 = getelementptr inbounds %class.GFloat, ptr %122, i32 0, i32 0
  %909 = load i32, ptr %908, align 4
  %910 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %909)
  %911 = getelementptr inbounds %class.GFloat, ptr %121, i32 0, i32 0
  store i32 %910, ptr %911, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %912 = getelementptr inbounds %class.GFloat, ptr %124, i32 0, i32 0
  %913 = load i32, ptr %912, align 4
  %914 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %121, i32 %913)
  %915 = getelementptr inbounds %class.GFloat, ptr %120, i32 0, i32 0
  store i32 %914, ptr %915, align 4
  %916 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %916, ptr align 4 %120, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #7
  %917 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 2
  %918 = call i32 @_ZN5GMath4ZeroEv()
  %919 = getelementptr inbounds %class.GFloat, ptr %125, i32 0, i32 0
  store i32 %918, ptr %919, align 4
  %920 = getelementptr inbounds %class.GFloat, ptr %125, i32 0, i32 0
  %921 = load i32, ptr %920, align 4
  %922 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %917, i32 %921)
  br i1 %922, label %923, label %924

923:                                              ; preds = %798
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

924:                                              ; preds = %798
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #7
  %925 = load ptr, ptr %29, align 8, !tbaa !5
  %926 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %925, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %927 = getelementptr inbounds %class.GFloat, ptr %126, i32 0, i32 0
  store i32 %926, ptr %927, align 4
  %928 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %928, ptr align 4 %126, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #7
  %929 = load ptr, ptr %25, align 8, !tbaa !5
  %930 = getelementptr inbounds %class.GVector3, ptr %929, i32 0, i32 0
  %931 = load ptr, ptr %24, align 8, !tbaa !5
  %932 = getelementptr inbounds %class.GVector3, ptr %931, i32 0, i32 0
  %933 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %934 = getelementptr inbounds [3 x %class.GFloat], ptr %933, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 16 %934, i64 4, i1 false), !tbaa.struct !9
  %935 = getelementptr inbounds %class.GFloat, ptr %131, i32 0, i32 0
  %936 = load i32, ptr %935, align 4
  %937 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %932, i32 %936)
  %938 = getelementptr inbounds %class.GFloat, ptr %130, i32 0, i32 0
  store i32 %937, ptr %938, align 4
  %939 = getelementptr inbounds %class.GFloat, ptr %130, i32 0, i32 0
  %940 = load i32, ptr %939, align 4
  %941 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %930, i32 %940)
  %942 = getelementptr inbounds %class.GFloat, ptr %129, i32 0, i32 0
  store i32 %941, ptr %942, align 4
  %943 = load ptr, ptr %24, align 8, !tbaa !5
  %944 = getelementptr inbounds %class.GVector3, ptr %943, i32 0, i32 1
  %945 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %946 = getelementptr inbounds [3 x %class.GFloat], ptr %945, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %946, i64 4, i1 false), !tbaa.struct !9
  %947 = getelementptr inbounds %class.GFloat, ptr %133, i32 0, i32 0
  %948 = load i32, ptr %947, align 4
  %949 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %944, i32 %948)
  %950 = getelementptr inbounds %class.GFloat, ptr %132, i32 0, i32 0
  store i32 %949, ptr %950, align 4
  %951 = getelementptr inbounds %class.GFloat, ptr %132, i32 0, i32 0
  %952 = load i32, ptr %951, align 4
  %953 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %129, i32 %952)
  %954 = getelementptr inbounds %class.GFloat, ptr %128, i32 0, i32 0
  store i32 %953, ptr %954, align 4
  %955 = load ptr, ptr %24, align 8, !tbaa !5
  %956 = getelementptr inbounds %class.GVector3, ptr %955, i32 0, i32 2
  %957 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %958 = getelementptr inbounds [3 x %class.GFloat], ptr %957, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %135, ptr align 8 %958, i64 4, i1 false), !tbaa.struct !9
  %959 = getelementptr inbounds %class.GFloat, ptr %135, i32 0, i32 0
  %960 = load i32, ptr %959, align 4
  %961 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %956, i32 %960)
  %962 = getelementptr inbounds %class.GFloat, ptr %134, i32 0, i32 0
  store i32 %961, ptr %962, align 4
  %963 = getelementptr inbounds %class.GFloat, ptr %134, i32 0, i32 0
  %964 = load i32, ptr %963, align 4
  %965 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %128, i32 %964)
  %966 = getelementptr inbounds %class.GFloat, ptr %127, i32 0, i32 0
  store i32 %965, ptr %966, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %127, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #7
  %967 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %139, ptr align 4 %967, i64 4, i1 false), !tbaa.struct !9
  %968 = getelementptr inbounds %class.GFloat, ptr %139, i32 0, i32 0
  %969 = load i32, ptr %968, align 4
  %970 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %969)
  %971 = getelementptr inbounds %class.GFloat, ptr %138, i32 0, i32 0
  store i32 %970, ptr %971, align 4
  %972 = getelementptr inbounds %class.GFloat, ptr %138, i32 0, i32 0
  %973 = load i32, ptr %972, align 4
  %974 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %973)
  %975 = getelementptr inbounds %class.GFloat, ptr %137, i32 0, i32 0
  store i32 %974, ptr %975, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %140, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %976 = getelementptr inbounds %class.GFloat, ptr %140, i32 0, i32 0
  %977 = load i32, ptr %976, align 4
  %978 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %137, i32 %977)
  %979 = getelementptr inbounds %class.GFloat, ptr %136, i32 0, i32 0
  store i32 %978, ptr %979, align 4
  %980 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %980, ptr align 4 %136, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #7
  %981 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 3
  %982 = call i32 @_ZN5GMath4ZeroEv()
  %983 = getelementptr inbounds %class.GFloat, ptr %141, i32 0, i32 0
  store i32 %982, ptr %983, align 4
  %984 = getelementptr inbounds %class.GFloat, ptr %141, i32 0, i32 0
  %985 = load i32, ptr %984, align 4
  %986 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %981, i32 %985)
  br i1 %986, label %987, label %988

987:                                              ; preds = %924
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

988:                                              ; preds = %924
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #7
  %989 = load ptr, ptr %30, align 8, !tbaa !5
  %990 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %989, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %991 = getelementptr inbounds %class.GFloat, ptr %142, i32 0, i32 0
  store i32 %990, ptr %991, align 4
  %992 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %992, ptr align 4 %142, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #7
  %993 = load ptr, ptr %25, align 8, !tbaa !5
  %994 = getelementptr inbounds %class.GVector3, ptr %993, i32 0, i32 1
  %995 = load ptr, ptr %24, align 8, !tbaa !5
  %996 = getelementptr inbounds %class.GVector3, ptr %995, i32 0, i32 0
  %997 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %998 = getelementptr inbounds [3 x %class.GFloat], ptr %997, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %147, ptr align 4 %998, i64 4, i1 false), !tbaa.struct !9
  %999 = getelementptr inbounds %class.GFloat, ptr %147, i32 0, i32 0
  %1000 = load i32, ptr %999, align 4
  %1001 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %996, i32 %1000)
  %1002 = getelementptr inbounds %class.GFloat, ptr %146, i32 0, i32 0
  store i32 %1001, ptr %1002, align 4
  %1003 = getelementptr inbounds %class.GFloat, ptr %146, i32 0, i32 0
  %1004 = load i32, ptr %1003, align 4
  %1005 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %994, i32 %1004)
  %1006 = getelementptr inbounds %class.GFloat, ptr %145, i32 0, i32 0
  store i32 %1005, ptr %1006, align 4
  %1007 = load ptr, ptr %24, align 8, !tbaa !5
  %1008 = getelementptr inbounds %class.GVector3, ptr %1007, i32 0, i32 1
  %1009 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1010 = getelementptr inbounds [3 x %class.GFloat], ptr %1009, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %149, ptr align 4 %1010, i64 4, i1 false), !tbaa.struct !9
  %1011 = getelementptr inbounds %class.GFloat, ptr %149, i32 0, i32 0
  %1012 = load i32, ptr %1011, align 4
  %1013 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1008, i32 %1012)
  %1014 = getelementptr inbounds %class.GFloat, ptr %148, i32 0, i32 0
  store i32 %1013, ptr %1014, align 4
  %1015 = getelementptr inbounds %class.GFloat, ptr %148, i32 0, i32 0
  %1016 = load i32, ptr %1015, align 4
  %1017 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %145, i32 %1016)
  %1018 = getelementptr inbounds %class.GFloat, ptr %144, i32 0, i32 0
  store i32 %1017, ptr %1018, align 4
  %1019 = load ptr, ptr %24, align 8, !tbaa !5
  %1020 = getelementptr inbounds %class.GVector3, ptr %1019, i32 0, i32 2
  %1021 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1022 = getelementptr inbounds [3 x %class.GFloat], ptr %1021, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %151, ptr align 4 %1022, i64 4, i1 false), !tbaa.struct !9
  %1023 = getelementptr inbounds %class.GFloat, ptr %151, i32 0, i32 0
  %1024 = load i32, ptr %1023, align 4
  %1025 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1020, i32 %1024)
  %1026 = getelementptr inbounds %class.GFloat, ptr %150, i32 0, i32 0
  store i32 %1025, ptr %1026, align 4
  %1027 = getelementptr inbounds %class.GFloat, ptr %150, i32 0, i32 0
  %1028 = load i32, ptr %1027, align 4
  %1029 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %144, i32 %1028)
  %1030 = getelementptr inbounds %class.GFloat, ptr %143, i32 0, i32 0
  store i32 %1029, ptr %1030, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %143, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #7
  %1031 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %155, ptr align 16 %1031, i64 4, i1 false), !tbaa.struct !9
  %1032 = getelementptr inbounds %class.GFloat, ptr %155, i32 0, i32 0
  %1033 = load i32, ptr %1032, align 4
  %1034 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1033)
  %1035 = getelementptr inbounds %class.GFloat, ptr %154, i32 0, i32 0
  store i32 %1034, ptr %1035, align 4
  %1036 = getelementptr inbounds %class.GFloat, ptr %154, i32 0, i32 0
  %1037 = load i32, ptr %1036, align 4
  %1038 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %1037)
  %1039 = getelementptr inbounds %class.GFloat, ptr %153, i32 0, i32 0
  store i32 %1038, ptr %1039, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %156, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %1040 = getelementptr inbounds %class.GFloat, ptr %156, i32 0, i32 0
  %1041 = load i32, ptr %1040, align 4
  %1042 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %153, i32 %1041)
  %1043 = getelementptr inbounds %class.GFloat, ptr %152, i32 0, i32 0
  store i32 %1042, ptr %1043, align 4
  %1044 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1044, ptr align 4 %152, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #7
  %1045 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 4
  %1046 = call i32 @_ZN5GMath4ZeroEv()
  %1047 = getelementptr inbounds %class.GFloat, ptr %157, i32 0, i32 0
  store i32 %1046, ptr %1047, align 4
  %1048 = getelementptr inbounds %class.GFloat, ptr %157, i32 0, i32 0
  %1049 = load i32, ptr %1048, align 4
  %1050 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1045, i32 %1049)
  br i1 %1050, label %1051, label %1052

1051:                                             ; preds = %988
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

1052:                                             ; preds = %988
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #7
  %1053 = load ptr, ptr %31, align 8, !tbaa !5
  %1054 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %1053, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %1055 = getelementptr inbounds %class.GFloat, ptr %158, i32 0, i32 0
  store i32 %1054, ptr %1055, align 4
  %1056 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1056, ptr align 4 %158, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #7
  %1057 = load ptr, ptr %25, align 8, !tbaa !5
  %1058 = getelementptr inbounds %class.GVector3, ptr %1057, i32 0, i32 2
  %1059 = load ptr, ptr %24, align 8, !tbaa !5
  %1060 = getelementptr inbounds %class.GVector3, ptr %1059, i32 0, i32 0
  %1061 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1062 = getelementptr inbounds [3 x %class.GFloat], ptr %1061, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %163, ptr align 8 %1062, i64 4, i1 false), !tbaa.struct !9
  %1063 = getelementptr inbounds %class.GFloat, ptr %163, i32 0, i32 0
  %1064 = load i32, ptr %1063, align 4
  %1065 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1060, i32 %1064)
  %1066 = getelementptr inbounds %class.GFloat, ptr %162, i32 0, i32 0
  store i32 %1065, ptr %1066, align 4
  %1067 = getelementptr inbounds %class.GFloat, ptr %162, i32 0, i32 0
  %1068 = load i32, ptr %1067, align 4
  %1069 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %1058, i32 %1068)
  %1070 = getelementptr inbounds %class.GFloat, ptr %161, i32 0, i32 0
  store i32 %1069, ptr %1070, align 4
  %1071 = load ptr, ptr %24, align 8, !tbaa !5
  %1072 = getelementptr inbounds %class.GVector3, ptr %1071, i32 0, i32 1
  %1073 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1074 = getelementptr inbounds [3 x %class.GFloat], ptr %1073, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %165, ptr align 4 %1074, i64 4, i1 false), !tbaa.struct !9
  %1075 = getelementptr inbounds %class.GFloat, ptr %165, i32 0, i32 0
  %1076 = load i32, ptr %1075, align 4
  %1077 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1072, i32 %1076)
  %1078 = getelementptr inbounds %class.GFloat, ptr %164, i32 0, i32 0
  store i32 %1077, ptr %1078, align 4
  %1079 = getelementptr inbounds %class.GFloat, ptr %164, i32 0, i32 0
  %1080 = load i32, ptr %1079, align 4
  %1081 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %161, i32 %1080)
  %1082 = getelementptr inbounds %class.GFloat, ptr %160, i32 0, i32 0
  store i32 %1081, ptr %1082, align 4
  %1083 = load ptr, ptr %24, align 8, !tbaa !5
  %1084 = getelementptr inbounds %class.GVector3, ptr %1083, i32 0, i32 2
  %1085 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1086 = getelementptr inbounds [3 x %class.GFloat], ptr %1085, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %167, ptr align 8 %1086, i64 4, i1 false), !tbaa.struct !9
  %1087 = getelementptr inbounds %class.GFloat, ptr %167, i32 0, i32 0
  %1088 = load i32, ptr %1087, align 4
  %1089 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1084, i32 %1088)
  %1090 = getelementptr inbounds %class.GFloat, ptr %166, i32 0, i32 0
  store i32 %1089, ptr %1090, align 4
  %1091 = getelementptr inbounds %class.GFloat, ptr %166, i32 0, i32 0
  %1092 = load i32, ptr %1091, align 4
  %1093 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %160, i32 %1092)
  %1094 = getelementptr inbounds %class.GFloat, ptr %159, i32 0, i32 0
  store i32 %1093, ptr %1094, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %159, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %169) #7
  %1095 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %171, ptr align 4 %1095, i64 4, i1 false), !tbaa.struct !9
  %1096 = getelementptr inbounds %class.GFloat, ptr %171, i32 0, i32 0
  %1097 = load i32, ptr %1096, align 4
  %1098 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1097)
  %1099 = getelementptr inbounds %class.GFloat, ptr %170, i32 0, i32 0
  store i32 %1098, ptr %1099, align 4
  %1100 = getelementptr inbounds %class.GFloat, ptr %170, i32 0, i32 0
  %1101 = load i32, ptr %1100, align 4
  %1102 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %1101)
  %1103 = getelementptr inbounds %class.GFloat, ptr %169, i32 0, i32 0
  store i32 %1102, ptr %1103, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %172, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %1104 = getelementptr inbounds %class.GFloat, ptr %172, i32 0, i32 0
  %1105 = load i32, ptr %1104, align 4
  %1106 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %169, i32 %1105)
  %1107 = getelementptr inbounds %class.GFloat, ptr %168, i32 0, i32 0
  store i32 %1106, ptr %1107, align 4
  %1108 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1108, ptr align 4 %168, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %169) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #7
  %1109 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 5
  %1110 = call i32 @_ZN5GMath4ZeroEv()
  %1111 = getelementptr inbounds %class.GFloat, ptr %173, i32 0, i32 0
  store i32 %1110, ptr %1111, align 4
  %1112 = getelementptr inbounds %class.GFloat, ptr %173, i32 0, i32 0
  %1113 = load i32, ptr %1112, align 4
  %1114 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1109, i32 %1113)
  br i1 %1114, label %1115, label %1116

1115:                                             ; preds = %1052
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2267

1116:                                             ; preds = %1052
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #7
  %1117 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1118 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1119 = getelementptr inbounds [3 x %class.GFloat], ptr %1118, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %176, ptr align 4 %1119, i64 4, i1 false), !tbaa.struct !9
  %1120 = getelementptr inbounds %class.GFloat, ptr %176, i32 0, i32 0
  %1121 = load i32, ptr %1120, align 4
  %1122 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1117, i32 %1121)
  %1123 = getelementptr inbounds %class.GFloat, ptr %175, i32 0, i32 0
  store i32 %1122, ptr %1123, align 4
  %1124 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1125 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1126 = getelementptr inbounds [3 x %class.GFloat], ptr %1125, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %178, ptr align 8 %1126, i64 4, i1 false), !tbaa.struct !9
  %1127 = getelementptr inbounds %class.GFloat, ptr %178, i32 0, i32 0
  %1128 = load i32, ptr %1127, align 4
  %1129 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1124, i32 %1128)
  %1130 = getelementptr inbounds %class.GFloat, ptr %177, i32 0, i32 0
  store i32 %1129, ptr %1130, align 4
  %1131 = getelementptr inbounds %class.GFloat, ptr %177, i32 0, i32 0
  %1132 = load i32, ptr %1131, align 4
  %1133 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %1132)
  %1134 = getelementptr inbounds %class.GFloat, ptr %174, i32 0, i32 0
  store i32 %1133, ptr %1134, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #7
  %1135 = load ptr, ptr %24, align 8, !tbaa !5
  %1136 = getelementptr inbounds %class.GVector3, ptr %1135, i32 0, i32 1
  %1137 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1138 = getelementptr inbounds [3 x %class.GFloat], ptr %1137, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %184, ptr align 8 %1138, i64 4, i1 false), !tbaa.struct !9
  %1139 = getelementptr inbounds %class.GFloat, ptr %184, i32 0, i32 0
  %1140 = load i32, ptr %1139, align 4
  %1141 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1136, i32 %1140)
  %1142 = getelementptr inbounds %class.GFloat, ptr %183, i32 0, i32 0
  store i32 %1141, ptr %1142, align 4
  %1143 = getelementptr inbounds %class.GFloat, ptr %183, i32 0, i32 0
  %1144 = load i32, ptr %1143, align 4
  %1145 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1144)
  %1146 = getelementptr inbounds %class.GFloat, ptr %182, i32 0, i32 0
  store i32 %1145, ptr %1146, align 4
  %1147 = load ptr, ptr %24, align 8, !tbaa !5
  %1148 = getelementptr inbounds %class.GVector3, ptr %1147, i32 0, i32 2
  %1149 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1150 = getelementptr inbounds [3 x %class.GFloat], ptr %1149, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %186, ptr align 4 %1150, i64 4, i1 false), !tbaa.struct !9
  %1151 = getelementptr inbounds %class.GFloat, ptr %186, i32 0, i32 0
  %1152 = load i32, ptr %1151, align 4
  %1153 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1148, i32 %1152)
  %1154 = getelementptr inbounds %class.GFloat, ptr %185, i32 0, i32 0
  store i32 %1153, ptr %1154, align 4
  %1155 = getelementptr inbounds %class.GFloat, ptr %185, i32 0, i32 0
  %1156 = load i32, ptr %1155, align 4
  %1157 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %182, i32 %1156)
  %1158 = getelementptr inbounds %class.GFloat, ptr %181, i32 0, i32 0
  store i32 %1157, ptr %1158, align 4
  %1159 = load ptr, ptr %25, align 8, !tbaa !5
  %1160 = getelementptr inbounds %class.GVector3, ptr %1159, i32 0, i32 1
  %1161 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1162 = getelementptr inbounds [3 x %class.GFloat], ptr %1161, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %188, ptr align 8 %1162, i64 4, i1 false), !tbaa.struct !9
  %1163 = getelementptr inbounds %class.GFloat, ptr %188, i32 0, i32 0
  %1164 = load i32, ptr %1163, align 4
  %1165 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1160, i32 %1164)
  %1166 = getelementptr inbounds %class.GFloat, ptr %187, i32 0, i32 0
  store i32 %1165, ptr %1166, align 4
  %1167 = getelementptr inbounds %class.GFloat, ptr %187, i32 0, i32 0
  %1168 = load i32, ptr %1167, align 4
  %1169 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %181, i32 %1168)
  %1170 = getelementptr inbounds %class.GFloat, ptr %180, i32 0, i32 0
  store i32 %1169, ptr %1170, align 4
  %1171 = load ptr, ptr %25, align 8, !tbaa !5
  %1172 = getelementptr inbounds %class.GVector3, ptr %1171, i32 0, i32 2
  %1173 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1174 = getelementptr inbounds [3 x %class.GFloat], ptr %1173, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %190, ptr align 4 %1174, i64 4, i1 false), !tbaa.struct !9
  %1175 = getelementptr inbounds %class.GFloat, ptr %190, i32 0, i32 0
  %1176 = load i32, ptr %1175, align 4
  %1177 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1172, i32 %1176)
  %1178 = getelementptr inbounds %class.GFloat, ptr %189, i32 0, i32 0
  store i32 %1177, ptr %1178, align 4
  %1179 = getelementptr inbounds %class.GFloat, ptr %189, i32 0, i32 0
  %1180 = load i32, ptr %1179, align 4
  %1181 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %180, i32 %1180)
  %1182 = getelementptr inbounds %class.GFloat, ptr %179, i32 0, i32 0
  store i32 %1181, ptr %1182, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %179, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %192, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1183 = getelementptr inbounds %class.GFloat, ptr %192, i32 0, i32 0
  %1184 = load i32, ptr %1183, align 4
  %1185 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1184)
  %1186 = getelementptr inbounds %class.GFloat, ptr %191, i32 0, i32 0
  store i32 %1185, ptr %1186, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %193, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1187 = getelementptr inbounds %class.GFloat, ptr %193, i32 0, i32 0
  %1188 = load i32, ptr %1187, align 4
  %1189 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %191, i32 %1188)
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  br i1 %1189, label %1190, label %1191

1190:                                             ; preds = %1116
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1191:                                             ; preds = %1116
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #7
  %1192 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1193 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1194 = getelementptr inbounds [3 x %class.GFloat], ptr %1193, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %196, ptr align 4 %1194, i64 4, i1 false), !tbaa.struct !9
  %1195 = getelementptr inbounds %class.GFloat, ptr %196, i32 0, i32 0
  %1196 = load i32, ptr %1195, align 4
  %1197 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1192, i32 %1196)
  %1198 = getelementptr inbounds %class.GFloat, ptr %195, i32 0, i32 0
  store i32 %1197, ptr %1198, align 4
  %1199 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1200 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1201 = getelementptr inbounds [3 x %class.GFloat], ptr %1200, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %198, ptr align 4 %1201, i64 4, i1 false), !tbaa.struct !9
  %1202 = getelementptr inbounds %class.GFloat, ptr %198, i32 0, i32 0
  %1203 = load i32, ptr %1202, align 4
  %1204 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1199, i32 %1203)
  %1205 = getelementptr inbounds %class.GFloat, ptr %197, i32 0, i32 0
  store i32 %1204, ptr %1205, align 4
  %1206 = getelementptr inbounds %class.GFloat, ptr %197, i32 0, i32 0
  %1207 = load i32, ptr %1206, align 4
  %1208 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %195, i32 %1207)
  %1209 = getelementptr inbounds %class.GFloat, ptr %194, i32 0, i32 0
  store i32 %1208, ptr %1209, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %194, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %199) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %200) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %201) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #7
  %1210 = load ptr, ptr %24, align 8, !tbaa !5
  %1211 = getelementptr inbounds %class.GVector3, ptr %1210, i32 0, i32 1
  %1212 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1213 = getelementptr inbounds [3 x %class.GFloat], ptr %1212, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %204, ptr align 4 %1213, i64 4, i1 false), !tbaa.struct !9
  %1214 = getelementptr inbounds %class.GFloat, ptr %204, i32 0, i32 0
  %1215 = load i32, ptr %1214, align 4
  %1216 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1211, i32 %1215)
  %1217 = getelementptr inbounds %class.GFloat, ptr %203, i32 0, i32 0
  store i32 %1216, ptr %1217, align 4
  %1218 = getelementptr inbounds %class.GFloat, ptr %203, i32 0, i32 0
  %1219 = load i32, ptr %1218, align 4
  %1220 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1219)
  %1221 = getelementptr inbounds %class.GFloat, ptr %202, i32 0, i32 0
  store i32 %1220, ptr %1221, align 4
  %1222 = load ptr, ptr %24, align 8, !tbaa !5
  %1223 = getelementptr inbounds %class.GVector3, ptr %1222, i32 0, i32 2
  %1224 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1225 = getelementptr inbounds [3 x %class.GFloat], ptr %1224, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %206, ptr align 4 %1225, i64 4, i1 false), !tbaa.struct !9
  %1226 = getelementptr inbounds %class.GFloat, ptr %206, i32 0, i32 0
  %1227 = load i32, ptr %1226, align 4
  %1228 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1223, i32 %1227)
  %1229 = getelementptr inbounds %class.GFloat, ptr %205, i32 0, i32 0
  store i32 %1228, ptr %1229, align 4
  %1230 = getelementptr inbounds %class.GFloat, ptr %205, i32 0, i32 0
  %1231 = load i32, ptr %1230, align 4
  %1232 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %202, i32 %1231)
  %1233 = getelementptr inbounds %class.GFloat, ptr %201, i32 0, i32 0
  store i32 %1232, ptr %1233, align 4
  %1234 = load ptr, ptr %25, align 8, !tbaa !5
  %1235 = getelementptr inbounds %class.GVector3, ptr %1234, i32 0, i32 0
  %1236 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1237 = getelementptr inbounds [3 x %class.GFloat], ptr %1236, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %208, ptr align 8 %1237, i64 4, i1 false), !tbaa.struct !9
  %1238 = getelementptr inbounds %class.GFloat, ptr %208, i32 0, i32 0
  %1239 = load i32, ptr %1238, align 4
  %1240 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1235, i32 %1239)
  %1241 = getelementptr inbounds %class.GFloat, ptr %207, i32 0, i32 0
  store i32 %1240, ptr %1241, align 4
  %1242 = getelementptr inbounds %class.GFloat, ptr %207, i32 0, i32 0
  %1243 = load i32, ptr %1242, align 4
  %1244 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %201, i32 %1243)
  %1245 = getelementptr inbounds %class.GFloat, ptr %200, i32 0, i32 0
  store i32 %1244, ptr %1245, align 4
  %1246 = load ptr, ptr %25, align 8, !tbaa !5
  %1247 = getelementptr inbounds %class.GVector3, ptr %1246, i32 0, i32 2
  %1248 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1249 = getelementptr inbounds [3 x %class.GFloat], ptr %1248, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %210, ptr align 16 %1249, i64 4, i1 false), !tbaa.struct !9
  %1250 = getelementptr inbounds %class.GFloat, ptr %210, i32 0, i32 0
  %1251 = load i32, ptr %1250, align 4
  %1252 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1247, i32 %1251)
  %1253 = getelementptr inbounds %class.GFloat, ptr %209, i32 0, i32 0
  store i32 %1252, ptr %1253, align 4
  %1254 = getelementptr inbounds %class.GFloat, ptr %209, i32 0, i32 0
  %1255 = load i32, ptr %1254, align 4
  %1256 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %200, i32 %1255)
  %1257 = getelementptr inbounds %class.GFloat, ptr %199, i32 0, i32 0
  store i32 %1256, ptr %1257, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %199, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %201) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %199) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %211) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %212, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1258 = getelementptr inbounds %class.GFloat, ptr %212, i32 0, i32 0
  %1259 = load i32, ptr %1258, align 4
  %1260 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1259)
  %1261 = getelementptr inbounds %class.GFloat, ptr %211, i32 0, i32 0
  store i32 %1260, ptr %1261, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %213, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1262 = getelementptr inbounds %class.GFloat, ptr %213, i32 0, i32 0
  %1263 = load i32, ptr %1262, align 4
  %1264 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %211, i32 %1263)
  call void @llvm.lifetime.end.p0(i64 4, ptr %211) #7
  br i1 %1264, label %1265, label %1266

1265:                                             ; preds = %1191
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1266:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 4, ptr %214) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %215) #7
  %1267 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1268 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1269 = getelementptr inbounds [3 x %class.GFloat], ptr %1268, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %216, ptr align 4 %1269, i64 4, i1 false), !tbaa.struct !9
  %1270 = getelementptr inbounds %class.GFloat, ptr %216, i32 0, i32 0
  %1271 = load i32, ptr %1270, align 4
  %1272 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1267, i32 %1271)
  %1273 = getelementptr inbounds %class.GFloat, ptr %215, i32 0, i32 0
  store i32 %1272, ptr %1273, align 4
  %1274 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1275 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1276 = getelementptr inbounds [3 x %class.GFloat], ptr %1275, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %218, ptr align 8 %1276, i64 4, i1 false), !tbaa.struct !9
  %1277 = getelementptr inbounds %class.GFloat, ptr %218, i32 0, i32 0
  %1278 = load i32, ptr %1277, align 4
  %1279 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1274, i32 %1278)
  %1280 = getelementptr inbounds %class.GFloat, ptr %217, i32 0, i32 0
  store i32 %1279, ptr %1280, align 4
  %1281 = getelementptr inbounds %class.GFloat, ptr %217, i32 0, i32 0
  %1282 = load i32, ptr %1281, align 4
  %1283 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %215, i32 %1282)
  %1284 = getelementptr inbounds %class.GFloat, ptr %214, i32 0, i32 0
  store i32 %1283, ptr %1284, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %214, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %215) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %214) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %219) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %220) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %221) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %222) #7
  %1285 = load ptr, ptr %24, align 8, !tbaa !5
  %1286 = getelementptr inbounds %class.GVector3, ptr %1285, i32 0, i32 1
  %1287 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1288 = getelementptr inbounds [3 x %class.GFloat], ptr %1287, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %224, ptr align 8 %1288, i64 4, i1 false), !tbaa.struct !9
  %1289 = getelementptr inbounds %class.GFloat, ptr %224, i32 0, i32 0
  %1290 = load i32, ptr %1289, align 4
  %1291 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1286, i32 %1290)
  %1292 = getelementptr inbounds %class.GFloat, ptr %223, i32 0, i32 0
  store i32 %1291, ptr %1292, align 4
  %1293 = getelementptr inbounds %class.GFloat, ptr %223, i32 0, i32 0
  %1294 = load i32, ptr %1293, align 4
  %1295 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1294)
  %1296 = getelementptr inbounds %class.GFloat, ptr %222, i32 0, i32 0
  store i32 %1295, ptr %1296, align 4
  %1297 = load ptr, ptr %24, align 8, !tbaa !5
  %1298 = getelementptr inbounds %class.GVector3, ptr %1297, i32 0, i32 2
  %1299 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1300 = getelementptr inbounds [3 x %class.GFloat], ptr %1299, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %226, ptr align 4 %1300, i64 4, i1 false), !tbaa.struct !9
  %1301 = getelementptr inbounds %class.GFloat, ptr %226, i32 0, i32 0
  %1302 = load i32, ptr %1301, align 4
  %1303 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1298, i32 %1302)
  %1304 = getelementptr inbounds %class.GFloat, ptr %225, i32 0, i32 0
  store i32 %1303, ptr %1304, align 4
  %1305 = getelementptr inbounds %class.GFloat, ptr %225, i32 0, i32 0
  %1306 = load i32, ptr %1305, align 4
  %1307 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %222, i32 %1306)
  %1308 = getelementptr inbounds %class.GFloat, ptr %221, i32 0, i32 0
  store i32 %1307, ptr %1308, align 4
  %1309 = load ptr, ptr %25, align 8, !tbaa !5
  %1310 = getelementptr inbounds %class.GVector3, ptr %1309, i32 0, i32 0
  %1311 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1312 = getelementptr inbounds [3 x %class.GFloat], ptr %1311, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %228, ptr align 4 %1312, i64 4, i1 false), !tbaa.struct !9
  %1313 = getelementptr inbounds %class.GFloat, ptr %228, i32 0, i32 0
  %1314 = load i32, ptr %1313, align 4
  %1315 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1310, i32 %1314)
  %1316 = getelementptr inbounds %class.GFloat, ptr %227, i32 0, i32 0
  store i32 %1315, ptr %1316, align 4
  %1317 = getelementptr inbounds %class.GFloat, ptr %227, i32 0, i32 0
  %1318 = load i32, ptr %1317, align 4
  %1319 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %221, i32 %1318)
  %1320 = getelementptr inbounds %class.GFloat, ptr %220, i32 0, i32 0
  store i32 %1319, ptr %1320, align 4
  %1321 = load ptr, ptr %25, align 8, !tbaa !5
  %1322 = getelementptr inbounds %class.GVector3, ptr %1321, i32 0, i32 1
  %1323 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1324 = getelementptr inbounds [3 x %class.GFloat], ptr %1323, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %230, ptr align 16 %1324, i64 4, i1 false), !tbaa.struct !9
  %1325 = getelementptr inbounds %class.GFloat, ptr %230, i32 0, i32 0
  %1326 = load i32, ptr %1325, align 4
  %1327 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1322, i32 %1326)
  %1328 = getelementptr inbounds %class.GFloat, ptr %229, i32 0, i32 0
  store i32 %1327, ptr %1328, align 4
  %1329 = getelementptr inbounds %class.GFloat, ptr %229, i32 0, i32 0
  %1330 = load i32, ptr %1329, align 4
  %1331 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %220, i32 %1330)
  %1332 = getelementptr inbounds %class.GFloat, ptr %219, i32 0, i32 0
  store i32 %1331, ptr %1332, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %219, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %222) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %221) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %220) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %219) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %231) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %232, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1333 = getelementptr inbounds %class.GFloat, ptr %232, i32 0, i32 0
  %1334 = load i32, ptr %1333, align 4
  %1335 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1334)
  %1336 = getelementptr inbounds %class.GFloat, ptr %231, i32 0, i32 0
  store i32 %1335, ptr %1336, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %233, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1337 = getelementptr inbounds %class.GFloat, ptr %233, i32 0, i32 0
  %1338 = load i32, ptr %1337, align 4
  %1339 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %231, i32 %1338)
  call void @llvm.lifetime.end.p0(i64 4, ptr %231) #7
  br i1 %1339, label %1340, label %1341

1340:                                             ; preds = %1266
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1341:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 4, ptr %234) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %235) #7
  %1342 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1343 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1344 = getelementptr inbounds [3 x %class.GFloat], ptr %1343, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %236, ptr align 8 %1344, i64 4, i1 false), !tbaa.struct !9
  %1345 = getelementptr inbounds %class.GFloat, ptr %236, i32 0, i32 0
  %1346 = load i32, ptr %1345, align 4
  %1347 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1342, i32 %1346)
  %1348 = getelementptr inbounds %class.GFloat, ptr %235, i32 0, i32 0
  store i32 %1347, ptr %1348, align 4
  %1349 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1350 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1351 = getelementptr inbounds [3 x %class.GFloat], ptr %1350, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %238, ptr align 16 %1351, i64 4, i1 false), !tbaa.struct !9
  %1352 = getelementptr inbounds %class.GFloat, ptr %238, i32 0, i32 0
  %1353 = load i32, ptr %1352, align 4
  %1354 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1349, i32 %1353)
  %1355 = getelementptr inbounds %class.GFloat, ptr %237, i32 0, i32 0
  store i32 %1354, ptr %1355, align 4
  %1356 = getelementptr inbounds %class.GFloat, ptr %237, i32 0, i32 0
  %1357 = load i32, ptr %1356, align 4
  %1358 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %235, i32 %1357)
  %1359 = getelementptr inbounds %class.GFloat, ptr %234, i32 0, i32 0
  store i32 %1358, ptr %1359, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %234, i64 4, i1 false), !tbaa.struct !9
  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.start.p0(i64 4, ptr %239) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %240) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %241) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %242) #7
  %1360 = load ptr, ptr %24, align 8, !tbaa !5
  %1361 = getelementptr inbounds %class.GVector3, ptr %1360, i32 0, i32 0
  %1362 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1363 = getelementptr inbounds [3 x %class.GFloat], ptr %1362, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %244, ptr align 8 %1363, i64 4, i1 false), !tbaa.struct !9
  %1364 = getelementptr inbounds %class.GFloat, ptr %244, i32 0, i32 0
  %1365 = load i32, ptr %1364, align 4
  %1366 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1361, i32 %1365)
  %1367 = getelementptr inbounds %class.GFloat, ptr %243, i32 0, i32 0
  store i32 %1366, ptr %1367, align 4
  %1368 = getelementptr inbounds %class.GFloat, ptr %243, i32 0, i32 0
  %1369 = load i32, ptr %1368, align 4
  %1370 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1369)
  %1371 = getelementptr inbounds %class.GFloat, ptr %242, i32 0, i32 0
  store i32 %1370, ptr %1371, align 4
  %1372 = load ptr, ptr %24, align 8, !tbaa !5
  %1373 = getelementptr inbounds %class.GVector3, ptr %1372, i32 0, i32 2
  %1374 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1375 = getelementptr inbounds [3 x %class.GFloat], ptr %1374, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %246, ptr align 16 %1375, i64 4, i1 false), !tbaa.struct !9
  %1376 = getelementptr inbounds %class.GFloat, ptr %246, i32 0, i32 0
  %1377 = load i32, ptr %1376, align 4
  %1378 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1373, i32 %1377)
  %1379 = getelementptr inbounds %class.GFloat, ptr %245, i32 0, i32 0
  store i32 %1378, ptr %1379, align 4
  %1380 = getelementptr inbounds %class.GFloat, ptr %245, i32 0, i32 0
  %1381 = load i32, ptr %1380, align 4
  %1382 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %242, i32 %1381)
  %1383 = getelementptr inbounds %class.GFloat, ptr %241, i32 0, i32 0
  store i32 %1382, ptr %1383, align 4
  %1384 = load ptr, ptr %25, align 8, !tbaa !5
  %1385 = getelementptr inbounds %class.GVector3, ptr %1384, i32 0, i32 1
  %1386 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1387 = getelementptr inbounds [3 x %class.GFloat], ptr %1386, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %248, ptr align 4 %1387, i64 4, i1 false), !tbaa.struct !9
  %1388 = getelementptr inbounds %class.GFloat, ptr %248, i32 0, i32 0
  %1389 = load i32, ptr %1388, align 4
  %1390 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1385, i32 %1389)
  %1391 = getelementptr inbounds %class.GFloat, ptr %247, i32 0, i32 0
  store i32 %1390, ptr %1391, align 4
  %1392 = getelementptr inbounds %class.GFloat, ptr %247, i32 0, i32 0
  %1393 = load i32, ptr %1392, align 4
  %1394 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %241, i32 %1393)
  %1395 = getelementptr inbounds %class.GFloat, ptr %240, i32 0, i32 0
  store i32 %1394, ptr %1395, align 4
  %1396 = load ptr, ptr %25, align 8, !tbaa !5
  %1397 = getelementptr inbounds %class.GVector3, ptr %1396, i32 0, i32 2
  %1398 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1399 = getelementptr inbounds [3 x %class.GFloat], ptr %1398, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %250, ptr align 4 %1399, i64 4, i1 false), !tbaa.struct !9
  %1400 = getelementptr inbounds %class.GFloat, ptr %250, i32 0, i32 0
  %1401 = load i32, ptr %1400, align 4
  %1402 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1397, i32 %1401)
  %1403 = getelementptr inbounds %class.GFloat, ptr %249, i32 0, i32 0
  store i32 %1402, ptr %1403, align 4
  %1404 = getelementptr inbounds %class.GFloat, ptr %249, i32 0, i32 0
  %1405 = load i32, ptr %1404, align 4
  %1406 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %240, i32 %1405)
  %1407 = getelementptr inbounds %class.GFloat, ptr %239, i32 0, i32 0
  store i32 %1406, ptr %1407, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %239, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %242) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %241) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %240) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %239) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %251) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %252, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1408 = getelementptr inbounds %class.GFloat, ptr %252, i32 0, i32 0
  %1409 = load i32, ptr %1408, align 4
  %1410 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1409)
  %1411 = getelementptr inbounds %class.GFloat, ptr %251, i32 0, i32 0
  store i32 %1410, ptr %1411, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %253, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1412 = getelementptr inbounds %class.GFloat, ptr %253, i32 0, i32 0
  %1413 = load i32, ptr %1412, align 4
  %1414 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %251, i32 %1413)
  call void @llvm.lifetime.end.p0(i64 4, ptr %251) #7
  br i1 %1414, label %1415, label %1416

1415:                                             ; preds = %1341
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1416:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 4, ptr %254) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %255) #7
  %1417 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1418 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1419 = getelementptr inbounds [3 x %class.GFloat], ptr %1418, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %256, ptr align 4 %1419, i64 4, i1 false), !tbaa.struct !9
  %1420 = getelementptr inbounds %class.GFloat, ptr %256, i32 0, i32 0
  %1421 = load i32, ptr %1420, align 4
  %1422 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1417, i32 %1421)
  %1423 = getelementptr inbounds %class.GFloat, ptr %255, i32 0, i32 0
  store i32 %1422, ptr %1423, align 4
  %1424 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1425 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1426 = getelementptr inbounds [3 x %class.GFloat], ptr %1425, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %258, ptr align 4 %1426, i64 4, i1 false), !tbaa.struct !9
  %1427 = getelementptr inbounds %class.GFloat, ptr %258, i32 0, i32 0
  %1428 = load i32, ptr %1427, align 4
  %1429 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1424, i32 %1428)
  %1430 = getelementptr inbounds %class.GFloat, ptr %257, i32 0, i32 0
  store i32 %1429, ptr %1430, align 4
  %1431 = getelementptr inbounds %class.GFloat, ptr %257, i32 0, i32 0
  %1432 = load i32, ptr %1431, align 4
  %1433 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %255, i32 %1432)
  %1434 = getelementptr inbounds %class.GFloat, ptr %254, i32 0, i32 0
  store i32 %1433, ptr %1434, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %254, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %255) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %254) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %259) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %260) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %261) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %262) #7
  %1435 = load ptr, ptr %24, align 8, !tbaa !5
  %1436 = getelementptr inbounds %class.GVector3, ptr %1435, i32 0, i32 0
  %1437 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1438 = getelementptr inbounds [3 x %class.GFloat], ptr %1437, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %264, ptr align 4 %1438, i64 4, i1 false), !tbaa.struct !9
  %1439 = getelementptr inbounds %class.GFloat, ptr %264, i32 0, i32 0
  %1440 = load i32, ptr %1439, align 4
  %1441 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1436, i32 %1440)
  %1442 = getelementptr inbounds %class.GFloat, ptr %263, i32 0, i32 0
  store i32 %1441, ptr %1442, align 4
  %1443 = getelementptr inbounds %class.GFloat, ptr %263, i32 0, i32 0
  %1444 = load i32, ptr %1443, align 4
  %1445 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1444)
  %1446 = getelementptr inbounds %class.GFloat, ptr %262, i32 0, i32 0
  store i32 %1445, ptr %1446, align 4
  %1447 = load ptr, ptr %24, align 8, !tbaa !5
  %1448 = getelementptr inbounds %class.GVector3, ptr %1447, i32 0, i32 2
  %1449 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1450 = getelementptr inbounds [3 x %class.GFloat], ptr %1449, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %266, ptr align 4 %1450, i64 4, i1 false), !tbaa.struct !9
  %1451 = getelementptr inbounds %class.GFloat, ptr %266, i32 0, i32 0
  %1452 = load i32, ptr %1451, align 4
  %1453 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1448, i32 %1452)
  %1454 = getelementptr inbounds %class.GFloat, ptr %265, i32 0, i32 0
  store i32 %1453, ptr %1454, align 4
  %1455 = getelementptr inbounds %class.GFloat, ptr %265, i32 0, i32 0
  %1456 = load i32, ptr %1455, align 4
  %1457 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %262, i32 %1456)
  %1458 = getelementptr inbounds %class.GFloat, ptr %261, i32 0, i32 0
  store i32 %1457, ptr %1458, align 4
  %1459 = load ptr, ptr %25, align 8, !tbaa !5
  %1460 = getelementptr inbounds %class.GVector3, ptr %1459, i32 0, i32 0
  %1461 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1462 = getelementptr inbounds [3 x %class.GFloat], ptr %1461, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %268, ptr align 4 %1462, i64 4, i1 false), !tbaa.struct !9
  %1463 = getelementptr inbounds %class.GFloat, ptr %268, i32 0, i32 0
  %1464 = load i32, ptr %1463, align 4
  %1465 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1460, i32 %1464)
  %1466 = getelementptr inbounds %class.GFloat, ptr %267, i32 0, i32 0
  store i32 %1465, ptr %1466, align 4
  %1467 = getelementptr inbounds %class.GFloat, ptr %267, i32 0, i32 0
  %1468 = load i32, ptr %1467, align 4
  %1469 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %261, i32 %1468)
  %1470 = getelementptr inbounds %class.GFloat, ptr %260, i32 0, i32 0
  store i32 %1469, ptr %1470, align 4
  %1471 = load ptr, ptr %25, align 8, !tbaa !5
  %1472 = getelementptr inbounds %class.GVector3, ptr %1471, i32 0, i32 2
  %1473 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1474 = getelementptr inbounds [3 x %class.GFloat], ptr %1473, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %270, ptr align 4 %1474, i64 4, i1 false), !tbaa.struct !9
  %1475 = getelementptr inbounds %class.GFloat, ptr %270, i32 0, i32 0
  %1476 = load i32, ptr %1475, align 4
  %1477 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1472, i32 %1476)
  %1478 = getelementptr inbounds %class.GFloat, ptr %269, i32 0, i32 0
  store i32 %1477, ptr %1478, align 4
  %1479 = getelementptr inbounds %class.GFloat, ptr %269, i32 0, i32 0
  %1480 = load i32, ptr %1479, align 4
  %1481 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %260, i32 %1480)
  %1482 = getelementptr inbounds %class.GFloat, ptr %259, i32 0, i32 0
  store i32 %1481, ptr %1482, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %259, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %262) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %261) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %260) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %259) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %271) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %272, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1483 = getelementptr inbounds %class.GFloat, ptr %272, i32 0, i32 0
  %1484 = load i32, ptr %1483, align 4
  %1485 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1484)
  %1486 = getelementptr inbounds %class.GFloat, ptr %271, i32 0, i32 0
  store i32 %1485, ptr %1486, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %273, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1487 = getelementptr inbounds %class.GFloat, ptr %273, i32 0, i32 0
  %1488 = load i32, ptr %1487, align 4
  %1489 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %271, i32 %1488)
  call void @llvm.lifetime.end.p0(i64 4, ptr %271) #7
  br i1 %1489, label %1490, label %1491

1490:                                             ; preds = %1416
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1491:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 4, ptr %274) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %275) #7
  %1492 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1493 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 2
  %1494 = getelementptr inbounds [3 x %class.GFloat], ptr %1493, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %276, ptr align 8 %1494, i64 4, i1 false), !tbaa.struct !9
  %1495 = getelementptr inbounds %class.GFloat, ptr %276, i32 0, i32 0
  %1496 = load i32, ptr %1495, align 4
  %1497 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1492, i32 %1496)
  %1498 = getelementptr inbounds %class.GFloat, ptr %275, i32 0, i32 0
  store i32 %1497, ptr %1498, align 4
  %1499 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 2
  %1500 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1501 = getelementptr inbounds [3 x %class.GFloat], ptr %1500, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %278, ptr align 8 %1501, i64 4, i1 false), !tbaa.struct !9
  %1502 = getelementptr inbounds %class.GFloat, ptr %278, i32 0, i32 0
  %1503 = load i32, ptr %1502, align 4
  %1504 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1499, i32 %1503)
  %1505 = getelementptr inbounds %class.GFloat, ptr %277, i32 0, i32 0
  store i32 %1504, ptr %1505, align 4
  %1506 = getelementptr inbounds %class.GFloat, ptr %277, i32 0, i32 0
  %1507 = load i32, ptr %1506, align 4
  %1508 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %275, i32 %1507)
  %1509 = getelementptr inbounds %class.GFloat, ptr %274, i32 0, i32 0
  store i32 %1508, ptr %1509, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %274, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %275) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %274) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %279) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %280) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %281) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %282) #7
  %1510 = load ptr, ptr %24, align 8, !tbaa !5
  %1511 = getelementptr inbounds %class.GVector3, ptr %1510, i32 0, i32 0
  %1512 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1513 = getelementptr inbounds [3 x %class.GFloat], ptr %1512, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %284, ptr align 8 %1513, i64 4, i1 false), !tbaa.struct !9
  %1514 = getelementptr inbounds %class.GFloat, ptr %284, i32 0, i32 0
  %1515 = load i32, ptr %1514, align 4
  %1516 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1511, i32 %1515)
  %1517 = getelementptr inbounds %class.GFloat, ptr %283, i32 0, i32 0
  store i32 %1516, ptr %1517, align 4
  %1518 = getelementptr inbounds %class.GFloat, ptr %283, i32 0, i32 0
  %1519 = load i32, ptr %1518, align 4
  %1520 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1519)
  %1521 = getelementptr inbounds %class.GFloat, ptr %282, i32 0, i32 0
  store i32 %1520, ptr %1521, align 4
  %1522 = load ptr, ptr %24, align 8, !tbaa !5
  %1523 = getelementptr inbounds %class.GVector3, ptr %1522, i32 0, i32 2
  %1524 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1525 = getelementptr inbounds [3 x %class.GFloat], ptr %1524, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %286, ptr align 8 %1525, i64 4, i1 false), !tbaa.struct !9
  %1526 = getelementptr inbounds %class.GFloat, ptr %286, i32 0, i32 0
  %1527 = load i32, ptr %1526, align 4
  %1528 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1523, i32 %1527)
  %1529 = getelementptr inbounds %class.GFloat, ptr %285, i32 0, i32 0
  store i32 %1528, ptr %1529, align 4
  %1530 = getelementptr inbounds %class.GFloat, ptr %285, i32 0, i32 0
  %1531 = load i32, ptr %1530, align 4
  %1532 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %282, i32 %1531)
  %1533 = getelementptr inbounds %class.GFloat, ptr %281, i32 0, i32 0
  store i32 %1532, ptr %1533, align 4
  %1534 = load ptr, ptr %25, align 8, !tbaa !5
  %1535 = getelementptr inbounds %class.GVector3, ptr %1534, i32 0, i32 0
  %1536 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1537 = getelementptr inbounds [3 x %class.GFloat], ptr %1536, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %288, ptr align 4 %1537, i64 4, i1 false), !tbaa.struct !9
  %1538 = getelementptr inbounds %class.GFloat, ptr %288, i32 0, i32 0
  %1539 = load i32, ptr %1538, align 4
  %1540 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1535, i32 %1539)
  %1541 = getelementptr inbounds %class.GFloat, ptr %287, i32 0, i32 0
  store i32 %1540, ptr %1541, align 4
  %1542 = getelementptr inbounds %class.GFloat, ptr %287, i32 0, i32 0
  %1543 = load i32, ptr %1542, align 4
  %1544 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %281, i32 %1543)
  %1545 = getelementptr inbounds %class.GFloat, ptr %280, i32 0, i32 0
  store i32 %1544, ptr %1545, align 4
  %1546 = load ptr, ptr %25, align 8, !tbaa !5
  %1547 = getelementptr inbounds %class.GVector3, ptr %1546, i32 0, i32 1
  %1548 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1549 = getelementptr inbounds [3 x %class.GFloat], ptr %1548, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %290, ptr align 4 %1549, i64 4, i1 false), !tbaa.struct !9
  %1550 = getelementptr inbounds %class.GFloat, ptr %290, i32 0, i32 0
  %1551 = load i32, ptr %1550, align 4
  %1552 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1547, i32 %1551)
  %1553 = getelementptr inbounds %class.GFloat, ptr %289, i32 0, i32 0
  store i32 %1552, ptr %1553, align 4
  %1554 = getelementptr inbounds %class.GFloat, ptr %289, i32 0, i32 0
  %1555 = load i32, ptr %1554, align 4
  %1556 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %280, i32 %1555)
  %1557 = getelementptr inbounds %class.GFloat, ptr %279, i32 0, i32 0
  store i32 %1556, ptr %1557, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %279, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %282) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %281) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %280) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %279) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %291) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %292, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1558 = getelementptr inbounds %class.GFloat, ptr %292, i32 0, i32 0
  %1559 = load i32, ptr %1558, align 4
  %1560 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1559)
  %1561 = getelementptr inbounds %class.GFloat, ptr %291, i32 0, i32 0
  store i32 %1560, ptr %1561, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %293, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1562 = getelementptr inbounds %class.GFloat, ptr %293, i32 0, i32 0
  %1563 = load i32, ptr %1562, align 4
  %1564 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %291, i32 %1563)
  call void @llvm.lifetime.end.p0(i64 4, ptr %291) #7
  br i1 %1564, label %1565, label %1566

1565:                                             ; preds = %1491
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1566:                                             ; preds = %1491
  call void @llvm.lifetime.start.p0(i64 4, ptr %294) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %295) #7
  %1567 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1568 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1569 = getelementptr inbounds [3 x %class.GFloat], ptr %1568, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %296, ptr align 16 %1569, i64 4, i1 false), !tbaa.struct !9
  %1570 = getelementptr inbounds %class.GFloat, ptr %296, i32 0, i32 0
  %1571 = load i32, ptr %1570, align 4
  %1572 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1567, i32 %1571)
  %1573 = getelementptr inbounds %class.GFloat, ptr %295, i32 0, i32 0
  store i32 %1572, ptr %1573, align 4
  %1574 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1575 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1576 = getelementptr inbounds [3 x %class.GFloat], ptr %1575, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %298, ptr align 4 %1576, i64 4, i1 false), !tbaa.struct !9
  %1577 = getelementptr inbounds %class.GFloat, ptr %298, i32 0, i32 0
  %1578 = load i32, ptr %1577, align 4
  %1579 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1574, i32 %1578)
  %1580 = getelementptr inbounds %class.GFloat, ptr %297, i32 0, i32 0
  store i32 %1579, ptr %1580, align 4
  %1581 = getelementptr inbounds %class.GFloat, ptr %297, i32 0, i32 0
  %1582 = load i32, ptr %1581, align 4
  %1583 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %295, i32 %1582)
  %1584 = getelementptr inbounds %class.GFloat, ptr %294, i32 0, i32 0
  store i32 %1583, ptr %1584, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %294, i64 4, i1 false), !tbaa.struct !9
  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.start.p0(i64 4, ptr %299) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %300) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %301) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %302) #7
  %1585 = load ptr, ptr %24, align 8, !tbaa !5
  %1586 = getelementptr inbounds %class.GVector3, ptr %1585, i32 0, i32 0
  %1587 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1588 = getelementptr inbounds [3 x %class.GFloat], ptr %1587, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %304, ptr align 4 %1588, i64 4, i1 false), !tbaa.struct !9
  %1589 = getelementptr inbounds %class.GFloat, ptr %304, i32 0, i32 0
  %1590 = load i32, ptr %1589, align 4
  %1591 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1586, i32 %1590)
  %1592 = getelementptr inbounds %class.GFloat, ptr %303, i32 0, i32 0
  store i32 %1591, ptr %1592, align 4
  %1593 = getelementptr inbounds %class.GFloat, ptr %303, i32 0, i32 0
  %1594 = load i32, ptr %1593, align 4
  %1595 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1594)
  %1596 = getelementptr inbounds %class.GFloat, ptr %302, i32 0, i32 0
  store i32 %1595, ptr %1596, align 4
  %1597 = load ptr, ptr %24, align 8, !tbaa !5
  %1598 = getelementptr inbounds %class.GVector3, ptr %1597, i32 0, i32 1
  %1599 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1600 = getelementptr inbounds [3 x %class.GFloat], ptr %1599, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %306, ptr align 16 %1600, i64 4, i1 false), !tbaa.struct !9
  %1601 = getelementptr inbounds %class.GFloat, ptr %306, i32 0, i32 0
  %1602 = load i32, ptr %1601, align 4
  %1603 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1598, i32 %1602)
  %1604 = getelementptr inbounds %class.GFloat, ptr %305, i32 0, i32 0
  store i32 %1603, ptr %1604, align 4
  %1605 = getelementptr inbounds %class.GFloat, ptr %305, i32 0, i32 0
  %1606 = load i32, ptr %1605, align 4
  %1607 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %302, i32 %1606)
  %1608 = getelementptr inbounds %class.GFloat, ptr %301, i32 0, i32 0
  store i32 %1607, ptr %1608, align 4
  %1609 = load ptr, ptr %25, align 8, !tbaa !5
  %1610 = getelementptr inbounds %class.GVector3, ptr %1609, i32 0, i32 1
  %1611 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1612 = getelementptr inbounds [3 x %class.GFloat], ptr %1611, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %308, ptr align 8 %1612, i64 4, i1 false), !tbaa.struct !9
  %1613 = getelementptr inbounds %class.GFloat, ptr %308, i32 0, i32 0
  %1614 = load i32, ptr %1613, align 4
  %1615 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1610, i32 %1614)
  %1616 = getelementptr inbounds %class.GFloat, ptr %307, i32 0, i32 0
  store i32 %1615, ptr %1616, align 4
  %1617 = getelementptr inbounds %class.GFloat, ptr %307, i32 0, i32 0
  %1618 = load i32, ptr %1617, align 4
  %1619 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %301, i32 %1618)
  %1620 = getelementptr inbounds %class.GFloat, ptr %300, i32 0, i32 0
  store i32 %1619, ptr %1620, align 4
  %1621 = load ptr, ptr %25, align 8, !tbaa !5
  %1622 = getelementptr inbounds %class.GVector3, ptr %1621, i32 0, i32 2
  %1623 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1624 = getelementptr inbounds [3 x %class.GFloat], ptr %1623, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %310, ptr align 4 %1624, i64 4, i1 false), !tbaa.struct !9
  %1625 = getelementptr inbounds %class.GFloat, ptr %310, i32 0, i32 0
  %1626 = load i32, ptr %1625, align 4
  %1627 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1622, i32 %1626)
  %1628 = getelementptr inbounds %class.GFloat, ptr %309, i32 0, i32 0
  store i32 %1627, ptr %1628, align 4
  %1629 = getelementptr inbounds %class.GFloat, ptr %309, i32 0, i32 0
  %1630 = load i32, ptr %1629, align 4
  %1631 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %300, i32 %1630)
  %1632 = getelementptr inbounds %class.GFloat, ptr %299, i32 0, i32 0
  store i32 %1631, ptr %1632, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %299, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %302) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %301) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %300) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %299) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %311) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %312, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1633 = getelementptr inbounds %class.GFloat, ptr %312, i32 0, i32 0
  %1634 = load i32, ptr %1633, align 4
  %1635 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1634)
  %1636 = getelementptr inbounds %class.GFloat, ptr %311, i32 0, i32 0
  store i32 %1635, ptr %1636, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %313, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1637 = getelementptr inbounds %class.GFloat, ptr %313, i32 0, i32 0
  %1638 = load i32, ptr %1637, align 4
  %1639 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %311, i32 %1638)
  call void @llvm.lifetime.end.p0(i64 4, ptr %311) #7
  br i1 %1639, label %1640, label %1641

1640:                                             ; preds = %1566
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1641:                                             ; preds = %1566
  call void @llvm.lifetime.start.p0(i64 4, ptr %314) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %315) #7
  %1642 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1643 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1644 = getelementptr inbounds [3 x %class.GFloat], ptr %1643, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %316, ptr align 4 %1644, i64 4, i1 false), !tbaa.struct !9
  %1645 = getelementptr inbounds %class.GFloat, ptr %316, i32 0, i32 0
  %1646 = load i32, ptr %1645, align 4
  %1647 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1642, i32 %1646)
  %1648 = getelementptr inbounds %class.GFloat, ptr %315, i32 0, i32 0
  store i32 %1647, ptr %1648, align 4
  %1649 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1650 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1651 = getelementptr inbounds [3 x %class.GFloat], ptr %1650, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %318, ptr align 4 %1651, i64 4, i1 false), !tbaa.struct !9
  %1652 = getelementptr inbounds %class.GFloat, ptr %318, i32 0, i32 0
  %1653 = load i32, ptr %1652, align 4
  %1654 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1649, i32 %1653)
  %1655 = getelementptr inbounds %class.GFloat, ptr %317, i32 0, i32 0
  store i32 %1654, ptr %1655, align 4
  %1656 = getelementptr inbounds %class.GFloat, ptr %317, i32 0, i32 0
  %1657 = load i32, ptr %1656, align 4
  %1658 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %315, i32 %1657)
  %1659 = getelementptr inbounds %class.GFloat, ptr %314, i32 0, i32 0
  store i32 %1658, ptr %1659, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %314, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %315) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %314) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %319) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %320) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %321) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %322) #7
  %1660 = load ptr, ptr %24, align 8, !tbaa !5
  %1661 = getelementptr inbounds %class.GVector3, ptr %1660, i32 0, i32 0
  %1662 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1663 = getelementptr inbounds [3 x %class.GFloat], ptr %1662, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %324, ptr align 4 %1663, i64 4, i1 false), !tbaa.struct !9
  %1664 = getelementptr inbounds %class.GFloat, ptr %324, i32 0, i32 0
  %1665 = load i32, ptr %1664, align 4
  %1666 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1661, i32 %1665)
  %1667 = getelementptr inbounds %class.GFloat, ptr %323, i32 0, i32 0
  store i32 %1666, ptr %1667, align 4
  %1668 = getelementptr inbounds %class.GFloat, ptr %323, i32 0, i32 0
  %1669 = load i32, ptr %1668, align 4
  %1670 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1669)
  %1671 = getelementptr inbounds %class.GFloat, ptr %322, i32 0, i32 0
  store i32 %1670, ptr %1671, align 4
  %1672 = load ptr, ptr %24, align 8, !tbaa !5
  %1673 = getelementptr inbounds %class.GVector3, ptr %1672, i32 0, i32 1
  %1674 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1675 = getelementptr inbounds [3 x %class.GFloat], ptr %1674, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %326, ptr align 4 %1675, i64 4, i1 false), !tbaa.struct !9
  %1676 = getelementptr inbounds %class.GFloat, ptr %326, i32 0, i32 0
  %1677 = load i32, ptr %1676, align 4
  %1678 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1673, i32 %1677)
  %1679 = getelementptr inbounds %class.GFloat, ptr %325, i32 0, i32 0
  store i32 %1678, ptr %1679, align 4
  %1680 = getelementptr inbounds %class.GFloat, ptr %325, i32 0, i32 0
  %1681 = load i32, ptr %1680, align 4
  %1682 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %322, i32 %1681)
  %1683 = getelementptr inbounds %class.GFloat, ptr %321, i32 0, i32 0
  store i32 %1682, ptr %1683, align 4
  %1684 = load ptr, ptr %25, align 8, !tbaa !5
  %1685 = getelementptr inbounds %class.GVector3, ptr %1684, i32 0, i32 0
  %1686 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1687 = getelementptr inbounds [3 x %class.GFloat], ptr %1686, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %328, ptr align 8 %1687, i64 4, i1 false), !tbaa.struct !9
  %1688 = getelementptr inbounds %class.GFloat, ptr %328, i32 0, i32 0
  %1689 = load i32, ptr %1688, align 4
  %1690 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1685, i32 %1689)
  %1691 = getelementptr inbounds %class.GFloat, ptr %327, i32 0, i32 0
  store i32 %1690, ptr %1691, align 4
  %1692 = getelementptr inbounds %class.GFloat, ptr %327, i32 0, i32 0
  %1693 = load i32, ptr %1692, align 4
  %1694 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %321, i32 %1693)
  %1695 = getelementptr inbounds %class.GFloat, ptr %320, i32 0, i32 0
  store i32 %1694, ptr %1695, align 4
  %1696 = load ptr, ptr %25, align 8, !tbaa !5
  %1697 = getelementptr inbounds %class.GVector3, ptr %1696, i32 0, i32 2
  %1698 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1699 = getelementptr inbounds [3 x %class.GFloat], ptr %1698, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %330, ptr align 8 %1699, i64 4, i1 false), !tbaa.struct !9
  %1700 = getelementptr inbounds %class.GFloat, ptr %330, i32 0, i32 0
  %1701 = load i32, ptr %1700, align 4
  %1702 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1697, i32 %1701)
  %1703 = getelementptr inbounds %class.GFloat, ptr %329, i32 0, i32 0
  store i32 %1702, ptr %1703, align 4
  %1704 = getelementptr inbounds %class.GFloat, ptr %329, i32 0, i32 0
  %1705 = load i32, ptr %1704, align 4
  %1706 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %320, i32 %1705)
  %1707 = getelementptr inbounds %class.GFloat, ptr %319, i32 0, i32 0
  store i32 %1706, ptr %1707, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %319, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %322) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %321) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %320) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %319) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %331) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %332, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1708 = getelementptr inbounds %class.GFloat, ptr %332, i32 0, i32 0
  %1709 = load i32, ptr %1708, align 4
  %1710 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1709)
  %1711 = getelementptr inbounds %class.GFloat, ptr %331, i32 0, i32 0
  store i32 %1710, ptr %1711, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %333, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1712 = getelementptr inbounds %class.GFloat, ptr %333, i32 0, i32 0
  %1713 = load i32, ptr %1712, align 4
  %1714 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %331, i32 %1713)
  call void @llvm.lifetime.end.p0(i64 4, ptr %331) #7
  br i1 %1714, label %1715, label %1716

1715:                                             ; preds = %1641
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1716:                                             ; preds = %1641
  call void @llvm.lifetime.start.p0(i64 4, ptr %334) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %335) #7
  %1717 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 1
  %1718 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 0
  %1719 = getelementptr inbounds [3 x %class.GFloat], ptr %1718, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %336, ptr align 8 %1719, i64 4, i1 false), !tbaa.struct !9
  %1720 = getelementptr inbounds %class.GFloat, ptr %336, i32 0, i32 0
  %1721 = load i32, ptr %1720, align 4
  %1722 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1717, i32 %1721)
  %1723 = getelementptr inbounds %class.GFloat, ptr %335, i32 0, i32 0
  store i32 %1722, ptr %1723, align 4
  %1724 = getelementptr inbounds [3 x %class.GFloat], ptr %16, i64 0, i64 0
  %1725 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %14, i64 0, i64 1
  %1726 = getelementptr inbounds [3 x %class.GFloat], ptr %1725, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %338, ptr align 4 %1726, i64 4, i1 false), !tbaa.struct !9
  %1727 = getelementptr inbounds %class.GFloat, ptr %338, i32 0, i32 0
  %1728 = load i32, ptr %1727, align 4
  %1729 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1724, i32 %1728)
  %1730 = getelementptr inbounds %class.GFloat, ptr %337, i32 0, i32 0
  store i32 %1729, ptr %1730, align 4
  %1731 = getelementptr inbounds %class.GFloat, ptr %337, i32 0, i32 0
  %1732 = load i32, ptr %1731, align 4
  %1733 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %335, i32 %1732)
  %1734 = getelementptr inbounds %class.GFloat, ptr %334, i32 0, i32 0
  store i32 %1733, ptr %1734, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %174, ptr align 4 %334, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %335) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %334) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %339) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %340) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %341) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %342) #7
  %1735 = load ptr, ptr %24, align 8, !tbaa !5
  %1736 = getelementptr inbounds %class.GVector3, ptr %1735, i32 0, i32 0
  %1737 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 1
  %1738 = getelementptr inbounds [3 x %class.GFloat], ptr %1737, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %344, ptr align 4 %1738, i64 4, i1 false), !tbaa.struct !9
  %1739 = getelementptr inbounds %class.GFloat, ptr %344, i32 0, i32 0
  %1740 = load i32, ptr %1739, align 4
  %1741 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1736, i32 %1740)
  %1742 = getelementptr inbounds %class.GFloat, ptr %343, i32 0, i32 0
  store i32 %1741, ptr %1742, align 4
  %1743 = getelementptr inbounds %class.GFloat, ptr %343, i32 0, i32 0
  %1744 = load i32, ptr %1743, align 4
  %1745 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %1744)
  %1746 = getelementptr inbounds %class.GFloat, ptr %342, i32 0, i32 0
  store i32 %1745, ptr %1746, align 4
  %1747 = load ptr, ptr %24, align 8, !tbaa !5
  %1748 = getelementptr inbounds %class.GVector3, ptr %1747, i32 0, i32 1
  %1749 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 0
  %1750 = getelementptr inbounds [3 x %class.GFloat], ptr %1749, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %346, ptr align 8 %1750, i64 4, i1 false), !tbaa.struct !9
  %1751 = getelementptr inbounds %class.GFloat, ptr %346, i32 0, i32 0
  %1752 = load i32, ptr %1751, align 4
  %1753 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1748, i32 %1752)
  %1754 = getelementptr inbounds %class.GFloat, ptr %345, i32 0, i32 0
  store i32 %1753, ptr %1754, align 4
  %1755 = getelementptr inbounds %class.GFloat, ptr %345, i32 0, i32 0
  %1756 = load i32, ptr %1755, align 4
  %1757 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %342, i32 %1756)
  %1758 = getelementptr inbounds %class.GFloat, ptr %341, i32 0, i32 0
  store i32 %1757, ptr %1758, align 4
  %1759 = load ptr, ptr %25, align 8, !tbaa !5
  %1760 = getelementptr inbounds %class.GVector3, ptr %1759, i32 0, i32 0
  %1761 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1762 = getelementptr inbounds [3 x %class.GFloat], ptr %1761, i64 0, i64 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %348, ptr align 4 %1762, i64 4, i1 false), !tbaa.struct !9
  %1763 = getelementptr inbounds %class.GFloat, ptr %348, i32 0, i32 0
  %1764 = load i32, ptr %1763, align 4
  %1765 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1760, i32 %1764)
  %1766 = getelementptr inbounds %class.GFloat, ptr %347, i32 0, i32 0
  store i32 %1765, ptr %1766, align 4
  %1767 = getelementptr inbounds %class.GFloat, ptr %347, i32 0, i32 0
  %1768 = load i32, ptr %1767, align 4
  %1769 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %341, i32 %1768)
  %1770 = getelementptr inbounds %class.GFloat, ptr %340, i32 0, i32 0
  store i32 %1769, ptr %1770, align 4
  %1771 = load ptr, ptr %25, align 8, !tbaa !5
  %1772 = getelementptr inbounds %class.GVector3, ptr %1771, i32 0, i32 1
  %1773 = getelementptr inbounds [3 x [3 x %class.GFloat]], ptr %15, i64 0, i64 2
  %1774 = getelementptr inbounds [3 x %class.GFloat], ptr %1773, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %350, ptr align 8 %1774, i64 4, i1 false), !tbaa.struct !9
  %1775 = getelementptr inbounds %class.GFloat, ptr %350, i32 0, i32 0
  %1776 = load i32, ptr %1775, align 4
  %1777 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %1772, i32 %1776)
  %1778 = getelementptr inbounds %class.GFloat, ptr %349, i32 0, i32 0
  store i32 %1777, ptr %1778, align 4
  %1779 = getelementptr inbounds %class.GFloat, ptr %349, i32 0, i32 0
  %1780 = load i32, ptr %1779, align 4
  %1781 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %340, i32 %1780)
  %1782 = getelementptr inbounds %class.GFloat, ptr %339, i32 0, i32 0
  store i32 %1781, ptr %1782, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %339, i64 4, i1 false), !tbaa.struct !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %342) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %341) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %340) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %339) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %351) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %352, ptr align 4 %174, i64 4, i1 false), !tbaa.struct !9
  %1783 = getelementptr inbounds %class.GFloat, ptr %352, i32 0, i32 0
  %1784 = load i32, ptr %1783, align 4
  %1785 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %1784)
  %1786 = getelementptr inbounds %class.GFloat, ptr %351, i32 0, i32 0
  store i32 %1785, ptr %1786, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %353, ptr align 4 %48, i64 4, i1 false), !tbaa.struct !9
  %1787 = getelementptr inbounds %class.GFloat, ptr %353, i32 0, i32 0
  %1788 = load i32, ptr %1787, align 4
  %1789 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %351, i32 %1788)
  call void @llvm.lifetime.end.p0(i64 4, ptr %351) #7
  br i1 %1789, label %1790, label %1791

1790:                                             ; preds = %1716
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %1792

1791:                                             ; preds = %1716
  store i32 0, ptr %63, align 4
  br label %1792

1792:                                             ; preds = %1791, %1790, %1715, %1640, %1565, %1490, %1415, %1340, %1265, %1190
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #7
  %1793 = load i32, ptr %63, align 4
  switch i32 %1793, label %2267 [
    i32 0, label %1794
  ]

1794:                                             ; preds = %1792
  call void @llvm.lifetime.start.p0(i64 4, ptr %354) #7
  %1795 = call i32 @_ZN5GMath7Makef32Eijj(i32 noundef 1000000, i32 noundef 0, i32 noundef 1)
  %1796 = getelementptr inbounds %class.GFloat, ptr %354, i32 0, i32 0
  store i32 %1795, ptr %1796, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %355) #7
  store i32 0, ptr %355, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %356) #7
  store i32 0, ptr %356, align 4, !tbaa !10
  br label %1797

1797:                                             ; preds = %1817, %1794
  %1798 = load i32, ptr %356, align 4, !tbaa !10
  %1799 = icmp ult i32 %1798, 6
  br i1 %1799, label %1801, label %1800

1800:                                             ; preds = %1797
  store i32 2, ptr %63, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %356) #7
  br label %1820

1801:                                             ; preds = %1797
  call void @llvm.lifetime.start.p0(i64 4, ptr %357) #7
  %1802 = load i32, ptr %356, align 4, !tbaa !10
  %1803 = zext i32 %1802 to i64
  %1804 = getelementptr inbounds [6 x %class.GFloat], ptr %18, i64 0, i64 %1803
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %357, ptr align 4 %1804, i64 4, i1 false), !tbaa.struct !9
  %1805 = call i32 @_ZN5GMath4ZeroEv()
  %1806 = getelementptr inbounds %class.GFloat, ptr %358, i32 0, i32 0
  store i32 %1805, ptr %1806, align 4
  %1807 = getelementptr inbounds %class.GFloat, ptr %358, i32 0, i32 0
  %1808 = load i32, ptr %1807, align 4
  %1809 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %357, i32 %1808)
  br i1 %1809, label %1810, label %1816

1810:                                             ; preds = %1801
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %359, ptr align 4 %354, i64 4, i1 false), !tbaa.struct !9
  %1811 = getelementptr inbounds %class.GFloat, ptr %359, i32 0, i32 0
  %1812 = load i32, ptr %1811, align 4
  %1813 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %357, i32 %1812)
  br i1 %1813, label %1814, label %1816

1814:                                             ; preds = %1810
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %354, ptr align 4 %357, i64 4, i1 false), !tbaa.struct !9
  %1815 = load i32, ptr %356, align 4, !tbaa !10
  store i32 %1815, ptr %355, align 4, !tbaa !10
  br label %1816

1816:                                             ; preds = %1814, %1810, %1801
  call void @llvm.lifetime.end.p0(i64 4, ptr %357) #7
  br label %1817

1817:                                             ; preds = %1816
  %1818 = load i32, ptr %356, align 4, !tbaa !10
  %1819 = add i32 %1818, 1
  store i32 %1819, ptr %356, align 4, !tbaa !10
  br label %1797, !llvm.loop !12

1820:                                             ; preds = %1800
  call void @llvm.lifetime.start.p0(i64 4, ptr %360) #7
  %1821 = load i32, ptr %355, align 4, !tbaa !10
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds [6 x %class.GFloat], ptr %17, i64 0, i64 %1822
  %1824 = call i32 @_ZN5GMath4ZeroEv()
  %1825 = getelementptr inbounds %class.GFloat, ptr %361, i32 0, i32 0
  store i32 %1824, ptr %1825, align 4
  %1826 = getelementptr inbounds %class.GFloat, ptr %361, i32 0, i32 0
  %1827 = load i32, ptr %1826, align 4
  %1828 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %1823, i32 %1827)
  %1829 = zext i1 %1828 to i32
  store i32 %1829, ptr %360, align 4, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 28, ptr %362) #7
  call void @_ZN13GTransform_QTC2Ev(ptr noundef nonnull align 4 dereferenceable(28) %362)
  call void @llvm.lifetime.start.p0(i64 36, ptr %363) #7
  call void @_ZN8GMatrix3C2Ev(ptr noundef nonnull align 4 dereferenceable(36) %363)
  call void @llvm.lifetime.start.p0(i64 12, ptr %364) #7
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %364)
  %1830 = load i32, ptr %355, align 4, !tbaa !10
  switch i32 %1830, label %1831 [
    i32 0, label %1832
    i32 1, label %1903
    i32 2, label %1976
    i32 3, label %2049
    i32 4, label %2119
    i32 5, label %2194
  ]

1831:                                             ; preds = %1820
  store i32 0, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2266

1832:                                             ; preds = %1820
  %1833 = load i32, ptr %360, align 4, !tbaa !10
  %1834 = icmp ne i32 %1833, 0
  br i1 %1834, label %1835, label %1853

1835:                                             ; preds = %1832
  %1836 = load ptr, ptr %26, align 8, !tbaa !5
  %1837 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %1836)
  %1838 = load ptr, ptr %9, align 8, !tbaa !5
  %1839 = getelementptr inbounds %class.GTransform_QT, ptr %1838, i32 0, i32 0
  %1840 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %1841 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1840, ptr noundef nonnull align 4 dereferenceable(16) %1839)
  call void @llvm.lifetime.start.p0(i64 12, ptr %365) #7
  %1842 = load ptr, ptr %9, align 8, !tbaa !5
  %1843 = getelementptr inbounds %class.GTransform_QT, ptr %1842, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %366) #7
  %1844 = load ptr, ptr %24, align 8, !tbaa !5
  %1845 = getelementptr inbounds %class.GVector3, ptr %1844, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %367, ptr align 4 %1845, i64 4, i1 false), !tbaa.struct !9
  %1846 = load ptr, ptr %26, align 8, !tbaa !5
  %1847 = getelementptr inbounds %class.GFloat, ptr %367, i32 0, i32 0
  %1848 = load i32, ptr %1847, align 4
  %1849 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %1848, ptr noundef nonnull align 4 dereferenceable(12) %1846)
  store { i64, i32 } %1849, ptr %368, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %366, ptr align 8 %368, i64 12, i1 false)
  %1850 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1843, ptr noundef nonnull align 4 dereferenceable(12) %366)
  store { i64, i32 } %1850, ptr %369, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %365, ptr align 8 %369, i64 12, i1 false)
  %1851 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %1852 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1851, ptr noundef nonnull align 4 dereferenceable(12) %365)
  call void @llvm.lifetime.end.p0(i64 12, ptr %366) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %365) #7
  br label %1886

1853:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 12, ptr %370) #7
  %1854 = load ptr, ptr %26, align 8, !tbaa !5
  %1855 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1854)
  store { i64, i32 } %1855, ptr %371, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %370, ptr align 8 %371, i64 12, i1 false)
  %1856 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %370)
  call void @llvm.lifetime.end.p0(i64 12, ptr %370) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %372) #7
  %1857 = load ptr, ptr %26, align 8, !tbaa !5
  %1858 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1857)
  store { i64, i32 } %1858, ptr %373, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %372, ptr align 8 %373, i64 12, i1 false)
  %1859 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %1860 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1859, ptr noundef nonnull align 4 dereferenceable(12) %372)
  call void @llvm.lifetime.end.p0(i64 12, ptr %372) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %374) #7
  %1861 = load ptr, ptr %27, align 8, !tbaa !5
  %1862 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1861)
  store { i64, i32 } %1862, ptr %375, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %374, ptr align 8 %375, i64 12, i1 false)
  %1863 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %1864 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1863, ptr noundef nonnull align 4 dereferenceable(12) %374)
  call void @llvm.lifetime.end.p0(i64 12, ptr %374) #7
  %1865 = load ptr, ptr %28, align 8, !tbaa !5
  %1866 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %1867 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1866, ptr noundef nonnull align 4 dereferenceable(12) %1865)
  call void @llvm.lifetime.start.p0(i64 12, ptr %376) #7
  %1868 = load ptr, ptr %9, align 8, !tbaa !5
  %1869 = getelementptr inbounds %class.GTransform_QT, ptr %1868, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %377) #7
  %1870 = load ptr, ptr %24, align 8, !tbaa !5
  %1871 = getelementptr inbounds %class.GVector3, ptr %1870, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %378, ptr align 4 %1871, i64 4, i1 false), !tbaa.struct !9
  %1872 = load ptr, ptr %26, align 8, !tbaa !5
  %1873 = getelementptr inbounds %class.GFloat, ptr %378, i32 0, i32 0
  %1874 = load i32, ptr %1873, align 4
  %1875 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %1874, ptr noundef nonnull align 4 dereferenceable(12) %1872)
  store { i64, i32 } %1875, ptr %379, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %377, ptr align 8 %379, i64 12, i1 false)
  %1876 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1869, ptr noundef nonnull align 4 dereferenceable(12) %377)
  store { i64, i32 } %1876, ptr %380, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %376, ptr align 8 %380, i64 12, i1 false)
  %1877 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %1878 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1877, ptr noundef nonnull align 4 dereferenceable(12) %376)
  call void @llvm.lifetime.end.p0(i64 12, ptr %377) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %376) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %381) #7
  %1879 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %1880 = getelementptr inbounds { i64, i64 }, ptr %381, i32 0, i32 0
  %1881 = extractvalue { i64, i64 } %1879, 0
  store i64 %1881, ptr %1880, align 4
  %1882 = getelementptr inbounds { i64, i64 }, ptr %381, i32 0, i32 1
  %1883 = extractvalue { i64, i64 } %1879, 1
  store i64 %1883, ptr %1882, align 4
  %1884 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %1885 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1884, ptr noundef nonnull align 4 dereferenceable(16) %381)
  call void @llvm.lifetime.end.p0(i64 16, ptr %381) #7
  br label %1886

1886:                                             ; preds = %1853, %1835
  %1887 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 0, ptr %1887, align 1, !tbaa !14
  %1888 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %382) #7
  %1889 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %364)
  store { i64, i32 } %1889, ptr %383, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %382, ptr align 8 %383, i64 12, i1 false)
  %1890 = load ptr, ptr %24, align 8, !tbaa !5
  %1891 = getelementptr inbounds %class.GVector3, ptr %1890, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %384, ptr align 4 %1891, i64 4, i1 false), !tbaa.struct !9
  %1892 = load ptr, ptr %24, align 8, !tbaa !5
  %1893 = getelementptr inbounds %class.GVector3, ptr %1892, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %385, ptr align 4 %1893, i64 4, i1 false), !tbaa.struct !9
  %1894 = load ptr, ptr %25, align 8, !tbaa !5
  %1895 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %386, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %1896 = getelementptr inbounds %class.GFloat, ptr %384, i32 0, i32 0
  %1897 = load i32, ptr %1896, align 4
  %1898 = getelementptr inbounds %class.GFloat, ptr %385, i32 0, i32 0
  %1899 = load i32, ptr %1898, align 4
  %1900 = getelementptr inbounds %class.GFloat, ptr %386, i32 0, i32 0
  %1901 = load i32, ptr %1900, align 4
  %1902 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %1888, ptr noundef nonnull align 4 dereferenceable(12) %382, i32 %1897, i32 %1899, ptr noundef nonnull align 4 dereferenceable(12) %1894, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %1895, i32 %1901)
  store i32 %1902, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %382) #7
  store i32 1, ptr %63, align 4
  br label %2266

1903:                                             ; preds = %1820
  %1904 = load ptr, ptr %26, align 8, !tbaa !5
  %1905 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %1906 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1905, ptr noundef nonnull align 4 dereferenceable(12) %1904)
  %1907 = load i32, ptr %360, align 4, !tbaa !10
  %1908 = icmp ne i32 %1907, 0
  br i1 %1908, label %1909, label %1929

1909:                                             ; preds = %1903
  %1910 = load ptr, ptr %27, align 8, !tbaa !5
  %1911 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %1910)
  %1912 = load ptr, ptr %27, align 8, !tbaa !5
  %1913 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %1914 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1913, ptr noundef nonnull align 4 dereferenceable(12) %1912)
  %1915 = load ptr, ptr %28, align 8, !tbaa !5
  %1916 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %1917 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1916, ptr noundef nonnull align 4 dereferenceable(12) %1915)
  call void @llvm.lifetime.start.p0(i64 12, ptr %387) #7
  %1918 = load ptr, ptr %9, align 8, !tbaa !5
  %1919 = getelementptr inbounds %class.GTransform_QT, ptr %1918, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %388) #7
  %1920 = load ptr, ptr %24, align 8, !tbaa !5
  %1921 = getelementptr inbounds %class.GVector3, ptr %1920, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %389, ptr align 4 %1921, i64 4, i1 false), !tbaa.struct !9
  %1922 = load ptr, ptr %27, align 8, !tbaa !5
  %1923 = getelementptr inbounds %class.GFloat, ptr %389, i32 0, i32 0
  %1924 = load i32, ptr %1923, align 4
  %1925 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %1924, ptr noundef nonnull align 4 dereferenceable(12) %1922)
  store { i64, i32 } %1925, ptr %390, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %388, ptr align 8 %390, i64 12, i1 false)
  %1926 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1919, ptr noundef nonnull align 4 dereferenceable(12) %388)
  store { i64, i32 } %1926, ptr %391, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %387, ptr align 8 %391, i64 12, i1 false)
  %1927 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %1928 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1927, ptr noundef nonnull align 4 dereferenceable(12) %387)
  call void @llvm.lifetime.end.p0(i64 12, ptr %388) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %387) #7
  br label %1952

1929:                                             ; preds = %1903
  call void @llvm.lifetime.start.p0(i64 12, ptr %392) #7
  %1930 = load ptr, ptr %27, align 8, !tbaa !5
  %1931 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1930)
  store { i64, i32 } %1931, ptr %393, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %392, ptr align 8 %393, i64 12, i1 false)
  %1932 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %392)
  call void @llvm.lifetime.end.p0(i64 12, ptr %392) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %394) #7
  %1933 = load ptr, ptr %27, align 8, !tbaa !5
  %1934 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1933)
  store { i64, i32 } %1934, ptr %395, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %394, ptr align 8 %395, i64 12, i1 false)
  %1935 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %1936 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1935, ptr noundef nonnull align 4 dereferenceable(12) %394)
  call void @llvm.lifetime.end.p0(i64 12, ptr %394) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %396) #7
  %1937 = load ptr, ptr %28, align 8, !tbaa !5
  %1938 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %1937)
  store { i64, i32 } %1938, ptr %397, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %396, ptr align 8 %397, i64 12, i1 false)
  %1939 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %1940 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1939, ptr noundef nonnull align 4 dereferenceable(12) %396)
  call void @llvm.lifetime.end.p0(i64 12, ptr %396) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %398) #7
  %1941 = load ptr, ptr %9, align 8, !tbaa !5
  %1942 = getelementptr inbounds %class.GTransform_QT, ptr %1941, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %399) #7
  %1943 = load ptr, ptr %24, align 8, !tbaa !5
  %1944 = getelementptr inbounds %class.GVector3, ptr %1943, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %400, ptr align 4 %1944, i64 4, i1 false), !tbaa.struct !9
  %1945 = load ptr, ptr %27, align 8, !tbaa !5
  %1946 = getelementptr inbounds %class.GFloat, ptr %400, i32 0, i32 0
  %1947 = load i32, ptr %1946, align 4
  %1948 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %1947, ptr noundef nonnull align 4 dereferenceable(12) %1945)
  store { i64, i32 } %1948, ptr %401, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %399, ptr align 8 %401, i64 12, i1 false)
  %1949 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1942, ptr noundef nonnull align 4 dereferenceable(12) %399)
  store { i64, i32 } %1949, ptr %402, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %398, ptr align 8 %402, i64 12, i1 false)
  %1950 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %1951 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1950, ptr noundef nonnull align 4 dereferenceable(12) %398)
  call void @llvm.lifetime.end.p0(i64 12, ptr %399) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %398) #7
  br label %1952

1952:                                             ; preds = %1929, %1909
  call void @llvm.lifetime.start.p0(i64 16, ptr %403) #7
  %1953 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %1954 = getelementptr inbounds { i64, i64 }, ptr %403, i32 0, i32 0
  %1955 = extractvalue { i64, i64 } %1953, 0
  store i64 %1955, ptr %1954, align 4
  %1956 = getelementptr inbounds { i64, i64 }, ptr %403, i32 0, i32 1
  %1957 = extractvalue { i64, i64 } %1953, 1
  store i64 %1957, ptr %1956, align 4
  %1958 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %1959 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %1958, ptr noundef nonnull align 4 dereferenceable(16) %403)
  call void @llvm.lifetime.end.p0(i64 16, ptr %403) #7
  %1960 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 0, ptr %1960, align 1, !tbaa !14
  %1961 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %404) #7
  %1962 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %364)
  store { i64, i32 } %1962, ptr %405, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %404, ptr align 8 %405, i64 12, i1 false)
  %1963 = load ptr, ptr %24, align 8, !tbaa !5
  %1964 = getelementptr inbounds %class.GVector3, ptr %1963, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %406, ptr align 4 %1964, i64 4, i1 false), !tbaa.struct !9
  %1965 = load ptr, ptr %24, align 8, !tbaa !5
  %1966 = getelementptr inbounds %class.GVector3, ptr %1965, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %407, ptr align 4 %1966, i64 4, i1 false), !tbaa.struct !9
  %1967 = load ptr, ptr %25, align 8, !tbaa !5
  %1968 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %408, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %1969 = getelementptr inbounds %class.GFloat, ptr %406, i32 0, i32 0
  %1970 = load i32, ptr %1969, align 4
  %1971 = getelementptr inbounds %class.GFloat, ptr %407, i32 0, i32 0
  %1972 = load i32, ptr %1971, align 4
  %1973 = getelementptr inbounds %class.GFloat, ptr %408, i32 0, i32 0
  %1974 = load i32, ptr %1973, align 4
  %1975 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %1961, ptr noundef nonnull align 4 dereferenceable(12) %404, i32 %1970, i32 %1972, ptr noundef nonnull align 4 dereferenceable(12) %1967, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %1968, i32 %1974)
  store i32 %1975, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %404) #7
  store i32 1, ptr %63, align 4
  br label %2266

1976:                                             ; preds = %1820
  %1977 = load ptr, ptr %27, align 8, !tbaa !5
  %1978 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %1979 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1978, ptr noundef nonnull align 4 dereferenceable(12) %1977)
  %1980 = load i32, ptr %360, align 4, !tbaa !10
  %1981 = icmp ne i32 %1980, 0
  br i1 %1981, label %1982, label %2002

1982:                                             ; preds = %1976
  %1983 = load ptr, ptr %28, align 8, !tbaa !5
  %1984 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %1983)
  %1985 = load ptr, ptr %28, align 8, !tbaa !5
  %1986 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %1987 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1986, ptr noundef nonnull align 4 dereferenceable(12) %1985)
  %1988 = load ptr, ptr %26, align 8, !tbaa !5
  %1989 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %1990 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1989, ptr noundef nonnull align 4 dereferenceable(12) %1988)
  call void @llvm.lifetime.start.p0(i64 12, ptr %409) #7
  %1991 = load ptr, ptr %9, align 8, !tbaa !5
  %1992 = getelementptr inbounds %class.GTransform_QT, ptr %1991, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %410) #7
  %1993 = load ptr, ptr %24, align 8, !tbaa !5
  %1994 = getelementptr inbounds %class.GVector3, ptr %1993, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %411, ptr align 4 %1994, i64 4, i1 false), !tbaa.struct !9
  %1995 = load ptr, ptr %28, align 8, !tbaa !5
  %1996 = getelementptr inbounds %class.GFloat, ptr %411, i32 0, i32 0
  %1997 = load i32, ptr %1996, align 4
  %1998 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %1997, ptr noundef nonnull align 4 dereferenceable(12) %1995)
  store { i64, i32 } %1998, ptr %412, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %410, ptr align 8 %412, i64 12, i1 false)
  %1999 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %1992, ptr noundef nonnull align 4 dereferenceable(12) %410)
  store { i64, i32 } %1999, ptr %413, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %409, ptr align 8 %413, i64 12, i1 false)
  %2000 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2001 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2000, ptr noundef nonnull align 4 dereferenceable(12) %409)
  call void @llvm.lifetime.end.p0(i64 12, ptr %410) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %409) #7
  br label %2025

2002:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 12, ptr %414) #7
  %2003 = load ptr, ptr %28, align 8, !tbaa !5
  %2004 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2003)
  store { i64, i32 } %2004, ptr %415, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %414, ptr align 8 %415, i64 12, i1 false)
  %2005 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %414)
  call void @llvm.lifetime.end.p0(i64 12, ptr %414) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %416) #7
  %2006 = load ptr, ptr %28, align 8, !tbaa !5
  %2007 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2006)
  store { i64, i32 } %2007, ptr %417, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %416, ptr align 8 %417, i64 12, i1 false)
  %2008 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2009 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2008, ptr noundef nonnull align 4 dereferenceable(12) %416)
  call void @llvm.lifetime.end.p0(i64 12, ptr %416) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %418) #7
  %2010 = load ptr, ptr %26, align 8, !tbaa !5
  %2011 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2010)
  store { i64, i32 } %2011, ptr %419, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %418, ptr align 8 %419, i64 12, i1 false)
  %2012 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2013 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2012, ptr noundef nonnull align 4 dereferenceable(12) %418)
  call void @llvm.lifetime.end.p0(i64 12, ptr %418) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %420) #7
  %2014 = load ptr, ptr %9, align 8, !tbaa !5
  %2015 = getelementptr inbounds %class.GTransform_QT, ptr %2014, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %421) #7
  %2016 = load ptr, ptr %24, align 8, !tbaa !5
  %2017 = getelementptr inbounds %class.GVector3, ptr %2016, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %422, ptr align 4 %2017, i64 4, i1 false), !tbaa.struct !9
  %2018 = load ptr, ptr %28, align 8, !tbaa !5
  %2019 = getelementptr inbounds %class.GFloat, ptr %422, i32 0, i32 0
  %2020 = load i32, ptr %2019, align 4
  %2021 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2020, ptr noundef nonnull align 4 dereferenceable(12) %2018)
  store { i64, i32 } %2021, ptr %423, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %421, ptr align 8 %423, i64 12, i1 false)
  %2022 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2015, ptr noundef nonnull align 4 dereferenceable(12) %421)
  store { i64, i32 } %2022, ptr %424, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %420, ptr align 8 %424, i64 12, i1 false)
  %2023 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2024 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2023, ptr noundef nonnull align 4 dereferenceable(12) %420)
  call void @llvm.lifetime.end.p0(i64 12, ptr %421) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %420) #7
  br label %2025

2025:                                             ; preds = %2002, %1982
  call void @llvm.lifetime.start.p0(i64 16, ptr %425) #7
  %2026 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %2027 = getelementptr inbounds { i64, i64 }, ptr %425, i32 0, i32 0
  %2028 = extractvalue { i64, i64 } %2026, 0
  store i64 %2028, ptr %2027, align 4
  %2029 = getelementptr inbounds { i64, i64 }, ptr %425, i32 0, i32 1
  %2030 = extractvalue { i64, i64 } %2026, 1
  store i64 %2030, ptr %2029, align 4
  %2031 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %2032 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2031, ptr noundef nonnull align 4 dereferenceable(16) %425)
  call void @llvm.lifetime.end.p0(i64 16, ptr %425) #7
  %2033 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 0, ptr %2033, align 1, !tbaa !14
  %2034 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %426) #7
  %2035 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %364)
  store { i64, i32 } %2035, ptr %427, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %426, ptr align 8 %427, i64 12, i1 false)
  %2036 = load ptr, ptr %24, align 8, !tbaa !5
  %2037 = getelementptr inbounds %class.GVector3, ptr %2036, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %428, ptr align 4 %2037, i64 4, i1 false), !tbaa.struct !9
  %2038 = load ptr, ptr %24, align 8, !tbaa !5
  %2039 = getelementptr inbounds %class.GVector3, ptr %2038, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %429, ptr align 4 %2039, i64 4, i1 false), !tbaa.struct !9
  %2040 = load ptr, ptr %25, align 8, !tbaa !5
  %2041 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %430, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %2042 = getelementptr inbounds %class.GFloat, ptr %428, i32 0, i32 0
  %2043 = load i32, ptr %2042, align 4
  %2044 = getelementptr inbounds %class.GFloat, ptr %429, i32 0, i32 0
  %2045 = load i32, ptr %2044, align 4
  %2046 = getelementptr inbounds %class.GFloat, ptr %430, i32 0, i32 0
  %2047 = load i32, ptr %2046, align 4
  %2048 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %2034, ptr noundef nonnull align 4 dereferenceable(12) %426, i32 %2043, i32 %2045, ptr noundef nonnull align 4 dereferenceable(12) %2040, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %2041, i32 %2047)
  store i32 %2048, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %426) #7
  store i32 1, ptr %63, align 4
  br label %2266

2049:                                             ; preds = %1820
  %2050 = load i32, ptr %360, align 4, !tbaa !10
  %2051 = icmp ne i32 %2050, 0
  br i1 %2051, label %2052, label %2084

2052:                                             ; preds = %2049
  %2053 = load ptr, ptr %29, align 8, !tbaa !5
  %2054 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %2053)
  call void @llvm.lifetime.start.p0(i64 12, ptr %431) #7
  %2055 = load ptr, ptr %29, align 8, !tbaa !5
  %2056 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2055)
  store { i64, i32 } %2056, ptr %432, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %431, ptr align 8 %432, i64 12, i1 false)
  %2057 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2058 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2057, ptr noundef nonnull align 4 dereferenceable(12) %431)
  call void @llvm.lifetime.end.p0(i64 12, ptr %431) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %433) #7
  %2059 = load ptr, ptr %30, align 8, !tbaa !5
  %2060 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2059)
  store { i64, i32 } %2060, ptr %434, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %433, ptr align 8 %434, i64 12, i1 false)
  %2061 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2062 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2061, ptr noundef nonnull align 4 dereferenceable(12) %433)
  call void @llvm.lifetime.end.p0(i64 12, ptr %433) #7
  %2063 = load ptr, ptr %31, align 8, !tbaa !5
  %2064 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %2065 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2064, ptr noundef nonnull align 4 dereferenceable(12) %2063)
  call void @llvm.lifetime.start.p0(i64 12, ptr %435) #7
  %2066 = load ptr, ptr %11, align 8, !tbaa !5
  %2067 = getelementptr inbounds %class.GTransform_QT, ptr %2066, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %436) #7
  %2068 = load ptr, ptr %25, align 8, !tbaa !5
  %2069 = getelementptr inbounds %class.GVector3, ptr %2068, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %437, ptr align 4 %2069, i64 4, i1 false), !tbaa.struct !9
  %2070 = load ptr, ptr %29, align 8, !tbaa !5
  %2071 = getelementptr inbounds %class.GFloat, ptr %437, i32 0, i32 0
  %2072 = load i32, ptr %2071, align 4
  %2073 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2072, ptr noundef nonnull align 4 dereferenceable(12) %2070)
  store { i64, i32 } %2073, ptr %438, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %436, ptr align 8 %438, i64 12, i1 false)
  %2074 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2067, ptr noundef nonnull align 4 dereferenceable(12) %436)
  store { i64, i32 } %2074, ptr %439, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %435, ptr align 8 %439, i64 12, i1 false)
  %2075 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2076 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2075, ptr noundef nonnull align 4 dereferenceable(12) %435)
  call void @llvm.lifetime.end.p0(i64 12, ptr %436) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %435) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %440) #7
  %2077 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %2078 = getelementptr inbounds { i64, i64 }, ptr %440, i32 0, i32 0
  %2079 = extractvalue { i64, i64 } %2077, 0
  store i64 %2079, ptr %2078, align 4
  %2080 = getelementptr inbounds { i64, i64 }, ptr %440, i32 0, i32 1
  %2081 = extractvalue { i64, i64 } %2077, 1
  store i64 %2081, ptr %2080, align 4
  %2082 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %2083 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2082, ptr noundef nonnull align 4 dereferenceable(16) %440)
  call void @llvm.lifetime.end.p0(i64 16, ptr %440) #7
  br label %2103

2084:                                             ; preds = %2049
  call void @llvm.lifetime.start.p0(i64 12, ptr %441) #7
  %2085 = load ptr, ptr %29, align 8, !tbaa !5
  %2086 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2085)
  store { i64, i32 } %2086, ptr %442, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %441, ptr align 8 %442, i64 12, i1 false)
  %2087 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %441)
  call void @llvm.lifetime.end.p0(i64 12, ptr %441) #7
  %2088 = load ptr, ptr %11, align 8, !tbaa !5
  %2089 = getelementptr inbounds %class.GTransform_QT, ptr %2088, i32 0, i32 0
  %2090 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %2091 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2090, ptr noundef nonnull align 4 dereferenceable(16) %2089)
  call void @llvm.lifetime.start.p0(i64 12, ptr %443) #7
  %2092 = load ptr, ptr %11, align 8, !tbaa !5
  %2093 = getelementptr inbounds %class.GTransform_QT, ptr %2092, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %444) #7
  %2094 = load ptr, ptr %25, align 8, !tbaa !5
  %2095 = getelementptr inbounds %class.GVector3, ptr %2094, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %445, ptr align 4 %2095, i64 4, i1 false), !tbaa.struct !9
  %2096 = load ptr, ptr %29, align 8, !tbaa !5
  %2097 = getelementptr inbounds %class.GFloat, ptr %445, i32 0, i32 0
  %2098 = load i32, ptr %2097, align 4
  %2099 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2098, ptr noundef nonnull align 4 dereferenceable(12) %2096)
  store { i64, i32 } %2099, ptr %446, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %444, ptr align 8 %446, i64 12, i1 false)
  %2100 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2093, ptr noundef nonnull align 4 dereferenceable(12) %444)
  store { i64, i32 } %2100, ptr %447, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %443, ptr align 8 %447, i64 12, i1 false)
  %2101 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2102 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2101, ptr noundef nonnull align 4 dereferenceable(12) %443)
  call void @llvm.lifetime.end.p0(i64 12, ptr %444) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %443) #7
  br label %2103

2103:                                             ; preds = %2084, %2052
  %2104 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 1, ptr %2104, align 1, !tbaa !14
  %2105 = load ptr, ptr %12, align 8, !tbaa !5
  %2106 = load ptr, ptr %25, align 8, !tbaa !5
  %2107 = getelementptr inbounds %class.GVector3, ptr %2106, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %448, ptr align 4 %2107, i64 4, i1 false), !tbaa.struct !9
  %2108 = load ptr, ptr %25, align 8, !tbaa !5
  %2109 = getelementptr inbounds %class.GVector3, ptr %2108, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %449, ptr align 4 %2109, i64 4, i1 false), !tbaa.struct !9
  %2110 = load ptr, ptr %24, align 8, !tbaa !5
  %2111 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %450, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %2112 = getelementptr inbounds %class.GFloat, ptr %448, i32 0, i32 0
  %2113 = load i32, ptr %2112, align 4
  %2114 = getelementptr inbounds %class.GFloat, ptr %449, i32 0, i32 0
  %2115 = load i32, ptr %2114, align 4
  %2116 = getelementptr inbounds %class.GFloat, ptr %450, i32 0, i32 0
  %2117 = load i32, ptr %2116, align 4
  %2118 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %2105, ptr noundef nonnull align 4 dereferenceable(12) %364, i32 %2113, i32 %2115, ptr noundef nonnull align 4 dereferenceable(12) %2110, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %2111, i32 %2117)
  store i32 %2118, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2266

2119:                                             ; preds = %1820
  %2120 = load ptr, ptr %29, align 8, !tbaa !5
  %2121 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %2122 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2121, ptr noundef nonnull align 4 dereferenceable(12) %2120)
  %2123 = load i32, ptr %360, align 4, !tbaa !10
  %2124 = icmp ne i32 %2123, 0
  br i1 %2124, label %2125, label %2147

2125:                                             ; preds = %2119
  %2126 = load ptr, ptr %30, align 8, !tbaa !5
  %2127 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %2126)
  call void @llvm.lifetime.start.p0(i64 12, ptr %451) #7
  %2128 = load ptr, ptr %30, align 8, !tbaa !5
  %2129 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2128)
  store { i64, i32 } %2129, ptr %452, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %451, ptr align 8 %452, i64 12, i1 false)
  %2130 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2131 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2130, ptr noundef nonnull align 4 dereferenceable(12) %451)
  call void @llvm.lifetime.end.p0(i64 12, ptr %451) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %453) #7
  %2132 = load ptr, ptr %31, align 8, !tbaa !5
  %2133 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2132)
  store { i64, i32 } %2133, ptr %454, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %453, ptr align 8 %454, i64 12, i1 false)
  %2134 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2135 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2134, ptr noundef nonnull align 4 dereferenceable(12) %453)
  call void @llvm.lifetime.end.p0(i64 12, ptr %453) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %455) #7
  %2136 = load ptr, ptr %11, align 8, !tbaa !5
  %2137 = getelementptr inbounds %class.GTransform_QT, ptr %2136, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %456) #7
  %2138 = load ptr, ptr %25, align 8, !tbaa !5
  %2139 = getelementptr inbounds %class.GVector3, ptr %2138, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %457, ptr align 4 %2139, i64 4, i1 false), !tbaa.struct !9
  %2140 = load ptr, ptr %30, align 8, !tbaa !5
  %2141 = getelementptr inbounds %class.GFloat, ptr %457, i32 0, i32 0
  %2142 = load i32, ptr %2141, align 4
  %2143 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2142, ptr noundef nonnull align 4 dereferenceable(12) %2140)
  store { i64, i32 } %2143, ptr %458, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %456, ptr align 8 %458, i64 12, i1 false)
  %2144 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2137, ptr noundef nonnull align 4 dereferenceable(12) %456)
  store { i64, i32 } %2144, ptr %459, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %455, ptr align 8 %459, i64 12, i1 false)
  %2145 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2146 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2145, ptr noundef nonnull align 4 dereferenceable(12) %455)
  call void @llvm.lifetime.end.p0(i64 12, ptr %456) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %455) #7
  br label %2171

2147:                                             ; preds = %2119
  call void @llvm.lifetime.start.p0(i64 12, ptr %460) #7
  %2148 = load ptr, ptr %30, align 8, !tbaa !5
  %2149 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2148)
  store { i64, i32 } %2149, ptr %461, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %460, ptr align 8 %461, i64 12, i1 false)
  %2150 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %460)
  call void @llvm.lifetime.end.p0(i64 12, ptr %460) #7
  %2151 = load ptr, ptr %30, align 8, !tbaa !5
  %2152 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2153 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2152, ptr noundef nonnull align 4 dereferenceable(12) %2151)
  %2154 = load ptr, ptr %31, align 8, !tbaa !5
  %2155 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2156 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2155, ptr noundef nonnull align 4 dereferenceable(12) %2154)
  %2157 = load ptr, ptr %29, align 8, !tbaa !5
  %2158 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %2159 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2158, ptr noundef nonnull align 4 dereferenceable(12) %2157)
  call void @llvm.lifetime.start.p0(i64 12, ptr %462) #7
  %2160 = load ptr, ptr %11, align 8, !tbaa !5
  %2161 = getelementptr inbounds %class.GTransform_QT, ptr %2160, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %463) #7
  %2162 = load ptr, ptr %25, align 8, !tbaa !5
  %2163 = getelementptr inbounds %class.GVector3, ptr %2162, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %464, ptr align 4 %2163, i64 4, i1 false), !tbaa.struct !9
  %2164 = load ptr, ptr %30, align 8, !tbaa !5
  %2165 = getelementptr inbounds %class.GFloat, ptr %464, i32 0, i32 0
  %2166 = load i32, ptr %2165, align 4
  %2167 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2166, ptr noundef nonnull align 4 dereferenceable(12) %2164)
  store { i64, i32 } %2167, ptr %465, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %463, ptr align 8 %465, i64 12, i1 false)
  %2168 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2161, ptr noundef nonnull align 4 dereferenceable(12) %463)
  store { i64, i32 } %2168, ptr %466, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %462, ptr align 8 %466, i64 12, i1 false)
  %2169 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2170 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2169, ptr noundef nonnull align 4 dereferenceable(12) %462)
  call void @llvm.lifetime.end.p0(i64 12, ptr %463) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %462) #7
  br label %2171

2171:                                             ; preds = %2147, %2125
  call void @llvm.lifetime.start.p0(i64 16, ptr %467) #7
  %2172 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %2173 = getelementptr inbounds { i64, i64 }, ptr %467, i32 0, i32 0
  %2174 = extractvalue { i64, i64 } %2172, 0
  store i64 %2174, ptr %2173, align 4
  %2175 = getelementptr inbounds { i64, i64 }, ptr %467, i32 0, i32 1
  %2176 = extractvalue { i64, i64 } %2172, 1
  store i64 %2176, ptr %2175, align 4
  %2177 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %2178 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2177, ptr noundef nonnull align 4 dereferenceable(16) %467)
  call void @llvm.lifetime.end.p0(i64 16, ptr %467) #7
  %2179 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 1, ptr %2179, align 1, !tbaa !14
  %2180 = load ptr, ptr %12, align 8, !tbaa !5
  %2181 = load ptr, ptr %25, align 8, !tbaa !5
  %2182 = getelementptr inbounds %class.GVector3, ptr %2181, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %468, ptr align 4 %2182, i64 4, i1 false), !tbaa.struct !9
  %2183 = load ptr, ptr %25, align 8, !tbaa !5
  %2184 = getelementptr inbounds %class.GVector3, ptr %2183, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %469, ptr align 4 %2184, i64 4, i1 false), !tbaa.struct !9
  %2185 = load ptr, ptr %24, align 8, !tbaa !5
  %2186 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %470, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %2187 = getelementptr inbounds %class.GFloat, ptr %468, i32 0, i32 0
  %2188 = load i32, ptr %2187, align 4
  %2189 = getelementptr inbounds %class.GFloat, ptr %469, i32 0, i32 0
  %2190 = load i32, ptr %2189, align 4
  %2191 = getelementptr inbounds %class.GFloat, ptr %470, i32 0, i32 0
  %2192 = load i32, ptr %2191, align 4
  %2193 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %2180, ptr noundef nonnull align 4 dereferenceable(12) %364, i32 %2188, i32 %2190, ptr noundef nonnull align 4 dereferenceable(12) %2185, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %2186, i32 %2192)
  store i32 %2193, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2266

2194:                                             ; preds = %1820
  %2195 = load ptr, ptr %30, align 8, !tbaa !5
  %2196 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 2)
  %2197 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2196, ptr noundef nonnull align 4 dereferenceable(12) %2195)
  %2198 = load i32, ptr %360, align 4, !tbaa !10
  %2199 = icmp ne i32 %2198, 0
  br i1 %2199, label %2200, label %2222

2200:                                             ; preds = %2194
  %2201 = load ptr, ptr %31, align 8, !tbaa !5
  %2202 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %2201)
  call void @llvm.lifetime.start.p0(i64 12, ptr %471) #7
  %2203 = load ptr, ptr %31, align 8, !tbaa !5
  %2204 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2203)
  store { i64, i32 } %2204, ptr %472, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %471, ptr align 8 %472, i64 12, i1 false)
  %2205 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2206 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2205, ptr noundef nonnull align 4 dereferenceable(12) %471)
  call void @llvm.lifetime.end.p0(i64 12, ptr %471) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %473) #7
  %2207 = load ptr, ptr %29, align 8, !tbaa !5
  %2208 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2207)
  store { i64, i32 } %2208, ptr %474, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %473, ptr align 8 %474, i64 12, i1 false)
  %2209 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2210 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2209, ptr noundef nonnull align 4 dereferenceable(12) %473)
  call void @llvm.lifetime.end.p0(i64 12, ptr %473) #7
  call void @llvm.lifetime.start.p0(i64 12, ptr %475) #7
  %2211 = load ptr, ptr %11, align 8, !tbaa !5
  %2212 = getelementptr inbounds %class.GTransform_QT, ptr %2211, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %476) #7
  %2213 = load ptr, ptr %25, align 8, !tbaa !5
  %2214 = getelementptr inbounds %class.GVector3, ptr %2213, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %477, ptr align 4 %2214, i64 4, i1 false), !tbaa.struct !9
  %2215 = load ptr, ptr %31, align 8, !tbaa !5
  %2216 = getelementptr inbounds %class.GFloat, ptr %477, i32 0, i32 0
  %2217 = load i32, ptr %2216, align 4
  %2218 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2217, ptr noundef nonnull align 4 dereferenceable(12) %2215)
  store { i64, i32 } %2218, ptr %478, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %476, ptr align 8 %478, i64 12, i1 false)
  %2219 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2212, ptr noundef nonnull align 4 dereferenceable(12) %476)
  store { i64, i32 } %2219, ptr %479, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %475, ptr align 8 %479, i64 12, i1 false)
  %2220 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2221 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2220, ptr noundef nonnull align 4 dereferenceable(12) %475)
  call void @llvm.lifetime.end.p0(i64 12, ptr %476) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %475) #7
  br label %2243

2222:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 12, ptr %480) #7
  %2223 = load ptr, ptr %31, align 8, !tbaa !5
  %2224 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %2223)
  store { i64, i32 } %2224, ptr %481, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %480, ptr align 8 %481, i64 12, i1 false)
  %2225 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %364, ptr noundef nonnull align 4 dereferenceable(12) %480)
  call void @llvm.lifetime.end.p0(i64 12, ptr %480) #7
  %2226 = load ptr, ptr %31, align 8, !tbaa !5
  %2227 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 0)
  %2228 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2227, ptr noundef nonnull align 4 dereferenceable(12) %2226)
  %2229 = load ptr, ptr %29, align 8, !tbaa !5
  %2230 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %363, i32 noundef 1)
  %2231 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2230, ptr noundef nonnull align 4 dereferenceable(12) %2229)
  call void @llvm.lifetime.start.p0(i64 12, ptr %482) #7
  %2232 = load ptr, ptr %11, align 8, !tbaa !5
  %2233 = getelementptr inbounds %class.GTransform_QT, ptr %2232, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %483) #7
  %2234 = load ptr, ptr %25, align 8, !tbaa !5
  %2235 = getelementptr inbounds %class.GVector3, ptr %2234, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %484, ptr align 4 %2235, i64 4, i1 false), !tbaa.struct !9
  %2236 = load ptr, ptr %31, align 8, !tbaa !5
  %2237 = getelementptr inbounds %class.GFloat, ptr %484, i32 0, i32 0
  %2238 = load i32, ptr %2237, align 4
  %2239 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %2238, ptr noundef nonnull align 4 dereferenceable(12) %2236)
  store { i64, i32 } %2239, ptr %485, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %483, ptr align 8 %485, i64 12, i1 false)
  %2240 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2233, ptr noundef nonnull align 4 dereferenceable(12) %483)
  store { i64, i32 } %2240, ptr %486, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %482, ptr align 8 %486, i64 12, i1 false)
  %2241 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 1
  %2242 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %2241, ptr noundef nonnull align 4 dereferenceable(12) %482)
  call void @llvm.lifetime.end.p0(i64 12, ptr %483) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %482) #7
  br label %2243

2243:                                             ; preds = %2222, %2200
  call void @llvm.lifetime.start.p0(i64 16, ptr %487) #7
  %2244 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %363)
  %2245 = getelementptr inbounds { i64, i64 }, ptr %487, i32 0, i32 0
  %2246 = extractvalue { i64, i64 } %2244, 0
  store i64 %2246, ptr %2245, align 4
  %2247 = getelementptr inbounds { i64, i64 }, ptr %487, i32 0, i32 1
  %2248 = extractvalue { i64, i64 } %2244, 1
  store i64 %2248, ptr %2247, align 4
  %2249 = getelementptr inbounds %class.GTransform_QT, ptr %362, i32 0, i32 0
  %2250 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %2249, ptr noundef nonnull align 4 dereferenceable(16) %487)
  call void @llvm.lifetime.end.p0(i64 16, ptr %487) #7
  %2251 = load ptr, ptr %13, align 8, !tbaa !5
  store i8 1, ptr %2251, align 1, !tbaa !14
  %2252 = load ptr, ptr %12, align 8, !tbaa !5
  %2253 = load ptr, ptr %25, align 8, !tbaa !5
  %2254 = getelementptr inbounds %class.GVector3, ptr %2253, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %488, ptr align 4 %2254, i64 4, i1 false), !tbaa.struct !9
  %2255 = load ptr, ptr %25, align 8, !tbaa !5
  %2256 = getelementptr inbounds %class.GVector3, ptr %2255, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %489, ptr align 4 %2256, i64 4, i1 false), !tbaa.struct !9
  %2257 = load ptr, ptr %24, align 8, !tbaa !5
  %2258 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %490, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !9
  %2259 = getelementptr inbounds %class.GFloat, ptr %488, i32 0, i32 0
  %2260 = load i32, ptr %2259, align 4
  %2261 = getelementptr inbounds %class.GFloat, ptr %489, i32 0, i32 0
  %2262 = load i32, ptr %2261, align 4
  %2263 = getelementptr inbounds %class.GFloat, ptr %490, i32 0, i32 0
  %2264 = load i32, ptr %2263, align 4
  %2265 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %2252, ptr noundef nonnull align 4 dereferenceable(12) %364, i32 %2260, i32 %2262, ptr noundef nonnull align 4 dereferenceable(12) %2257, ptr noundef nonnull align 4 dereferenceable(28) %362, ptr noundef nonnull align 4 dereferenceable(28) %2258, i32 %2264)
  store i32 %2265, ptr %7, align 4
  store i32 1, ptr %63, align 4
  br label %2266

2266:                                             ; preds = %2243, %2171, %2103, %2025, %1952, %1886, %1831
  call void @llvm.lifetime.end.p0(i64 12, ptr %364) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %363) #7
  call void @llvm.lifetime.end.p0(i64 28, ptr %362) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %360) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %355) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %354) #7
  br label %2267

2267:                                             ; preds = %2266, %1792, %1115, %1051, %987, %923, %797, %671
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 36, ptr %14) #7
  %2268 = load i32, ptr %7, align 4
  ret i32 %2268
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath11Inv_1000000Ev() #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath7Makef32Eijj(i32 noundef, i32 noundef, i32 noundef) #1 align 2

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

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

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

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

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

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

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

declare { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36)) #6

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 4 dereferenceable(12), i32, i32, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), i32) #5

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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !15, i64 0}
!15 = !{!"bool", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.GFloat = type { i32 }
%class.GVector3 = type { %class.GFloat, %class.GFloat, %class.GFloat }
%class.GMatrix3 = type { [3 x [3 x %class.GFloat]] }
%class.GTransform_QT = type { %class.GQuaternion, %class.GVector3 }
%class.GQuaternion = type { %class.GFloat, %class.GFloat, %class.GFloat, %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: 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: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath3AbsE6GFloat(i32) local_unnamed_addr #1 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 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3 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: 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 i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4), i32) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN14GCollision_Box18Box_Box_Contact_PXERK9GShapeBoxRK13GTransform_QTS2_S5_P17GCollisionContactRb(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, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(1) %5) local_unnamed_addr #4 align 2 {
  %7 = alloca [3 x [3 x %class.GFloat]], align 16
  %8 = alloca [3 x [3 x %class.GFloat]], align 16
  %9 = alloca [3 x %class.GFloat], align 4
  %10 = alloca [6 x %class.GFloat], align 16
  %11 = alloca [6 x %class.GFloat], align 16
  %12 = alloca %class.GFloat, align 4
  %13 = alloca %class.GVector3, align 8
  %14 = alloca %class.GMatrix3, align 4
  %15 = alloca %class.GMatrix3, align 4
  %16 = alloca %class.GFloat, align 4
  %17 = alloca %class.GFloat, align 4
  %18 = alloca %class.GFloat, align 4
  %19 = alloca %class.GFloat, align 4
  %20 = alloca %class.GFloat, align 4
  %21 = alloca %class.GFloat, align 4
  %22 = alloca %class.GFloat, align 4
  %23 = alloca %class.GFloat, align 4
  %24 = alloca %class.GFloat, align 4
  %25 = alloca %class.GFloat, 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 %class.GFloat, align 4
  %39 = alloca %class.GFloat, 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.GFloat, 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.GFloat, 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.GFloat, 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.GFloat, 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 %class.GFloat, align 4
  %84 = alloca %class.GFloat, align 4
  %85 = alloca %class.GFloat, align 4
  %86 = alloca %class.GFloat, align 4
  %87 = alloca %class.GFloat, align 4
  %88 = alloca %class.GFloat, align 4
  %89 = alloca %class.GFloat, align 4
  %90 = alloca %class.GTransform_QT, align 4
  %91 = alloca %class.GMatrix3, align 4
  %92 = alloca %class.GVector3, align 4
  %93 = alloca %class.GVector3, align 8
  %94 = alloca %class.GVector3, align 8
  %95 = alloca %class.GVector3, align 8
  %96 = alloca %class.GVector3, align 8
  %97 = alloca %class.GVector3, align 8
  %98 = alloca %class.GVector3, align 8
  %99 = alloca %class.GVector3, align 8
  %100 = alloca %class.GQuaternion, align 8
  %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.GVector3, align 8
  %107 = alloca %class.GVector3, align 8
  %108 = alloca %class.GVector3, align 8
  %109 = alloca %class.GQuaternion, align 8
  %110 = alloca %class.GVector3, align 8
  %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.GVector3, align 8
  %117 = alloca %class.GVector3, align 8
  %118 = alloca %class.GQuaternion, align 8
  %119 = alloca %class.GVector3, align 8
  %120 = alloca %class.GVector3, align 8
  %121 = alloca %class.GVector3, align 8
  %122 = alloca %class.GVector3, align 8
  %123 = alloca %class.GVector3, align 8
  %124 = alloca %class.GQuaternion, align 8
  %125 = alloca %class.GVector3, align 8
  %126 = alloca %class.GVector3, align 8
  %127 = alloca %class.GVector3, align 8
  %128 = alloca %class.GVector3, align 8
  %129 = alloca %class.GVector3, align 8
  %130 = alloca %class.GVector3, align 8
  %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.GQuaternion, align 8
  %136 = alloca %class.GVector3, align 8
  %137 = alloca %class.GVector3, align 8
  %138 = alloca %class.GVector3, align 8
  %139 = alloca %class.GVector3, align 8
  %140 = alloca %class.GVector3, align 8
  %141 = alloca %class.GVector3, align 8
  %142 = alloca %class.GVector3, align 8
  %143 = alloca %class.GQuaternion, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %7) #6
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %7)
  %.ptr.1 = getelementptr inbounds i8, ptr %7, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.1)
  %.ptr.2 = getelementptr inbounds i8, ptr %7, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.2)
  %.ptr.3 = getelementptr inbounds i8, ptr %7, i64 12
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.3)
  %.ptr.4 = getelementptr inbounds i8, ptr %7, i64 16
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.4)
  %.ptr.5 = getelementptr inbounds i8, ptr %7, i64 20
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.5)
  %.ptr.6 = getelementptr inbounds i8, ptr %7, i64 24
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.6)
  %.ptr.7 = getelementptr inbounds i8, ptr %7, i64 28
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.7)
  %.ptr.8 = getelementptr inbounds i8, ptr %7, i64 32
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr.8)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %8) #6
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %8)
  %.ptr693.1 = getelementptr inbounds i8, ptr %8, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.1)
  %.ptr693.2 = getelementptr inbounds i8, ptr %8, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.2)
  %.ptr693.3 = getelementptr inbounds i8, ptr %8, i64 12
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.3)
  %.ptr693.4 = getelementptr inbounds i8, ptr %8, i64 16
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.4)
  %.ptr693.5 = getelementptr inbounds i8, ptr %8, i64 20
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.5)
  %.ptr693.6 = getelementptr inbounds i8, ptr %8, i64 24
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.6)
  %.ptr693.7 = getelementptr inbounds i8, ptr %8, i64 28
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.7)
  %.ptr693.8 = getelementptr inbounds i8, ptr %8, i64 32
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr693.8)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #6
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %9)
  %.ptr697.1 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1)
  %.ptr697.2 = getelementptr inbounds i8, ptr %9, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %10)
  %.ptr701.1 = getelementptr inbounds i8, ptr %10, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr701.1)
  %.ptr701.2 = getelementptr inbounds i8, ptr %10, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr701.2)
  %.ptr701.3 = getelementptr inbounds i8, ptr %10, i64 12
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr701.3)
  %.ptr701.4 = getelementptr inbounds i8, ptr %10, i64 16
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr701.4)
  %.ptr701.5 = getelementptr inbounds i8, ptr %10, i64 20
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr701.5)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #6
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %11)
  %.ptr705.1 = getelementptr inbounds i8, ptr %11, i64 4
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.1)
  %.ptr705.2 = getelementptr inbounds i8, ptr %11, i64 8
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.2)
  %.ptr705.3 = getelementptr inbounds i8, ptr %11, i64 12
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.3)
  %.ptr705.4 = getelementptr inbounds i8, ptr %11, i64 16
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.4)
  %.ptr705.5 = getelementptr inbounds i8, ptr %11, i64 20
  call void @_ZN6GFloatC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.5)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %144 = call i32 @_ZN5GMath4ZeroEv()
  store i32 %144, ptr %12, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #6
  %145 = getelementptr inbounds i8, ptr %3, i64 16
  %146 = getelementptr inbounds i8, ptr %1, i64 16
  %147 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %146)
  %.fca.0.extract643 = extractvalue { i64, i32 } %147, 0
  %.fca.1.extract644 = extractvalue { i64, i32 } %147, 1
  store i64 %.fca.0.extract643, ptr %13, align 8
  %.sroa.2646.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  store i32 %.fca.1.extract644, ptr %.sroa.2646.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %14) #6
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %14, ptr noundef nonnull align 4 dereferenceable(16) %1)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %15) #6
  call void @_ZN8GMatrix3C2ERK11GQuaternion(ptr noundef nonnull align 4 dereferenceable(36) %15, ptr noundef nonnull align 4 dereferenceable(16) %3)
  %148 = getelementptr inbounds i8, ptr %0, i64 12
  %149 = getelementptr inbounds i8, ptr %2, i64 12
  %150 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %14, i32 noundef 0)
  %151 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %14, i32 noundef 1)
  %152 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %14, i32 noundef 2)
  %153 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %15, i32 noundef 0)
  %154 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %15, i32 noundef 1)
  %155 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK8GMatrix36GetRowEj(ptr noundef nonnull align 4 dereferenceable(36) %15, i32 noundef 2)
  %156 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %150, ptr noundef nonnull align 4 dereferenceable(12) %153)
  store i32 %156, ptr %7, align 16, !tbaa !5
  %157 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %150, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store i32 %157, ptr %.ptr.1, align 4, !tbaa !5
  %158 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %150, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %158, ptr %.ptr.2, align 8, !tbaa !5
  %159 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %150, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %159, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  %160 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %160, ptr %16, align 4
  %.sroa.0472.0.copyload = load i32, ptr %7, align 16, !tbaa !5
  %161 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0472.0.copyload)
  %162 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %16, i32 %161)
  store i32 %162, ptr %8, align 16, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %163 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %163, ptr %17, align 4
  %.sroa.0469.0.copyload = load i32, ptr %.ptr.1, align 4, !tbaa !5
  %164 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0469.0.copyload)
  %165 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %17, i32 %164)
  store i32 %165, ptr %.ptr693.1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  %166 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %166, ptr %18, align 4
  %.sroa.0466.0.copyload = load i32, ptr %.ptr.2, align 8, !tbaa !5
  %167 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0466.0.copyload)
  %168 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %18, i32 %167)
  store i32 %168, ptr %.ptr693.2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  %169 = load i32, ptr %9, align 4, !tbaa !5
  store i32 %169, ptr %10, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  %.sroa.0464.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %170 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0464.0.copyload)
  %171 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %170)
  store i32 %171, ptr %21, align 4
  %172 = getelementptr inbounds i8, ptr %2, i64 16
  %.sroa.0462.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %173 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0462.0.copyload)
  %174 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %21, i32 %173)
  store i32 %174, ptr %20, align 4
  %175 = getelementptr inbounds i8, ptr %2, i64 20
  %.sroa.0460.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %176 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0460.0.copyload)
  %177 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %20, i32 %176)
  store i32 %177, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  %.sroa.0457.0.copyload = load i32, ptr %10, align 16, !tbaa !5
  %178 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0457.0.copyload)
  %179 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %178)
  store i32 %179, ptr %22, align 4
  %180 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %22, i32 %144)
  store i32 %180, ptr %11, align 16, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  %181 = call i32 @_ZN5GMath4ZeroEv()
  %182 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %11, i32 %181)
  br i1 %182, label %.critedge, label %183

183:                                              ; preds = %6
  %184 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %153)
  store i32 %184, ptr %.ptr.3, align 4, !tbaa !5
  %185 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store i32 %185, ptr %.ptr.4, align 16, !tbaa !5
  %186 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %186, ptr %.ptr.5, align 4, !tbaa !5
  %187 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %151, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %187, ptr %.ptr697.1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  %188 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %188, ptr %23, align 4
  %.sroa.0447.0.copyload = load i32, ptr %.ptr.3, align 4, !tbaa !5
  %189 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0447.0.copyload)
  %190 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %23, i32 %189)
  store i32 %190, ptr %.ptr693.3, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  %191 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %191, ptr %24, align 4
  %.sroa.0444.0.copyload = load i32, ptr %.ptr.4, align 16, !tbaa !5
  %192 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0444.0.copyload)
  %193 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %24, i32 %192)
  store i32 %193, ptr %.ptr693.4, align 16, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  %194 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %194, ptr %25, align 4
  %.sroa.0441.0.copyload = load i32, ptr %.ptr.5, align 4, !tbaa !5
  %195 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0441.0.copyload)
  %196 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %25, i32 %195)
  store i32 %196, ptr %.ptr693.5, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  %197 = load i32, ptr %.ptr697.1, align 4, !tbaa !5
  store i32 %197, ptr %.ptr701.1, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  %198 = getelementptr inbounds i8, ptr %0, i64 16
  %.sroa.0438.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %199 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0438.0.copyload)
  %200 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %199)
  store i32 %200, ptr %27, align 4
  %.sroa.0436.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %201 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0436.0.copyload)
  %202 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %27, i32 %201)
  store i32 %202, ptr %26, align 4
  %.sroa.0434.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %203 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0434.0.copyload)
  %204 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 %203)
  store i32 %204, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  %.sroa.0431.0.copyload = load i32, ptr %.ptr701.1, align 4, !tbaa !5
  %205 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0431.0.copyload)
  %206 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %205)
  store i32 %206, ptr %28, align 4
  %.sroa.0430.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %207 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %28, i32 %.sroa.0430.0.copyload)
  store i32 %207, ptr %.ptr705.1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  %208 = call i32 @_ZN5GMath4ZeroEv()
  %209 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.1, i32 %208)
  br i1 %209, label %.critedge, label %210

210:                                              ; preds = %183
  %211 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %152, ptr noundef nonnull align 4 dereferenceable(12) %153)
  store i32 %211, ptr %.ptr.6, align 8, !tbaa !5
  %212 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %152, ptr noundef nonnull align 4 dereferenceable(12) %154)
  store i32 %212, ptr %.ptr.7, align 4, !tbaa !5
  %213 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %152, ptr noundef nonnull align 4 dereferenceable(12) %155)
  store i32 %213, ptr %.ptr.8, align 16, !tbaa !5
  %214 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %152, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %214, ptr %.ptr697.2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  %215 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %215, ptr %29, align 4
  %.sroa.0422.0.copyload = load i32, ptr %.ptr.6, align 8, !tbaa !5
  %216 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0422.0.copyload)
  %217 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %29, i32 %216)
  store i32 %217, ptr %.ptr693.6, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  %218 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %218, ptr %30, align 4
  %.sroa.0419.0.copyload = load i32, ptr %.ptr.7, align 4, !tbaa !5
  %219 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0419.0.copyload)
  %220 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %30, i32 %219)
  store i32 %220, ptr %.ptr693.7, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  %221 = call i32 @_ZN5GMath11Inv_1000000Ev()
  store i32 %221, ptr %31, align 4
  %.sroa.0416.0.copyload = load i32, ptr %.ptr.8, align 16, !tbaa !5
  %222 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0416.0.copyload)
  %223 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %31, i32 %222)
  store i32 %223, ptr %.ptr693.8, align 16, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  %224 = load i32, ptr %.ptr697.2, align 4, !tbaa !5
  store i32 %224, ptr %.ptr701.2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  %225 = getelementptr inbounds i8, ptr %0, i64 20
  %.sroa.0413.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %226 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0413.0.copyload)
  %227 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %226)
  store i32 %227, ptr %33, align 4
  %.sroa.0411.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %228 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0411.0.copyload)
  %229 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %33, i32 %228)
  store i32 %229, ptr %32, align 4
  %.sroa.0409.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %230 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0409.0.copyload)
  %231 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %32, i32 %230)
  store i32 %231, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  %.sroa.0406.0.copyload = load i32, ptr %.ptr701.2, align 8, !tbaa !5
  %232 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0406.0.copyload)
  %233 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %232)
  store i32 %233, ptr %34, align 4
  %.sroa.0405.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %234 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %34, i32 %.sroa.0405.0.copyload)
  store i32 %234, ptr %.ptr705.2, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  %235 = call i32 @_ZN5GMath4ZeroEv()
  %236 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.2, i32 %235)
  br i1 %236, label %.critedge, label %237

237:                                              ; preds = %210
  %238 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %153, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %238, ptr %.ptr701.3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  %.sroa.0400.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %239 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0400.0.copyload)
  %240 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %239)
  store i32 %240, ptr %36, align 4
  %.sroa.0398.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %241 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0398.0.copyload)
  %242 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %36, i32 %241)
  store i32 %242, ptr %35, align 4
  %.sroa.0396.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %243 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0396.0.copyload)
  %244 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %35, i32 %243)
  store i32 %244, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  %.sroa.0393.0.copyload = load i32, ptr %.ptr701.3, align 4, !tbaa !5
  %245 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0393.0.copyload)
  %246 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %245)
  store i32 %246, ptr %37, align 4
  %.sroa.0392.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %247 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %37, i32 %.sroa.0392.0.copyload)
  store i32 %247, ptr %.ptr705.3, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  %248 = call i32 @_ZN5GMath4ZeroEv()
  %249 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.3, i32 %248)
  br i1 %249, label %.critedge, label %250

250:                                              ; preds = %237
  %251 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %154, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %251, ptr %.ptr701.4, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #6
  %.sroa.0387.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %252 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0387.0.copyload)
  %253 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %252)
  store i32 %253, ptr %39, align 4
  %.sroa.0385.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %254 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0385.0.copyload)
  %255 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %39, i32 %254)
  store i32 %255, ptr %38, align 4
  %.sroa.0383.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %256 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0383.0.copyload)
  %257 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %38, i32 %256)
  store i32 %257, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #6
  %.sroa.0380.0.copyload = load i32, ptr %.ptr701.4, align 16, !tbaa !5
  %258 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0380.0.copyload)
  %259 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %258)
  store i32 %259, ptr %40, align 4
  %.sroa.0379.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %260 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %40, i32 %.sroa.0379.0.copyload)
  store i32 %260, ptr %.ptr705.4, align 16, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  %261 = call i32 @_ZN5GMath4ZeroEv()
  %262 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.4, i32 %261)
  br i1 %262, label %.critedge, label %263

263:                                              ; preds = %250
  %264 = call i32 @_ZN8GVector310DotProductERKS_S1_(ptr noundef nonnull align 4 dereferenceable(12) %155, ptr noundef nonnull align 4 dereferenceable(12) %13)
  store i32 %264, ptr %.ptr701.5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #6
  %.sroa.0374.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %265 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0374.0.copyload)
  %266 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %265)
  store i32 %266, ptr %42, align 4
  %.sroa.0372.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %267 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0372.0.copyload)
  %268 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %42, i32 %267)
  store i32 %268, ptr %41, align 4
  %.sroa.0370.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %269 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0370.0.copyload)
  %270 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %41, i32 %269)
  store i32 %270, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  %.sroa.0367.0.copyload = load i32, ptr %.ptr701.5, align 4, !tbaa !5
  %271 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %.sroa.0367.0.copyload)
  %272 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %19, i32 %271)
  store i32 %272, ptr %43, align 4
  %.sroa.0366.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %273 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %43, i32 %.sroa.0366.0.copyload)
  store i32 %273, ptr %.ptr705.5, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  %274 = call i32 @_ZN5GMath4ZeroEv()
  %275 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr705.5, i32 %274)
  br i1 %275, label %.critedge, label %276

276:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #6
  %.sroa.0355.0.copyload = load i32, ptr %.ptr.3, align 4, !tbaa !5
  %277 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0355.0.copyload)
  store i32 %277, ptr %44, align 4
  %.sroa.0353.0.copyload = load i32, ptr %.ptr.6, align 8, !tbaa !5
  %278 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0353.0.copyload)
  %279 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %44, i32 %278)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #6
  %.sroa.0350.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %280 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0350.0.copyload)
  %281 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %280)
  store i32 %281, ptr %47, align 4
  %.sroa.0348.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %282 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0348.0.copyload)
  %283 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %47, i32 %282)
  store i32 %283, ptr %46, align 4
  %.sroa.0346.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %284 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0346.0.copyload)
  %285 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %46, i32 %284)
  store i32 %285, ptr %45, align 4
  %.sroa.0344.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %286 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0344.0.copyload)
  %287 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %45, i32 %286)
  store i32 %287, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #6
  %288 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %279)
  store i32 %288, ptr %48, align 4
  %.sroa.0342.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %289 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %48, i32 %.sroa.0342.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #6
  br i1 %289, label %.critedge, label %290

290:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %49) #6
  %.sroa.0340.0.copyload = load i32, ptr %.ptr.4, align 16, !tbaa !5
  %291 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0340.0.copyload)
  store i32 %291, ptr %49, align 4
  %.sroa.0338.0.copyload = load i32, ptr %.ptr.7, align 4, !tbaa !5
  %292 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0338.0.copyload)
  %293 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %49, i32 %292)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %52) #6
  %.sroa.0335.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %294 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0335.0.copyload)
  %295 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %294)
  store i32 %295, ptr %52, align 4
  %.sroa.0333.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %296 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0333.0.copyload)
  %297 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %52, i32 %296)
  store i32 %297, ptr %51, align 4
  %.sroa.0331.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %298 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0331.0.copyload)
  %299 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %51, i32 %298)
  store i32 %299, ptr %50, align 4
  %.sroa.0329.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %300 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0329.0.copyload)
  %301 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %50, i32 %300)
  store i32 %301, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #6
  %302 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %293)
  store i32 %302, ptr %53, align 4
  %.sroa.0327.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %303 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %53, i32 %.sroa.0327.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  br i1 %303, label %.critedge, label %304

304:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %54) #6
  %.sroa.0325.0.copyload = load i32, ptr %.ptr.5, align 4, !tbaa !5
  %305 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0325.0.copyload)
  store i32 %305, ptr %54, align 4
  %.sroa.0323.0.copyload = load i32, ptr %.ptr.8, align 16, !tbaa !5
  %306 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0323.0.copyload)
  %307 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %54, i32 %306)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #6
  %.sroa.0320.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %308 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0320.0.copyload)
  %309 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %308)
  store i32 %309, ptr %57, align 4
  %.sroa.0318.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %310 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0318.0.copyload)
  %311 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %57, i32 %310)
  store i32 %311, ptr %56, align 4
  %.sroa.0316.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %312 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0316.0.copyload)
  %313 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %56, i32 %312)
  store i32 %313, ptr %55, align 4
  %.sroa.0314.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %314 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0314.0.copyload)
  %315 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %55, i32 %314)
  store i32 %315, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %58) #6
  %316 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %307)
  store i32 %316, ptr %58, align 4
  %.sroa.0312.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %317 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %58, i32 %.sroa.0312.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %58) #6
  br i1 %317, label %.critedge, label %318

318:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %59) #6
  %.sroa.0310.0.copyload = load i32, ptr %.ptr.6, align 8, !tbaa !5
  %319 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0310.0.copyload)
  store i32 %319, ptr %59, align 4
  %.sroa.0308.0.copyload = load i32, ptr %7, align 16, !tbaa !5
  %320 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0308.0.copyload)
  %321 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %59, i32 %320)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #6
  %.sroa.0305.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %322 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0305.0.copyload)
  %323 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %322)
  store i32 %323, ptr %62, align 4
  %.sroa.0303.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %324 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0303.0.copyload)
  %325 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %62, i32 %324)
  store i32 %325, ptr %61, align 4
  %.sroa.0301.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %326 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0301.0.copyload)
  %327 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %61, i32 %326)
  store i32 %327, ptr %60, align 4
  %.sroa.0299.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %328 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0299.0.copyload)
  %329 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %60, i32 %328)
  store i32 %329, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %63) #6
  %330 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %321)
  store i32 %330, ptr %63, align 4
  %.sroa.0297.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %331 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %63, i32 %.sroa.0297.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %63) #6
  br i1 %331, label %.critedge, label %332

332:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %64) #6
  %.sroa.0295.0.copyload = load i32, ptr %.ptr.7, align 4, !tbaa !5
  %333 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0295.0.copyload)
  store i32 %333, ptr %64, align 4
  %.sroa.0293.0.copyload = load i32, ptr %.ptr.1, align 4, !tbaa !5
  %334 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0293.0.copyload)
  %335 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %64, i32 %334)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %64) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %67) #6
  %.sroa.0290.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %336 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0290.0.copyload)
  %337 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %336)
  store i32 %337, ptr %67, align 4
  %.sroa.0288.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %338 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0288.0.copyload)
  %339 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %67, i32 %338)
  store i32 %339, ptr %66, align 4
  %.sroa.0286.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %340 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0286.0.copyload)
  %341 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %66, i32 %340)
  store i32 %341, ptr %65, align 4
  %.sroa.0284.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %342 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0284.0.copyload)
  %343 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %65, i32 %342)
  store i32 %343, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %68) #6
  %344 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %335)
  store i32 %344, ptr %68, align 4
  %.sroa.0282.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %345 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %68, i32 %.sroa.0282.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %68) #6
  br i1 %345, label %.critedge, label %346

346:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #6
  %.sroa.0280.0.copyload = load i32, ptr %.ptr.8, align 16, !tbaa !5
  %347 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0280.0.copyload)
  store i32 %347, ptr %69, align 4
  %.sroa.0278.0.copyload = load i32, ptr %.ptr.2, align 8, !tbaa !5
  %348 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.2, i32 %.sroa.0278.0.copyload)
  %349 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %69, i32 %348)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %71) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %72) #6
  %.sroa.0275.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %350 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0275.0.copyload)
  %351 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %350)
  store i32 %351, ptr %72, align 4
  %.sroa.0273.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %352 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %225, i32 %.sroa.0273.0.copyload)
  %353 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %72, i32 %352)
  store i32 %353, ptr %71, align 4
  %.sroa.0271.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %354 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0271.0.copyload)
  %355 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %71, i32 %354)
  store i32 %355, ptr %70, align 4
  %.sroa.0269.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %356 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0269.0.copyload)
  %357 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %70, i32 %356)
  store i32 %357, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %73) #6
  %358 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %349)
  store i32 %358, ptr %73, align 4
  %.sroa.0267.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %359 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %73, i32 %.sroa.0267.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #6
  br i1 %359, label %.critedge, label %360

360:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %74) #6
  %.sroa.0265.0.copyload = load i32, ptr %7, align 16, !tbaa !5
  %361 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0265.0.copyload)
  store i32 %361, ptr %74, align 4
  %.sroa.0263.0.copyload = load i32, ptr %.ptr.3, align 4, !tbaa !5
  %362 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0263.0.copyload)
  %363 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %74, i32 %362)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %76) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #6
  %.sroa.0260.0.copyload = load i32, ptr %.ptr693.3, align 4, !tbaa !5
  %364 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0260.0.copyload)
  %365 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %364)
  store i32 %365, ptr %77, align 4
  %.sroa.0258.0.copyload = load i32, ptr %8, align 16, !tbaa !5
  %366 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0258.0.copyload)
  %367 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %77, i32 %366)
  store i32 %367, ptr %76, align 4
  %.sroa.0256.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %368 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0256.0.copyload)
  %369 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %76, i32 %368)
  store i32 %369, ptr %75, align 4
  %.sroa.0254.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %370 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0254.0.copyload)
  %371 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %75, i32 %370)
  store i32 %371, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %78) #6
  %372 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %363)
  store i32 %372, ptr %78, align 4
  %.sroa.0252.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %373 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %78, i32 %.sroa.0252.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %78) #6
  br i1 %373, label %.critedge, label %374

374:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %79) #6
  %.sroa.0250.0.copyload = load i32, ptr %.ptr.1, align 4, !tbaa !5
  %375 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0250.0.copyload)
  store i32 %375, ptr %79, align 4
  %.sroa.0248.0.copyload = load i32, ptr %.ptr.4, align 16, !tbaa !5
  %376 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0248.0.copyload)
  %377 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %79, i32 %376)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %79) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %80) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %81) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %82) #6
  %.sroa.0245.0.copyload = load i32, ptr %.ptr693.4, align 16, !tbaa !5
  %378 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0245.0.copyload)
  %379 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %378)
  store i32 %379, ptr %82, align 4
  %.sroa.0243.0.copyload = load i32, ptr %.ptr693.1, align 4, !tbaa !5
  %380 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0243.0.copyload)
  %381 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %82, i32 %380)
  store i32 %381, ptr %81, align 4
  %.sroa.0241.0.copyload = load i32, ptr %.ptr693.8, align 16, !tbaa !5
  %382 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0241.0.copyload)
  %383 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %81, i32 %382)
  store i32 %383, ptr %80, align 4
  %.sroa.0239.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %384 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %175, i32 %.sroa.0239.0.copyload)
  %385 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %80, i32 %384)
  store i32 %385, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %80) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %83) #6
  %386 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %377)
  store i32 %386, ptr %83, align 4
  %.sroa.0237.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %387 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %83, i32 %.sroa.0237.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %83) #6
  br i1 %387, label %.critedge, label %388

388:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #6
  %.sroa.0235.0.copyload = load i32, ptr %.ptr.2, align 8, !tbaa !5
  %389 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %.ptr697.1, i32 %.sroa.0235.0.copyload)
  store i32 %389, ptr %84, align 4
  %.sroa.0233.0.copyload = load i32, ptr %.ptr.5, align 4, !tbaa !5
  %390 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %9, i32 %.sroa.0233.0.copyload)
  %391 = call i32 @_ZNK6GFloatmiES_(ptr noundef nonnull align 4 dereferenceable(4) %84, i32 %390)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %85) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %86) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %87) #6
  %.sroa.0230.0.copyload = load i32, ptr %.ptr693.5, align 4, !tbaa !5
  %392 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %148, i32 %.sroa.0230.0.copyload)
  %393 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %12, i32 %392)
  store i32 %393, ptr %87, align 4
  %.sroa.0228.0.copyload = load i32, ptr %.ptr693.2, align 8, !tbaa !5
  %394 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %198, i32 %.sroa.0228.0.copyload)
  %395 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %87, i32 %394)
  store i32 %395, ptr %86, align 4
  %.sroa.0226.0.copyload = load i32, ptr %.ptr693.7, align 4, !tbaa !5
  %396 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %149, i32 %.sroa.0226.0.copyload)
  %397 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %86, i32 %396)
  store i32 %397, ptr %85, align 4
  %.sroa.0224.0.copyload = load i32, ptr %.ptr693.6, align 8, !tbaa !5
  %398 = call i32 @_ZNK6GFloatmlES_(ptr noundef nonnull align 4 dereferenceable(4) %172, i32 %.sroa.0224.0.copyload)
  %399 = call i32 @_ZNK6GFloatplES_(ptr noundef nonnull align 4 dereferenceable(4) %85, i32 %398)
  store i32 %399, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %86) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %85) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %88) #6
  %400 = call i32 @_ZN5GMath3AbsE6GFloat(i32 %391)
  store i32 %400, ptr %88, align 4
  %.sroa.0222.0.copyload = load i32, ptr %19, align 4, !tbaa !5
  %401 = call noundef zeroext i1 @_ZNK6GFloatgtES_(ptr noundef nonnull align 4 dereferenceable(4) %88, i32 %.sroa.0222.0.copyload)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %88) #6
  br i1 %401, label %.critedge, label %402

402:                                              ; preds = %388
  %403 = call i32 @_ZN5GMath7Makef32Eijj(i32 noundef 1000000, i32 noundef 0, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %404 = load i32, ptr %11, align 16, !tbaa !5
  store i32 %404, ptr %89, align 4, !tbaa !5
  %405 = call i32 @_ZN5GMath4ZeroEv()
  %406 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %405)
  br i1 %406, label %407, label %409

407:                                              ; preds = %402
  %408 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %403)
  %.sroa.0221.0.copyload = load i32, ptr %89, align 4
  %spec.select707 = select i1 %408, i32 %.sroa.0221.0.copyload, i32 %403
  br label %409

409:                                              ; preds = %407, %402
  %.sroa.0221.1 = phi i32 [ %403, %402 ], [ %spec.select707, %407 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %410 = load i32, ptr %.ptr705.1, align 4, !tbaa !5
  store i32 %410, ptr %89, align 4, !tbaa !5
  %411 = call i32 @_ZN5GMath4ZeroEv()
  %412 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %411)
  br i1 %412, label %413, label %415

413:                                              ; preds = %409
  %414 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %.sroa.0221.1)
  %.sroa.0221.0.copyload.1 = load i32, ptr %89, align 4
  %spec.select.1 = zext i1 %414 to i32
  %spec.select707.1 = select i1 %414, i32 %.sroa.0221.0.copyload.1, i32 %.sroa.0221.1
  br label %415

415:                                              ; preds = %413, %409
  %.1688.1 = phi i32 [ 0, %409 ], [ %spec.select.1, %413 ]
  %.sroa.0221.1.1 = phi i32 [ %.sroa.0221.1, %409 ], [ %spec.select707.1, %413 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %416 = load i32, ptr %.ptr705.2, align 8, !tbaa !5
  store i32 %416, ptr %89, align 4, !tbaa !5
  %417 = call i32 @_ZN5GMath4ZeroEv()
  %418 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %417)
  br i1 %418, label %419, label %421

419:                                              ; preds = %415
  %420 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %.sroa.0221.1.1)
  %.sroa.0221.0.copyload.2 = load i32, ptr %89, align 4
  %spec.select.2 = select i1 %420, i32 2, i32 %.1688.1
  %spec.select707.2 = select i1 %420, i32 %.sroa.0221.0.copyload.2, i32 %.sroa.0221.1.1
  br label %421

421:                                              ; preds = %419, %415
  %.1688.2 = phi i32 [ %.1688.1, %415 ], [ %spec.select.2, %419 ]
  %.sroa.0221.1.2 = phi i32 [ %.sroa.0221.1.1, %415 ], [ %spec.select707.2, %419 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %422 = load i32, ptr %.ptr705.3, align 4, !tbaa !5
  store i32 %422, ptr %89, align 4, !tbaa !5
  %423 = call i32 @_ZN5GMath4ZeroEv()
  %424 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %423)
  br i1 %424, label %425, label %427

425:                                              ; preds = %421
  %426 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %.sroa.0221.1.2)
  %.sroa.0221.0.copyload.3 = load i32, ptr %89, align 4
  %spec.select.3 = select i1 %426, i32 3, i32 %.1688.2
  %spec.select707.3 = select i1 %426, i32 %.sroa.0221.0.copyload.3, i32 %.sroa.0221.1.2
  br label %427

427:                                              ; preds = %425, %421
  %.1688.3 = phi i32 [ %.1688.2, %421 ], [ %spec.select.3, %425 ]
  %.sroa.0221.1.3 = phi i32 [ %.sroa.0221.1.2, %421 ], [ %spec.select707.3, %425 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %428 = load i32, ptr %.ptr705.4, align 16, !tbaa !5
  store i32 %428, ptr %89, align 4, !tbaa !5
  %429 = call i32 @_ZN5GMath4ZeroEv()
  %430 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %429)
  br i1 %430, label %431, label %433

431:                                              ; preds = %427
  %432 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %.sroa.0221.1.3)
  %.sroa.0221.0.copyload.4 = load i32, ptr %89, align 4
  %spec.select.4 = select i1 %432, i32 4, i32 %.1688.3
  %spec.select707.4 = select i1 %432, i32 %.sroa.0221.0.copyload.4, i32 %.sroa.0221.1.3
  br label %433

433:                                              ; preds = %431, %427
  %.1688.4 = phi i32 [ %.1688.3, %427 ], [ %spec.select.4, %431 ]
  %.sroa.0221.1.4 = phi i32 [ %.sroa.0221.1.3, %427 ], [ %spec.select707.4, %431 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %89) #6
  %434 = load i32, ptr %.ptr705.5, align 4, !tbaa !5
  store i32 %434, ptr %89, align 4, !tbaa !5
  %435 = call i32 @_ZN5GMath4ZeroEv()
  %436 = call noundef zeroext i1 @_ZNK6GFloatgeES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %435)
  br i1 %436, label %437, label %select.unfold

437:                                              ; preds = %433
  %438 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %89, i32 %.sroa.0221.1.4)
  %spec.select = select i1 %438, i32 5, i32 %.1688.4
  br label %select.unfold

select.unfold:                                    ; preds = %437, %433
  %.1688.5 = phi i32 [ %.1688.4, %433 ], [ %spec.select, %437 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %89) #6
  %439 = zext nneg i32 %.1688.5 to i64
  %440 = getelementptr inbounds [6 x %class.GFloat], ptr %10, i64 0, i64 %439
  %441 = call i32 @_ZN5GMath4ZeroEv()
  %442 = call noundef zeroext i1 @_ZNK6GFloatltES_(ptr noundef nonnull align 4 dereferenceable(4) %440, i32 %441)
  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %90) #6
  call void @_ZN13GTransform_QTC2Ev(ptr noundef nonnull align 4 dereferenceable(28) %90)
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %91) #6
  call void @_ZN8GMatrix3C2Ev(ptr noundef nonnull align 4 dereferenceable(36) %91)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %92) #6
  call void @_ZN8GVector3C2Ev(ptr noundef nonnull align 4 dereferenceable(12) %92)
  switch i32 %.1688.5, label %default.unreachable [
    i32 0, label %443
    i32 1, label %474
    i32 2, label %508
    i32 3, label %542
    i32 4, label %572
    i32 5, label %607
  ]

443:                                              ; preds = %select.unfold
  br i1 %442, label %444, label %451

444:                                              ; preds = %443
  %445 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %150)
  %446 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %1)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %93) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %94) #6
  %.sroa.0206.0.copyload = load i32, ptr %148, align 4, !tbaa !5
  %447 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0206.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract202 = extractvalue { i64, i32 } %447, 0
  %.fca.1.extract203 = extractvalue { i64, i32 } %447, 1
  store i64 %.fca.0.extract202, ptr %94, align 8
  %.sroa.2205.0..sroa_idx = getelementptr inbounds i8, ptr %94, i64 8
  store i32 %.fca.1.extract203, ptr %.sroa.2205.0..sroa_idx, align 8
  %448 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %94)
  %.fca.0.extract198 = extractvalue { i64, i32 } %448, 0
  %.fca.1.extract199 = extractvalue { i64, i32 } %448, 1
  store i64 %.fca.0.extract198, ptr %93, align 8
  %.sroa.2201.0..sroa_idx = getelementptr inbounds i8, ptr %93, i64 8
  store i32 %.fca.1.extract199, ptr %.sroa.2201.0..sroa_idx, align 8
  %449 = getelementptr inbounds i8, ptr %90, i64 16
  %450 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %449, ptr noundef nonnull align 4 dereferenceable(12) %93)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %94) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %93) #6
  br label %471

451:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %95) #6
  %452 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract194 = extractvalue { i64, i32 } %452, 0
  %.fca.1.extract195 = extractvalue { i64, i32 } %452, 1
  store i64 %.fca.0.extract194, ptr %95, align 8
  %.sroa.2197.0..sroa_idx = getelementptr inbounds i8, ptr %95, i64 8
  store i32 %.fca.1.extract195, ptr %.sroa.2197.0..sroa_idx, align 8
  %453 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %95)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %95) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %96) #6
  %454 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract190 = extractvalue { i64, i32 } %454, 0
  %.fca.1.extract191 = extractvalue { i64, i32 } %454, 1
  store i64 %.fca.0.extract190, ptr %96, align 8
  %.sroa.2193.0..sroa_idx = getelementptr inbounds i8, ptr %96, i64 8
  store i32 %.fca.1.extract191, ptr %.sroa.2193.0..sroa_idx, align 8
  %455 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %456 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %455, ptr noundef nonnull align 4 dereferenceable(12) %96)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %96) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %97) #6
  %457 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %151)
  %.fca.0.extract186 = extractvalue { i64, i32 } %457, 0
  %.fca.1.extract187 = extractvalue { i64, i32 } %457, 1
  store i64 %.fca.0.extract186, ptr %97, align 8
  %.sroa.2189.0..sroa_idx = getelementptr inbounds i8, ptr %97, i64 8
  store i32 %.fca.1.extract187, ptr %.sroa.2189.0..sroa_idx, align 8
  %458 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %459 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %458, ptr noundef nonnull align 4 dereferenceable(12) %97)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %97) #6
  %460 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %461 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %460, ptr noundef nonnull align 4 dereferenceable(12) %152)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %98) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %99) #6
  %.sroa.0185.0.copyload = load i32, ptr %148, align 4, !tbaa !5
  %462 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0185.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract181 = extractvalue { i64, i32 } %462, 0
  %.fca.1.extract182 = extractvalue { i64, i32 } %462, 1
  store i64 %.fca.0.extract181, ptr %99, align 8
  %.sroa.2184.0..sroa_idx = getelementptr inbounds i8, ptr %99, i64 8
  store i32 %.fca.1.extract182, ptr %.sroa.2184.0..sroa_idx, align 8
  %463 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %99)
  %.fca.0.extract177 = extractvalue { i64, i32 } %463, 0
  %.fca.1.extract178 = extractvalue { i64, i32 } %463, 1
  store i64 %.fca.0.extract177, ptr %98, align 8
  %.sroa.2180.0..sroa_idx = getelementptr inbounds i8, ptr %98, i64 8
  store i32 %.fca.1.extract178, ptr %.sroa.2180.0..sroa_idx, align 8
  %464 = getelementptr inbounds i8, ptr %90, i64 16
  %465 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %464, ptr noundef nonnull align 4 dereferenceable(12) %98)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %99) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %98) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #6
  %466 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %467 = extractvalue { i64, i64 } %466, 0
  store i64 %467, ptr %100, align 8
  %468 = getelementptr inbounds i8, ptr %100, i64 8
  %469 = extractvalue { i64, i64 } %466, 1
  store i64 %469, ptr %468, align 8
  %470 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %100)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #6
  br label %471

471:                                              ; preds = %451, %444
  store i8 0, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %101) #6
  %472 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %92)
  %.fca.0.extract173 = extractvalue { i64, i32 } %472, 0
  %.fca.1.extract174 = extractvalue { i64, i32 } %472, 1
  store i64 %.fca.0.extract173, ptr %101, align 8
  %.sroa.2176.0..sroa_idx = getelementptr inbounds i8, ptr %101, i64 8
  store i32 %.fca.1.extract174, ptr %.sroa.2176.0..sroa_idx, align 8
  %.sroa.0172.0.copyload = load i32, ptr %198, align 8, !tbaa !5
  %.sroa.0171.0.copyload = load i32, ptr %225, align 4, !tbaa !5
  %.sroa.0170.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %473 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %101, i32 %.sroa.0172.0.copyload, i32 %.sroa.0171.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %149, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %3, i32 %.sroa.0170.0.copyload)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %101) #6
  br label %640

474:                                              ; preds = %select.unfold
  %475 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %476 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %475, ptr noundef nonnull align 4 dereferenceable(12) %150)
  br i1 %442, label %477, label %487

477:                                              ; preds = %474
  %478 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %151)
  %479 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %480 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %479, ptr noundef nonnull align 4 dereferenceable(12) %151)
  %481 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %482 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %481, ptr noundef nonnull align 4 dereferenceable(12) %152)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %102) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %103) #6
  %.sroa.0169.0.copyload = load i32, ptr %198, align 8, !tbaa !5
  %483 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0169.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %151)
  %.fca.0.extract165 = extractvalue { i64, i32 } %483, 0
  %.fca.1.extract166 = extractvalue { i64, i32 } %483, 1
  store i64 %.fca.0.extract165, ptr %103, align 8
  %.sroa.2168.0..sroa_idx = getelementptr inbounds i8, ptr %103, i64 8
  store i32 %.fca.1.extract166, ptr %.sroa.2168.0..sroa_idx, align 8
  %484 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %103)
  %.fca.0.extract161 = extractvalue { i64, i32 } %484, 0
  %.fca.1.extract162 = extractvalue { i64, i32 } %484, 1
  store i64 %.fca.0.extract161, ptr %102, align 8
  %.sroa.2164.0..sroa_idx = getelementptr inbounds i8, ptr %102, i64 8
  store i32 %.fca.1.extract162, ptr %.sroa.2164.0..sroa_idx, align 8
  %485 = getelementptr inbounds i8, ptr %90, i64 16
  %486 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %485, ptr noundef nonnull align 4 dereferenceable(12) %102)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %103) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %102) #6
  br label %500

487:                                              ; preds = %474
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %104) #6
  %488 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %151)
  %.fca.0.extract157 = extractvalue { i64, i32 } %488, 0
  %.fca.1.extract158 = extractvalue { i64, i32 } %488, 1
  store i64 %.fca.0.extract157, ptr %104, align 8
  %.sroa.2160.0..sroa_idx = getelementptr inbounds i8, ptr %104, i64 8
  store i32 %.fca.1.extract158, ptr %.sroa.2160.0..sroa_idx, align 8
  %489 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %104)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %104) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %105) #6
  %490 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %151)
  %.fca.0.extract153 = extractvalue { i64, i32 } %490, 0
  %.fca.1.extract154 = extractvalue { i64, i32 } %490, 1
  store i64 %.fca.0.extract153, ptr %105, align 8
  %.sroa.2156.0..sroa_idx = getelementptr inbounds i8, ptr %105, i64 8
  store i32 %.fca.1.extract154, ptr %.sroa.2156.0..sroa_idx, align 8
  %491 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %492 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %491, ptr noundef nonnull align 4 dereferenceable(12) %105)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %105) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %106) #6
  %493 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %152)
  %.fca.0.extract149 = extractvalue { i64, i32 } %493, 0
  %.fca.1.extract150 = extractvalue { i64, i32 } %493, 1
  store i64 %.fca.0.extract149, ptr %106, align 8
  %.sroa.2152.0..sroa_idx = getelementptr inbounds i8, ptr %106, i64 8
  store i32 %.fca.1.extract150, ptr %.sroa.2152.0..sroa_idx, align 8
  %494 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %495 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %494, ptr noundef nonnull align 4 dereferenceable(12) %106)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %106) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %107) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %108) #6
  %.sroa.0148.0.copyload = load i32, ptr %198, align 8, !tbaa !5
  %496 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0148.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %151)
  %.fca.0.extract144 = extractvalue { i64, i32 } %496, 0
  %.fca.1.extract145 = extractvalue { i64, i32 } %496, 1
  store i64 %.fca.0.extract144, ptr %108, align 8
  %.sroa.2147.0..sroa_idx = getelementptr inbounds i8, ptr %108, i64 8
  store i32 %.fca.1.extract145, ptr %.sroa.2147.0..sroa_idx, align 8
  %497 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %108)
  %.fca.0.extract140 = extractvalue { i64, i32 } %497, 0
  %.fca.1.extract141 = extractvalue { i64, i32 } %497, 1
  store i64 %.fca.0.extract140, ptr %107, align 8
  %.sroa.2143.0..sroa_idx = getelementptr inbounds i8, ptr %107, i64 8
  store i32 %.fca.1.extract141, ptr %.sroa.2143.0..sroa_idx, align 8
  %498 = getelementptr inbounds i8, ptr %90, i64 16
  %499 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %498, ptr noundef nonnull align 4 dereferenceable(12) %107)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %108) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %107) #6
  br label %500

500:                                              ; preds = %487, %477
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %109) #6
  %501 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %502 = extractvalue { i64, i64 } %501, 0
  store i64 %502, ptr %109, align 8
  %503 = getelementptr inbounds i8, ptr %109, i64 8
  %504 = extractvalue { i64, i64 } %501, 1
  store i64 %504, ptr %503, align 8
  %505 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %109)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %109) #6
  store i8 0, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %110) #6
  %506 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %92)
  %.fca.0.extract136 = extractvalue { i64, i32 } %506, 0
  %.fca.1.extract137 = extractvalue { i64, i32 } %506, 1
  store i64 %.fca.0.extract136, ptr %110, align 8
  %.sroa.2139.0..sroa_idx = getelementptr inbounds i8, ptr %110, i64 8
  store i32 %.fca.1.extract137, ptr %.sroa.2139.0..sroa_idx, align 8
  %.sroa.0135.0.copyload = load i32, ptr %225, align 4, !tbaa !5
  %.sroa.0134.0.copyload = load i32, ptr %148, align 4, !tbaa !5
  %.sroa.0133.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %507 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %110, i32 %.sroa.0135.0.copyload, i32 %.sroa.0134.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %149, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %3, i32 %.sroa.0133.0.copyload)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %110) #6
  br label %640

508:                                              ; preds = %select.unfold
  %509 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %510 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %509, ptr noundef nonnull align 4 dereferenceable(12) %151)
  br i1 %442, label %511, label %521

511:                                              ; preds = %508
  %512 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %152)
  %513 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %514 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %513, ptr noundef nonnull align 4 dereferenceable(12) %152)
  %515 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %516 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %515, ptr noundef nonnull align 4 dereferenceable(12) %150)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %111) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %112) #6
  %.sroa.0132.0.copyload = load i32, ptr %225, align 4, !tbaa !5
  %517 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0132.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %152)
  %.fca.0.extract128 = extractvalue { i64, i32 } %517, 0
  %.fca.1.extract129 = extractvalue { i64, i32 } %517, 1
  store i64 %.fca.0.extract128, ptr %112, align 8
  %.sroa.2131.0..sroa_idx = getelementptr inbounds i8, ptr %112, i64 8
  store i32 %.fca.1.extract129, ptr %.sroa.2131.0..sroa_idx, align 8
  %518 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %112)
  %.fca.0.extract124 = extractvalue { i64, i32 } %518, 0
  %.fca.1.extract125 = extractvalue { i64, i32 } %518, 1
  store i64 %.fca.0.extract124, ptr %111, align 8
  %.sroa.2127.0..sroa_idx = getelementptr inbounds i8, ptr %111, i64 8
  store i32 %.fca.1.extract125, ptr %.sroa.2127.0..sroa_idx, align 8
  %519 = getelementptr inbounds i8, ptr %90, i64 16
  %520 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %519, ptr noundef nonnull align 4 dereferenceable(12) %111)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %112) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %111) #6
  br label %534

521:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %113) #6
  %522 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %152)
  %.fca.0.extract120 = extractvalue { i64, i32 } %522, 0
  %.fca.1.extract121 = extractvalue { i64, i32 } %522, 1
  store i64 %.fca.0.extract120, ptr %113, align 8
  %.sroa.2123.0..sroa_idx = getelementptr inbounds i8, ptr %113, i64 8
  store i32 %.fca.1.extract121, ptr %.sroa.2123.0..sroa_idx, align 8
  %523 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %113)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %113) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %114) #6
  %524 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %152)
  %.fca.0.extract116 = extractvalue { i64, i32 } %524, 0
  %.fca.1.extract117 = extractvalue { i64, i32 } %524, 1
  store i64 %.fca.0.extract116, ptr %114, align 8
  %.sroa.2119.0..sroa_idx = getelementptr inbounds i8, ptr %114, i64 8
  store i32 %.fca.1.extract117, ptr %.sroa.2119.0..sroa_idx, align 8
  %525 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %526 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %525, ptr noundef nonnull align 4 dereferenceable(12) %114)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %114) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %115) #6
  %527 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %150)
  %.fca.0.extract112 = extractvalue { i64, i32 } %527, 0
  %.fca.1.extract113 = extractvalue { i64, i32 } %527, 1
  store i64 %.fca.0.extract112, ptr %115, align 8
  %.sroa.2115.0..sroa_idx = getelementptr inbounds i8, ptr %115, i64 8
  store i32 %.fca.1.extract113, ptr %.sroa.2115.0..sroa_idx, align 8
  %528 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %529 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %528, ptr noundef nonnull align 4 dereferenceable(12) %115)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %115) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %116) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %117) #6
  %.sroa.0111.0.copyload = load i32, ptr %225, align 4, !tbaa !5
  %530 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.0111.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %152)
  %.fca.0.extract107 = extractvalue { i64, i32 } %530, 0
  %.fca.1.extract108 = extractvalue { i64, i32 } %530, 1
  store i64 %.fca.0.extract107, ptr %117, align 8
  %.sroa.2110.0..sroa_idx = getelementptr inbounds i8, ptr %117, i64 8
  store i32 %.fca.1.extract108, ptr %.sroa.2110.0..sroa_idx, align 8
  %531 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %146, ptr noundef nonnull align 4 dereferenceable(12) %117)
  %.fca.0.extract103 = extractvalue { i64, i32 } %531, 0
  %.fca.1.extract104 = extractvalue { i64, i32 } %531, 1
  store i64 %.fca.0.extract103, ptr %116, align 8
  %.sroa.2106.0..sroa_idx = getelementptr inbounds i8, ptr %116, i64 8
  store i32 %.fca.1.extract104, ptr %.sroa.2106.0..sroa_idx, align 8
  %532 = getelementptr inbounds i8, ptr %90, i64 16
  %533 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %532, ptr noundef nonnull align 4 dereferenceable(12) %116)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %117) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %116) #6
  br label %534

534:                                              ; preds = %521, %511
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #6
  %535 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %536 = extractvalue { i64, i64 } %535, 0
  store i64 %536, ptr %118, align 8
  %537 = getelementptr inbounds i8, ptr %118, i64 8
  %538 = extractvalue { i64, i64 } %535, 1
  store i64 %538, ptr %537, align 8
  %539 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %118)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #6
  store i8 0, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %119) #6
  %540 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %92)
  %.fca.0.extract99 = extractvalue { i64, i32 } %540, 0
  %.fca.1.extract100 = extractvalue { i64, i32 } %540, 1
  store i64 %.fca.0.extract99, ptr %119, align 8
  %.sroa.2102.0..sroa_idx = getelementptr inbounds i8, ptr %119, i64 8
  store i32 %.fca.1.extract100, ptr %.sroa.2102.0..sroa_idx, align 8
  %.sroa.098.0.copyload = load i32, ptr %148, align 4, !tbaa !5
  %.sroa.097.0.copyload = load i32, ptr %198, align 8, !tbaa !5
  %.sroa.096.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %541 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %119, i32 %.sroa.098.0.copyload, i32 %.sroa.097.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %149, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %3, i32 %.sroa.096.0.copyload)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %119) #6
  br label %640

542:                                              ; preds = %select.unfold
  br i1 %442, label %543, label %562

543:                                              ; preds = %542
  %544 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %153)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %120) #6
  %545 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract92 = extractvalue { i64, i32 } %545, 0
  %.fca.1.extract93 = extractvalue { i64, i32 } %545, 1
  store i64 %.fca.0.extract92, ptr %120, align 8
  %.sroa.295.0..sroa_idx = getelementptr inbounds i8, ptr %120, i64 8
  store i32 %.fca.1.extract93, ptr %.sroa.295.0..sroa_idx, align 8
  %546 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %547 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %546, ptr noundef nonnull align 4 dereferenceable(12) %120)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %120) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %121) #6
  %548 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract88 = extractvalue { i64, i32 } %548, 0
  %.fca.1.extract89 = extractvalue { i64, i32 } %548, 1
  store i64 %.fca.0.extract88, ptr %121, align 8
  %.sroa.291.0..sroa_idx = getelementptr inbounds i8, ptr %121, i64 8
  store i32 %.fca.1.extract89, ptr %.sroa.291.0..sroa_idx, align 8
  %549 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %550 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %549, ptr noundef nonnull align 4 dereferenceable(12) %121)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %121) #6
  %551 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %552 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %551, ptr noundef nonnull align 4 dereferenceable(12) %155)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %122) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %123) #6
  %.sroa.087.0.copyload = load i32, ptr %149, align 4, !tbaa !5
  %553 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.087.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract83 = extractvalue { i64, i32 } %553, 0
  %.fca.1.extract84 = extractvalue { i64, i32 } %553, 1
  store i64 %.fca.0.extract83, ptr %123, align 8
  %.sroa.286.0..sroa_idx = getelementptr inbounds i8, ptr %123, i64 8
  store i32 %.fca.1.extract84, ptr %.sroa.286.0..sroa_idx, align 8
  %554 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %123)
  %.fca.0.extract79 = extractvalue { i64, i32 } %554, 0
  %.fca.1.extract80 = extractvalue { i64, i32 } %554, 1
  store i64 %.fca.0.extract79, ptr %122, align 8
  %.sroa.282.0..sroa_idx = getelementptr inbounds i8, ptr %122, i64 8
  store i32 %.fca.1.extract80, ptr %.sroa.282.0..sroa_idx, align 8
  %555 = getelementptr inbounds i8, ptr %90, i64 16
  %556 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %555, ptr noundef nonnull align 4 dereferenceable(12) %122)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %123) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %122) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #6
  %557 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %558 = extractvalue { i64, i64 } %557, 0
  store i64 %558, ptr %124, align 8
  %559 = getelementptr inbounds i8, ptr %124, i64 8
  %560 = extractvalue { i64, i64 } %557, 1
  store i64 %560, ptr %559, align 8
  %561 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %124)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #6
  br label %570

562:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %125) #6
  %563 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract75 = extractvalue { i64, i32 } %563, 0
  %.fca.1.extract76 = extractvalue { i64, i32 } %563, 1
  store i64 %.fca.0.extract75, ptr %125, align 8
  %.sroa.278.0..sroa_idx = getelementptr inbounds i8, ptr %125, i64 8
  store i32 %.fca.1.extract76, ptr %.sroa.278.0..sroa_idx, align 8
  %564 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %125)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %125) #6
  %565 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %3)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %126) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %127) #6
  %.sroa.074.0.copyload = load i32, ptr %149, align 4, !tbaa !5
  %566 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.074.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract70 = extractvalue { i64, i32 } %566, 0
  %.fca.1.extract71 = extractvalue { i64, i32 } %566, 1
  store i64 %.fca.0.extract70, ptr %127, align 8
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %127, i64 8
  store i32 %.fca.1.extract71, ptr %.sroa.273.0..sroa_idx, align 8
  %567 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %127)
  %.fca.0.extract66 = extractvalue { i64, i32 } %567, 0
  %.fca.1.extract67 = extractvalue { i64, i32 } %567, 1
  store i64 %.fca.0.extract66, ptr %126, align 8
  %.sroa.269.0..sroa_idx = getelementptr inbounds i8, ptr %126, i64 8
  store i32 %.fca.1.extract67, ptr %.sroa.269.0..sroa_idx, align 8
  %568 = getelementptr inbounds i8, ptr %90, i64 16
  %569 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %568, ptr noundef nonnull align 4 dereferenceable(12) %126)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %127) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %126) #6
  br label %570

570:                                              ; preds = %562, %543
  store i8 1, ptr %5, align 1, !tbaa !9
  %.sroa.065.0.copyload = load i32, ptr %172, align 8, !tbaa !5
  %.sroa.064.0.copyload = load i32, ptr %175, align 4, !tbaa !5
  %.sroa.063.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %571 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %92, i32 %.sroa.065.0.copyload, i32 %.sroa.064.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %148, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %1, i32 %.sroa.063.0.copyload)
  br label %640

572:                                              ; preds = %select.unfold
  %573 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %574 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %573, ptr noundef nonnull align 4 dereferenceable(12) %153)
  br i1 %442, label %575, label %587

575:                                              ; preds = %572
  %576 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %154)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %128) #6
  %577 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract59 = extractvalue { i64, i32 } %577, 0
  %.fca.1.extract60 = extractvalue { i64, i32 } %577, 1
  store i64 %.fca.0.extract59, ptr %128, align 8
  %.sroa.262.0..sroa_idx = getelementptr inbounds i8, ptr %128, i64 8
  store i32 %.fca.1.extract60, ptr %.sroa.262.0..sroa_idx, align 8
  %578 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %579 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %578, ptr noundef nonnull align 4 dereferenceable(12) %128)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %128) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %129) #6
  %580 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %155)
  %.fca.0.extract55 = extractvalue { i64, i32 } %580, 0
  %.fca.1.extract56 = extractvalue { i64, i32 } %580, 1
  store i64 %.fca.0.extract55, ptr %129, align 8
  %.sroa.258.0..sroa_idx = getelementptr inbounds i8, ptr %129, i64 8
  store i32 %.fca.1.extract56, ptr %.sroa.258.0..sroa_idx, align 8
  %581 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %582 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %581, ptr noundef nonnull align 4 dereferenceable(12) %129)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %129) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %130) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %131) #6
  %.sroa.054.0.copyload = load i32, ptr %172, align 8, !tbaa !5
  %583 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.054.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract50 = extractvalue { i64, i32 } %583, 0
  %.fca.1.extract51 = extractvalue { i64, i32 } %583, 1
  store i64 %.fca.0.extract50, ptr %131, align 8
  %.sroa.253.0..sroa_idx = getelementptr inbounds i8, ptr %131, i64 8
  store i32 %.fca.1.extract51, ptr %.sroa.253.0..sroa_idx, align 8
  %584 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %131)
  %.fca.0.extract46 = extractvalue { i64, i32 } %584, 0
  %.fca.1.extract47 = extractvalue { i64, i32 } %584, 1
  store i64 %.fca.0.extract46, ptr %130, align 8
  %.sroa.249.0..sroa_idx = getelementptr inbounds i8, ptr %130, i64 8
  store i32 %.fca.1.extract47, ptr %.sroa.249.0..sroa_idx, align 8
  %585 = getelementptr inbounds i8, ptr %90, i64 16
  %586 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %585, ptr noundef nonnull align 4 dereferenceable(12) %130)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %131) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %130) #6
  br label %600

587:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %132) #6
  %588 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract42 = extractvalue { i64, i32 } %588, 0
  %.fca.1.extract43 = extractvalue { i64, i32 } %588, 1
  store i64 %.fca.0.extract42, ptr %132, align 8
  %.sroa.245.0..sroa_idx = getelementptr inbounds i8, ptr %132, i64 8
  store i32 %.fca.1.extract43, ptr %.sroa.245.0..sroa_idx, align 8
  %589 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %132)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %132) #6
  %590 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %591 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %590, ptr noundef nonnull align 4 dereferenceable(12) %154)
  %592 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %593 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %592, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %594 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %595 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %594, ptr noundef nonnull align 4 dereferenceable(12) %153)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %133) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %134) #6
  %.sroa.041.0.copyload = load i32, ptr %172, align 8, !tbaa !5
  %596 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.041.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %154)
  %.fca.0.extract37 = extractvalue { i64, i32 } %596, 0
  %.fca.1.extract38 = extractvalue { i64, i32 } %596, 1
  store i64 %.fca.0.extract37, ptr %134, align 8
  %.sroa.240.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 8
  store i32 %.fca.1.extract38, ptr %.sroa.240.0..sroa_idx, align 8
  %597 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %134)
  %.fca.0.extract33 = extractvalue { i64, i32 } %597, 0
  %.fca.1.extract34 = extractvalue { i64, i32 } %597, 1
  store i64 %.fca.0.extract33, ptr %133, align 8
  %.sroa.236.0..sroa_idx = getelementptr inbounds i8, ptr %133, i64 8
  store i32 %.fca.1.extract34, ptr %.sroa.236.0..sroa_idx, align 8
  %598 = getelementptr inbounds i8, ptr %90, i64 16
  %599 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %598, ptr noundef nonnull align 4 dereferenceable(12) %133)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %134) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %133) #6
  br label %600

600:                                              ; preds = %587, %575
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %135) #6
  %601 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %602 = extractvalue { i64, i64 } %601, 0
  store i64 %602, ptr %135, align 8
  %603 = getelementptr inbounds i8, ptr %135, i64 8
  %604 = extractvalue { i64, i64 } %601, 1
  store i64 %604, ptr %603, align 8
  %605 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %135)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %135) #6
  store i8 1, ptr %5, align 1, !tbaa !9
  %.sroa.032.0.copyload = load i32, ptr %175, align 4, !tbaa !5
  %.sroa.031.0.copyload = load i32, ptr %149, align 4, !tbaa !5
  %.sroa.030.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %606 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %92, i32 %.sroa.032.0.copyload, i32 %.sroa.031.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %148, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %1, i32 %.sroa.030.0.copyload)
  br label %640

607:                                              ; preds = %select.unfold
  %608 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 2)
  %609 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %608, ptr noundef nonnull align 4 dereferenceable(12) %154)
  br i1 %442, label %610, label %622

610:                                              ; preds = %607
  %611 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %155)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %136) #6
  %612 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %155)
  %.fca.0.extract26 = extractvalue { i64, i32 } %612, 0
  %.fca.1.extract27 = extractvalue { i64, i32 } %612, 1
  store i64 %.fca.0.extract26, ptr %136, align 8
  %.sroa.229.0..sroa_idx = getelementptr inbounds i8, ptr %136, i64 8
  store i32 %.fca.1.extract27, ptr %.sroa.229.0..sroa_idx, align 8
  %613 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %614 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %613, ptr noundef nonnull align 4 dereferenceable(12) %136)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %136) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %137) #6
  %615 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %153)
  %.fca.0.extract22 = extractvalue { i64, i32 } %615, 0
  %.fca.1.extract23 = extractvalue { i64, i32 } %615, 1
  store i64 %.fca.0.extract22, ptr %137, align 8
  %.sroa.225.0..sroa_idx = getelementptr inbounds i8, ptr %137, i64 8
  store i32 %.fca.1.extract23, ptr %.sroa.225.0..sroa_idx, align 8
  %616 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %617 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %616, ptr noundef nonnull align 4 dereferenceable(12) %137)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %137) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %138) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %139) #6
  %.sroa.021.0.copyload = load i32, ptr %175, align 4, !tbaa !5
  %618 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.021.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %.fca.0.extract17 = extractvalue { i64, i32 } %618, 0
  %.fca.1.extract18 = extractvalue { i64, i32 } %618, 1
  store i64 %.fca.0.extract17, ptr %139, align 8
  %.sroa.220.0..sroa_idx = getelementptr inbounds i8, ptr %139, i64 8
  store i32 %.fca.1.extract18, ptr %.sroa.220.0..sroa_idx, align 8
  %619 = call { i64, i32 } @_ZNK8GVector3plERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %139)
  %.fca.0.extract13 = extractvalue { i64, i32 } %619, 0
  %.fca.1.extract14 = extractvalue { i64, i32 } %619, 1
  store i64 %.fca.0.extract13, ptr %138, align 8
  %.sroa.216.0..sroa_idx = getelementptr inbounds i8, ptr %138, i64 8
  store i32 %.fca.1.extract14, ptr %.sroa.216.0..sroa_idx, align 8
  %620 = getelementptr inbounds i8, ptr %90, i64 16
  %621 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %620, ptr noundef nonnull align 4 dereferenceable(12) %138)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %139) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %138) #6
  br label %633

622:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %140) #6
  %623 = call { i64, i32 } @_ZNK8GVector3ngEv(ptr noundef nonnull align 4 dereferenceable(12) %155)
  %.fca.0.extract9 = extractvalue { i64, i32 } %623, 0
  %.fca.1.extract10 = extractvalue { i64, i32 } %623, 1
  store i64 %.fca.0.extract9, ptr %140, align 8
  %.sroa.212.0..sroa_idx = getelementptr inbounds i8, ptr %140, i64 8
  store i32 %.fca.1.extract10, ptr %.sroa.212.0..sroa_idx, align 8
  %624 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %92, ptr noundef nonnull align 4 dereferenceable(12) %140)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %140) #6
  %625 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 0)
  %626 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %625, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %627 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GMatrix33RowEj(ptr noundef nonnull align 4 dereferenceable(36) %91, i32 noundef 1)
  %628 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %627, ptr noundef nonnull align 4 dereferenceable(12) %153)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %141) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %142) #6
  %.sroa.08.0.copyload = load i32, ptr %175, align 4, !tbaa !5
  %629 = call { i64, i32 } @_Zml6GFloatRK8GVector3(i32 %.sroa.08.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %155)
  %.fca.0.extract4 = extractvalue { i64, i32 } %629, 0
  %.fca.1.extract5 = extractvalue { i64, i32 } %629, 1
  store i64 %.fca.0.extract4, ptr %142, align 8
  %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %142, i64 8
  store i32 %.fca.1.extract5, ptr %.sroa.27.0..sroa_idx, align 8
  %630 = call { i64, i32 } @_ZNK8GVector3miERKS_(ptr noundef nonnull align 4 dereferenceable(12) %145, ptr noundef nonnull align 4 dereferenceable(12) %142)
  %.fca.0.extract = extractvalue { i64, i32 } %630, 0
  %.fca.1.extract = extractvalue { i64, i32 } %630, 1
  store i64 %.fca.0.extract, ptr %141, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %141, i64 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %631 = getelementptr inbounds i8, ptr %90, i64 16
  %632 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8GVector3aSERKS_(ptr noundef nonnull align 4 dereferenceable(12) %631, ptr noundef nonnull align 4 dereferenceable(12) %141)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %142) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %141) #6
  br label %633

633:                                              ; preds = %622, %610
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %143) #6
  %634 = call { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36) %91)
  %635 = extractvalue { i64, i64 } %634, 0
  store i64 %635, ptr %143, align 8
  %636 = getelementptr inbounds i8, ptr %143, i64 8
  %637 = extractvalue { i64, i64 } %634, 1
  store i64 %637, ptr %636, align 8
  %638 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN11GQuaternionaSERKS_(ptr noundef nonnull align 4 dereferenceable(16) %90, ptr noundef nonnull align 4 dereferenceable(16) %143)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %143) #6
  store i8 1, ptr %5, align 1, !tbaa !9
  %.sroa.02.0.copyload = load i32, ptr %149, align 4, !tbaa !5
  %.sroa.01.0.copyload = load i32, ptr %172, align 8, !tbaa !5
  %.sroa.0.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %639 = call noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592) %4, ptr noundef nonnull align 4 dereferenceable(12) %92, i32 %.sroa.02.0.copyload, i32 %.sroa.01.0.copyload, ptr noundef nonnull align 4 dereferenceable(12) %148, ptr noundef nonnull align 4 dereferenceable(28) %90, ptr noundef nonnull align 4 dereferenceable(28) %1, i32 %.sroa.0.0.copyload)
  br label %640

default.unreachable:                              ; preds = %select.unfold
  unreachable

640:                                              ; preds = %633, %600, %570, %534, %500, %471
  %.1 = phi i32 [ %639, %633 ], [ %606, %600 ], [ %571, %570 ], [ %541, %534 ], [ %507, %500 ], [ %473, %471 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %92) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %91) #6
  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %90) #6
  br label %.critedge

.critedge:                                        ; preds = %276, %290, %304, %318, %332, %346, %360, %374, %263, %250, %237, %210, %183, %6, %388, %640
  %.2 = phi i32 [ %.1, %640 ], [ 0, %388 ], [ 0, %6 ], [ 0, %183 ], [ 0, %210 ], [ 0, %237 ], [ 0, %250 ], [ 0, %263 ], [ 0, %374 ], [ 0, %360 ], [ 0, %346 ], [ 0, %332 ], [ 0, %318 ], [ 0, %304 ], [ 0, %290 ], [ 0, %276 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %7) #6
  ret i32 %.2
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath11Inv_1000000Ev() local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local i32 @_ZN5GMath7Makef32Eijj(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

declare { i64, i64 } @_ZNK8GMatrix36ToQuatEv(ptr noundef nonnull align 4 dereferenceable(36)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16generateContactsR17GCollisionContactRK8GVector36GFloatS4_S3_RK13GTransform_QTS7_S4_(ptr noundef nonnull align 8 dereferenceable(592), ptr noundef nonnull align 4 dereferenceable(12), i32, i32, ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28), i32) local_unnamed_addr #4

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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}


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